Ok, so my 12 year old daughter wants to out do Bill Gates, Steve Jobs, and Lord knows who else...

Ok, a little history first...I'm 31. I've been around computers my whole life, (thanks to my grandpa who insisted) starting out with the commadore Vic 20, then 40, then 64. I taught myself to program in BASIC when I was 7. I've since forgotten.

I've always made sure my daughter has had access to technology. She started pointing and clicking at 2(ish). She's now 12, and her passion dwarfs my knowledge.

That is to say, I know a great deal more than the average bear about computers, but besides basic repairs (hardware replacement, virus/adware/malware fixes and software/glitches) I've not gone any further than my 7 year old BASIC lessons as far as programming goes...not for lack of wanting, but simply, life has gotten in the way (do the math on our ages real quick, you'll see why, then factor in, I was a single mom for a good portion of that time)

So...on to the title...Yes, you read it right. My 12 year old daughter wants to out do Bill Gates, Steve Jobs, and Lord knows who else.

She wants to build the next big operating system. She doesn't want it to be Windows, or Apple, or Linux. She wants it to be the best of all of them, without the worst. She wants it to be (I think) open source, intuitive, and what ever else her precious brain comes up with. When I mentioned most super computers only really being able to use Linux she was pretty agitated, and wanted to change that also.

I want to foster this passion in her in any way possible. Suggestions? Thoughts? Things you'd like to see in an operating system?

She currently does not have her own computer. We have some prefab deals, and my 12 year old rig with xp that was retired a few months ago for the prefab deals. Note, the prefab deals are only because I couldn't afford a complete overhaul at the moment, and the prefabs were better than the 12 year old rig, which was a monster in it's time. I'm most likely going to need to save up for it. I'm thinking about basing a system around the Asus fx9590. The one that if cooled properly will clock at 5 gigs, not overclocked. The ultimate goal being the fastest clocked without over clocking available to consumers, and hopefully the largest number of cores as well.

I also plan on having her do things on the old rig, because part of her annoyance was that people constantly HAVE TO upgrade or things won't run, or won't run properly. She was very agitated that xp is no longer supported, and that most os's suck for various reasons. Security, intuitiveness, stability, etc.

That being said, for what she will need to do and learn, what are suggestions on what I need to build her that will allow her to test under very heavy conditions, and where should I have her starting her education?

This is obviously not something every 12 year old has aspirations to do, so classes are out. I will teach her, and she will teach herself, so I'm looking for advice from vets, guides, books, etc.

Help!

An excited, proud, ohmygodmydaughterwantstodosomethinghugeandflipthetechworldonitsheadsmackitsassandcallithowthingsshouldbeandnowarebecauseofher!, mom

Posted Apr 25, 2015, 6:42 AM UTC

277145
denarian•

Hum.

TL;DR: Do not buy a fancy computer. Get her into some classes or something.

Please don't waste your $$$ on high CPU clock speeds. If you want to know why, please ask me.

Extra RAM is nice if you're working on bigger open source projects.

Tutors in this field tend to be really shady - I would be really careful with tutors - try to find a camp, school, or program near-ish to you and enroll her in it - the most critical things are to get her able to work on open source projects(she'll learn a ton), and to get her able to write a little code. The more time she can spend writing code, the better.

There's a website called code school - it kinda sucks, but the free lessons they have are a decent way to get working on something immediately.

After she has been working on programming for a year or so, do the following . . .

The following will be hard for you:

  • Find an open source project that has an accepting community; Apache projects tend to welcome new people, but most of those are very complex backend systems projects which she will not understand for some years.
  • get her involved with the open source project - many of the larger ones have IRC channels - look up what IRC is - she can join the chat channels for these projects and get in contact with developers working on the projects
  • Many larger projects have a way to track bugs and problems - these bugs and problems have different priority levels - there is generally a "minor" priority level - it usually refers to something relatively small or unimportant, and these are MORE FREQUENTLY (not always) easier to work on - she should try to (on her own or with your help) find some of the minor ones and fix them for the project - this will help her ease her way into working on open source
  • the projects always have instructions regarding how to set up their stuff. she will need to set it up and get their software building so she can make and test her changes
  • to help her with this, it is best if you work on it too.

After she has done a little ittle bit of work on open source and has been programming for a year with you, you should start working with her to find her own medium-sized project (most projects until now should be SMALLER THAN 1000 LINES) a medium sized project may take up to six months and accomplish something significant that she has been wanting to understand or work on.

Following the completion of the medium sized project and the in-parallel open source work, you'll want to work with her to learn Data Structures and Algorithms. I recommend Steven Skiena's algorithm design manual to start with. When her mathematical skills mature she can move on to CLRS (just google CLRS).

After she has worked through and consumed all the material in skiena's book and finished her medium sized project, she should have been programming for at least two, maybe three years. She will be 15 or so, maybe 16. I do not have a good plan for you regarding high school. Find a high school that is strong in CS - find a local community college and use the money you saved on the computer to enroll her in a few classes for after school. Try to take the classes with her - you will have an extremely hard time keeping up with her ability now, and you will have to take a more managerial role in her education.

DEFINITELY help her to apply for internships at major tech companies during the summer!! put her open source project experience and her projects on the resume - FOCUS on the outcomes she achieved! like, "reduced scheduling time of mesos job scheduler by 5% during periods of high load" - I'm talking companies like monetate, google, quora, stackexchange, facebook, whatever - keep trying for these internships and do not get discouraged! Eventually, she should be able to get an internship (still 15-16 years old) do this every summer - put the internship experience on her university application and talk about it with university recruiters (hi I'm jenny I'm 17 and I worked at google last summer can I go to your school please? yes.) until she is a junior at university - then try to get a spring&summer internship - the longer term internship means she can request larger projects or more project ownership -

finally she'll graduate, and she can move back in with you - you and her can live off of your job and her savings from the internships until she finishes writing her new operating system.

I encourage you to try and understand the massiveness of the undertaking she is suggesting, and asking yourself whether you are prepared to patiently and encouragingly wait ten years or more for her to realize even the smallest, most basic part of her dream.

If you can do this, then you must do it, and fear nothing except what may slow her down.

152
skenyon02OP•

This sounds like a good plan. She is impatient and will probably want to take on the world all at once, but this gives me someplace to start at least. I appreciate the guidance.

16
spei180•

All this talk about "taking on the world" and what not is a bit much. Take the tech advice you can, but realize she should literally be having this conversation, not you. As a mom the best thing you can do for her is to teach her patience and persistence.

37
Bochinsky•

Yeah, I was thinking the same thing. The whole thing has a little bit of a "Precious Child"/ helicopter-parent vibe.

I doubt that Bill Gates' mom set up a bunch of classes for him and found a way for him to learn computers. If she's as into the idea as her mom says, she would already be spending 8 hours a day on any free computer she could find and reading every book available on programming.

33
skenyon02OP•

Well, considering what I'm concerned about her getting into on the internet, and reddit specifically, I figured I'd start out this conversation here, she can read comments, comment back on my name as necessary and what not. She keeps coming to me asking me to teach her to do things, and I don't know anything about programming anymore. I never learned anything besides BASIC, and I forgot all that now. She literally comes to me every day asking me to teach her. I'm going this route, because I'm concerned that if I don't give her any guidance, and just leave her to her devices, she has friends who are unhealthily interested in illegitimate and illegal tech activities, and if they are the only ones teaching her things, where do you think her skills will develop? I'm trying to give her, upon her insistent request a form of guidance, rather than throw her to the wolves so I don't "appear" to be a "Precious Child/Helicopter Parent" to someone I don't even know on the internet.

1†
FloatingEyeball•

Yah, it'll be a shock to her when she starts programming. Having so much 'passion' for something you've never done is a bit weird. It'd wait to see if the kid even liked it, let alone making her think she'll be the best ever to do it.

23
skenyon02OP•

I'm not making her think anything. She's telling me what she's going to do. I've taught her her entire life that there will always be someone better and smarter than her in the world at something, but that doesn't mean she should ever stop trying or learning, or that she's not good. If this is what she wants to do, I'm going to do my damnedest to make sure she isn't hindered in any way.

2
meshugga•

Where are you located? Have a look at http://hackerspaces.org and find a non-profit one near you.

We sure would be delighted at the sight of a young girl wanting to learn. There's a lot of effort going on in the hacker community to make tech accessible to girls, and one that takes it as natural would immensly serve not just as a new member/contributor to the community, but for other women as a role model.

I've said it below already, but really really really consider finding a hackerspace. If you're in doubt about the people there, go with her, talk to them. Despite the "neckbeard" stigma (which really doesn't fit the hackerspace community at all) we're a super accepting bunch, eager to share with likeminded people!

6
skenyon02OP•

meshugga, I'll def look into this. My biggest issue is, I don't really have any way to currently guide her myself. I've gotten some great resources to look into before setting her loose on them though.

1
Eat_The_Muffin•

Do companies really take interns at the age of 15?

5
AncientSwordRage•

The best way is to find out from them. The number if times I've asked for something unusual from work/university and they've said 'we've never done that, but Ok' ... Patience and persistence.

18
denarian•

Hell yea. The vast majority of software engineering firms are meritocratic; they care way less about how long you've been doing something or what companies you've worked for, and way more about whether you're capable of producing value.

2
[deleted]•

[deleted]

1
MauledByPorcupines•

CEO here of a startup currently going through Techstars. I have a technical background as a programmer as well so I can relate to both sides of this.

First, realize that this isn't about making a new operating system. Your kid has the drive to change some aspect of the world that she perceives to be bad. She has realized that some aspect of the world sucks, is causing people less happiness than it should, and needs to be disrupted.

So you first might want to lead her into a moment of reflection about what, specifically, it would mean for an operating system to be "better," from her perspective. In other words:

  • What does she dislike about existing OS's?
  • What does she wish they can do that they can't?
  • Are they too slow? Are they too ugly? What is it?

Once she has clear what exactly it is that she doesn't like about existing operating systems, then she can ask: is it possible that other people also hate this same exact thing? If so, is it like, virtually everyone in the world hates this thing, or just a few people? She should ask some people to find out - friends, family, etc.

Once she's found a thing that everyone in the world hates, then congrats - she's found a pain point! Now she needs to come up with a solution for it, so she can make people's lives happier. This is the fun part, where she gets to imagine all sorts of ways to solve the problem. So she should invent some solutions and have fun with it. Since she's so bright, she'll probably invent solutions that other people aren't even thinking of.

Once she's done that, she should go back to those same people and see how they like her solution - do people agree it would solve the pain point? Some will probably say yes, some will say no. But, either way, she is sure to be surprised at how differently some people think about the problem than she does. How do her friends think differently from her about it? How about her parents, or older people in general? She should tweak her solution based on feedback, make an effort to understand where they're coming from, and iterate a few times.

Now, at some point in this process, she is bound to discover something about the way people think that blows her mind:

  • She may realize that different generations of people have completely different ideas about what counts as an "intuitive" user interface, given that older folks grew up with mice and keyboards and younger folks grew up with touchscreens and gestures.
  • She may discover that a certain amount of UI latency makes the OS feel "unstable" to a certain group of people, but is perfectly acceptable to a different group.
  • She may discover that, for some strange reason, older people are way more resistant to interface changes than younger people, even if the new interface is "better."

Whatever it is, she is bound to discover something. Some realization like this is bound to materialize if she gets outside of her own head for even a day just to ask even a small handful of people what they want.

That's the realization you want her to have. Most people never have that realization. They go through life never quite understanding just how differently different people can think. They never quite understand how differently other people's desires and motivations can be from their own, and yet how they still always "make sense" from the other person's perspective. And it can be hard. Sometimes you want to yell at people at how ridiculous they're being - think about when you were engaged in a political debate, for instance. But it's extremely important to have that realization, especially if you want to start a business. Most startups fail because they fail to have this realization, in fact. They end up building something that they think is beautiful, but which does not satisfy a real functional need that other people have. They were on different wavelengths the whole time.

That's the realization she needs to have before anything else. If she really wants to change the world, she needs to become a psychological hacker first and a computer hacker second. There's no way to build an empire like Apple unless you put it first in your mind that you want to create hundreds of billions of dollars worth of happiness in real people's lives, and you can't do that until you learn to get outside your own head and validate what other people want. She needs to make sure she's always focused on that - not just building something aesthetically pleasing for herself.

Of course, she might not care about this. Instead, maybe she just wants to tackle a fun project to build something she thinks is elegant and beautiful while learning how to code. There's nothing wrong with that either - it just means she's approaching this from an artistic perspective rather than an entrepreneurial one. And that's totally fine. But when she's ready to change the world, she'll have to get back to learning how to be a psychological hacker - ultimately the more difficult, but more rewarding choice.

51
TheOCD•

This is an insightful perspective. I hope OP reads this and can translate it in a way that a 12 year old will take to heart.

6
[deleted]•

[deleted]

3
skenyon02OP•

She's pretty smart, and has already asked herself most of these questions which is part of what has prompted me to make this post.

0
skenyon02OP•

Ultimately this was the realization she had. She's gone through those beginning steps already. She realizes that aesthetically pleasing may not mean stable. She realizes people are usually resistant to change, but some like it, some need it. I think what she wants to do is make an operating system that everyone will find useful and comfortable as far as UI is concerned. Even if that means having a setting to make it look like something they are more comfortable with, while having the functionality of something further. Basically, if you find windows 95 to feel more comfortable, but you like the functionality of linux, (I don't know, just an example) thy will be done. If your family member likes how 8 looks better, thy will be done. If you like the appearance of Windows, and the way Apple functions, so be it. She has a list of things she wants to change, because she realizes from listening to family and friends most people don't like these things, but they might be tolerable for some. She wants to make something that everyone can use, that is the same, but is like a skin that fits YOU, but can change to fit your father, wife, children, and great aunt suzie who Lord bless her is 98 years old. She recognizes different people see things and recognize things differently. What makes sense to you for a set up, may not make sense to Joe Schmo down the street. Joe Schmo down the street may recognize something completely different a bit easier.

I appreciate your advice. It definitely reminds her what she should constantly be asking herself.

1†
Zamax•

Just to add on with my limited experience, what your daughter has in mind also requires strong leadership. Jobs and Gates had phenomenal skills in those areas to take their respective teams to where they are today. Yes, they had excellent skills with their products, but they were top notch managers as well. So I would try to include that in her plan to succeed them. She won't be able to get there by herself; she'll need good company to guide her as well.

10
skenyon02OP•

Good point zamax.

1
ikahjalmr•

As a computer engineering student, the good thing is that if your daughter starts learning how yo program noe and keeps it up, she's gonna be a monster by the time she's grown, if she keeps trying to improve and learn new things.

The bad thing is that I don't think you realize how complex of a task it is to make an operating system. I haven't taken a course on it, but to give you an idea some of our assignments in my class take upwards of 20 hours, and that's just putting a specific concept to use, like if you were learning how to drive and it took 20 hours to learn how to turn on your headlights, imagine how long it'll be before you can create a racecar. Not to say its impossible, but if she underestimates how much she has to go before she can make an OS, she may burn out before she gets there

But another good thing is that you don't need a crazy computer to learn to program. Everybody in uni uses laptops without a problem. Buy her a decent laptop and it should be a good while before she actually needs a lot of power.

6
skenyon02OP•

That's part of the reason why she's wanting to start now. She understands there is so much that she will need to know, that she can't even fathom now.

Regarding the computer, I've always tried to keep a overly decent computer in the house, because I was taught at an early age that you are only limited in what you can do, by the hardware and software you are using. So it's basically going to be one of a few, basically because she will need to see how things respond in different circumstances.

1
ikahjalmr•

Then that's great! She definitely has the potential! And yes you are limited, but what you do when you start off isn't very demanding. The most complicated things would probably be working with files or using virtual machines, but in general a 5ghz super whatever computer is gonna be overkill

1
30_rack_of_pabst•

Thats awesome. There are app camps you can send kids to in the summer. Its like summer camp but tech focused. Also there are websites like treehouse (i think thats it), where you can learn for free or very little. Good luck with your nerdette!!!

22
Elmzran•

I second Treehouse. OP, go Google Team Treehouse. It's $25 a month and teaches all sorts of fundamental programming skills (although primarily focused on web design, but they're branching out) and concepts.

Really excited for you. It sounds like she'll do great things

5
skenyon02OP•

I'm hoping so elm! She's wanted to be a million things when she grows up, but I've never seen her this excited or passionate.

2
skenyon02OP•

Thanks! I'll have to see if there's any camps in the area, and I'll check out treehouse.

1
Quazz•

r/learnprogramming

It's incredibly ambitious to create an OS like that and I'm not sure she quite gets the scope of it, but all the same, learning how to program in the appropriate languages is essential.

18
alexophile•

Statistically, the biggest hurdle is likely to be keeping her interested in computer science in the face of what may seem like an unwelcoming environment for a young girl.

I would look into Girls Who Code if you're around a city. Not only is it a great educational resource, but it's a really good idea for her to be around women with experience in tech. There's a huuuge drop off in girls' interest in STEM careers between the start and end of high school, so a role model in the field is a major boost.

15
karmas_a_bitch_010•

Seems like her mom is her female-technology-geek role model :)

3
skenyon02OP•

I have to admit...while I haven't pushed her at all, I haven't hidden my enjoyment of tech from her either. She's been around it her whole life, and I've never really told her no for anything she's wanted to do or learn, except for her wanting to get into the command prompt recently to show me what she's learned without telling me what she's doing first...lol I want to make sure she understands what she's doing, and doesn't just go based on what her friends are telling her to type.

2
Eat_The_Muffin•

She wants to outdo all the current operating systems that have thousands of experts working on them and cost a fortune to create?

15
issius•

Hey man. Someone eventually comes around and does it. Thousands of "experts" do a ton of incremental increases and then someone new comes and flips everything on its head. Then you get experts in that.

4†
Eat_The_Muffin•

That might have been true in the beginning but eventually you reach a point where one person can't do something on their own due to resources or time or skill.

One person could make the first rocket but that doesn't mean one person can build a modern rocket capable of reaching mars.

7
nameless912•

OTOH, Linus Torvalds is (by his own admission) a terrible programmer. And he completely reinvented UNIX and open source. he wrote all of the first Linux kernel as a hobby project and didn't expect to do anything with it.

Sure, OP's daughter is 12, but who cares? It's certainly not even close to the same magnitude of project, but I started writing games when I was 12, and it got me hooked. I took a class last year at Uni that allowed me to write my own toy operating system. It takes a long time, but people can get there.

1
Bochinsky•

There's a big difference between building the crude "Disk Operating Systems" of the early days, but building an OS now, that can support all of the hardware functions of modern computers/mobiles AND the apps they use, AND be secure is not something that would person could build in a lifetime. There simply aren't enough hours to do it.

3
skenyon02OP•

Yes... -Her daughter.

3†
Eat_The_Muffin•

And yet you've never done any programming and have no experience at all?

It's like me saying I am going to build a 747 in my garden from scratch and it needs to be capable of flying to the moon.

Feel free to come back in a few years and prove me wrong though.

16
skenyon02OP•

I will :)

4†
NicolasGuacamole•

By the way - creating an operating system is very fiddly, confusing and often tedious. The differences you will be seeing in operating systems are quite superficial and exist mostly in the interface rather than the core of the OS.

12
Goosemaniac•

Don't worry. You won't.

2†
benjiathome•

Sorry, I think I may be missing something here: why are you so excited? Kids often have wild dreams (I'd guess): its like saying oh my god my kid wants to be an astronaut. Why does this wild desire have anything to do with reality? Is your daughter incredibly intelligent/ driven and you believe she can succeed?

This is ridiculous.

I also don't really know what you need to know? She needs to learn programming, computer architecture and maths. Buy some books. and a computer.

11
[deleted]•

[deleted]

1
skenyon02OP•

She is incredibly intelligent, and I've never seen her more driven about something. She is stubborn as hard headed, so when she decides she's doing something, there's no stopping her. This isn't a wild dream of being an astronaut that is being heard from a 4 year old. This is a girl that is going into the command prompt and changes the color of the text because it amuses her, and she figured out how. This is the girl that started school early, and is so bored by normal classes she doesn't turn her work in, even if she does it half the time, and all the answers are correct. This is the girl that would beg me to buy her workbooks and do half a workbook at a time because she wanted to and it amused her. The girl that taught herself to write her name before she started school. And what I need to know is how to teach her to code, because I don't know how, and don't know where to start.

-4
benjiathome•

This is a girl that is going into the command prompt and changes the color of the text because it amuses her, and she figured out how.

Isn't this just a setting? Writing some code would be more relevant.

This is the girl that started school early, and is so bored by normal classes she doesn't turn her work in, even if she does it half the time, and all the answers are correct. This is the girl that would beg me to buy her workbooks and do half a workbook at a time because she wanted to and it amused her. The girl that taught herself to write her name before she started school.

Lovely. Sounds like she is clever: but do you honestly think she is Linus-Torvald/ Bill Gates/ Bjarne Stroustrup, technical genius level? Because to achieve writing a successful operating system at a such young age (and I mean 5/10 years from now, because thats the amount of experience you will need before succeeding at this), thats what we are talking about here. Its just crazy - and there are so many technical and non-technical barriers.

And what I need to know is how to teach her to code, because I don't know how, and don't know where to start.

You don't need to teach her to code :) She can teach herself. (Like you say you did with BASIC?) In fact, if she is so driven, why hasn't she done this already? There are tons of resources out there.

Get a more realistic goal and some text books. This might be a good place to start.

5
Varo•

Why are you putting so much effort into discouraging a child?

-7
benjiathome•

"this much effort"

It was a 2 minute post. And i'm talking to OP, who is an adult... not a child.

Why did I post? Because its an insane proposal and I felt it needed said: OP clearly has no idea of the skill set required to carry out a project of this size, or even a much smaller one. Also, the fact that someone who doesn't know how to program plans to teach someone else to program is awful.

10
[deleted]•

[deleted]

2
murgs•

I mentioned it in my other comment, but I'll remention it here, given your description of here:

Show her https://scratch.mit.edu/ and then just let her play around and learn stuff. She will probably need little supervision, she isn't following a possibly 'boring' tutorial and she is learning the important parts of a program. And a good trick may be to ask her to explain to you how she did something, this helps you be up to track and she has to verbalise her thoughts (this is also a good bug/problem fixing method, when you explain what should be happening you often notice where what you are saying doesn't match what the code says or at least where possible errors could lie)

As follow up let her learn, python, it is probably the most intuitive programming language with which you can do bigger projects or C++, it is more technical but basically the go to solid/fast programming language used.

To learn this proper programming language you could also show her 'project euler' if she is into math. It's a vast collection of math problems that you can solve with a clever algorithm in a runtime of <1 minute on a standard computer. The community is very nice, it is easy to get tips and once she solved a problem she can access solutions of other people and discussions about the solutions and learn from them.

2
skenyon02OP•

I'll have her check it out! Thank you :)

2
war3rd•

She sounds like a clone of my son. I PMd you some info, BTW. Similar boat here, my son is voracious about learning to code in 10 different languages at once, is an autodidact, so teaches himself, and no one can tell him to take is easy or more slowly. But I wouldn't have it any other way. We need great minds for the next generation, and it's great to hear that she has the ambition to follow her dreams.

-1†
skenyon02OP•

I'm glad to hear she's not the only one. Your son sounds like he will do amazing things! Thank you for the PM. I'll read it when I'm done responding to the new messages.

-1
skenyon02OP•

Ok so, this is her daughter, just because your "wild dreams" didn't succeed, why do you have to put down mine? And she's excited because she's a mom, you can't expect her to not be happy ok? I'm not a 5 year old, its not like in a week i'm going to change my mind, go pick on someone else. Why do you have the right to comment on this just to say bad things? Oh because your a pessimist, there's a lot of you, i'm 12 just saying, why do you have to talk to a 12 year old like that? I'm not incredibly intelligent, but I do strive to succeed. If you want to talk to me or my mother like this, just don't comment at all. Okai??? Byee ;)

-11
benjiathome•

Hey - I wouldn't talk to a 12 year old like that (Even though I was just being realistic...), I thought I was talking to an adult.

Its cool that you are interested in I.T. and I hope you remain interested when you get more experience. Good luck :)

12
skenyon02OP•

Thank you :)

-3
NicolasGuacamole•

I do think it would be sensible to manage expectations. One of the most accomplished programmers I know contributes code to the Linux kernel, he is unbelievably intelligent and about double my age. Despite this, his efforts are a mere drop in the pond.

With the huge amount of hardware and software to support nowadays to produce an OS would take one person many lifetimes, no matter how smart.

6
skenyon02OP•

I'm not going to discourage her in any way. She is stubborn, and if she says she is going to and she wants to, nothing could stand in her way. Maybe it'll just be a phase and she'll end up getting bored with it. Maybe she's figured out early what her calling is. Either way, if she wants to do this, I am 100% behind her, no matter what.

-1
NicolasGuacamole•

It's just worth pointing out that her view of what an OS is are probably completely wrong. I wouldn't say discourage her learning about computers and programming, but the OS thing is the passing fancy of a child and I don't think you should try to focus her education towards that (e.g. learning harder languages like C first and plenty of architecture stuff)

I'm sorry you've been downvoted in some places in this thread, it's not really fair considering your amicable goals. I would say go on to use scratch and a raspberry pi. These are easy and good ways to start out, after that a simple codeacademy style course and eventually online CS university courses are probably the best way to go.

2
JustDoctor•

You don't need a computer that can clock 5Ghz right now. You just need a decent computer that can compile code, for the inevitable computer languages you'll need to learn. You'll only need all that power to do things with video/numerous parallel processes/heavy gaming/ etc. but right now, don't stress your mom out trying to get you a supercomputer. You just don't need it...yet.

Start learning as many computer languages as you can. Then...as you see fit, make a better one. ;)

Good luck!

2
skenyon02OP•

lol mom here. the 5 ghz processor will come into play anyway, just because of my computing habits. I'm impatient with a computer not doing what I want it to, when I want it to, and am often very demanding...

1
Varo•

Don't ever let bitter adults discourage you. Many have given up on their dreams. They comfort themselves by thinking everyone will give up eventually. It's not true. Some of us don't give up. Some of us live our dreams. I hope you grow up to be one of us dreamers.

Work hard. You'll get there.

-11
[deleted]•

[deleted]

1
Varo•

I'm not who you think I am.

0
skenyon02OP•

Thank you :)

-2†
[deleted]•

Look into the Hacker/Maker movement that is getting pretty big right now. There is a lot of hardware involved but there is also a lot of coding. Who knows maybe she will like the hardware as well. [Make] (http://makezine.com) might be a good place to start off.

10
meshugga•

This is the right answer. Find a hackerspace. Drop her off.

3
PersonOfInternets•

Let her design and build a vehicle to get home, or walk.

1
dontpanicsnoops•

I'm going to suggest a slightly different option. Expose her to wearable computers. Take a look at the tutorials available on www.adafruit.com And see the tutorials that use flora (an arduino based controller). You can write basic programs on it quite easily and it's something you could do together, because it involves working with hardware and software and gets her exposed to interesting materials, like sewing conductive thread into fabric, making paper interfaces using conductive ink, building objects in 3d printers, and using a bunch of different sensors to create works of art.

9
nuclearqtip•

I'll start off by saying, it's not my intention to discourage you or your daughter. The field needs people with ambitious dreams like hers.

My qualifications are that I've been in the field for 10 years. I work at one of the big 4 companies (possibly a future competitor of yours, watch out! -- kidding)

When you (OP) were learning computers (or more importantly, when Bill Gates was learning computers) I think it was possible to fully understand a machine. You could buy a few books, do some reading, fiddle around, and FULLY understand your system.

Everything from the OS to the programming environment to the disk to the CPU. But going even further you could even understand the circuitry in the CPU if you were determined. I mean you could REALLY know your machine.

I don't think it's been possible to do that for decades now. A person who wants to learn the whole shebang could easily fill an entire small room with books from floor to ceiling. That's the state of computers today. It's gotten to the point where very few people understand the whole enchilada.

So why am I saying all of this? Well the OS is a remarkably special layer. It's that layer of glue between the hardware and the software. It's not just the desktop with icons, it's the most important bit on the entire machine. And it requries an incredible amount of knowledge of both hardware and software to make it work.

Think for a second about all the bajillions of different kinds of hardware out there. Desktops, laptops, servers, mainframes, phones, medical devices, etc, etc. Each of these has special requirements, and interfaces with other pieces of special hardware. Let's narrow it down to mainframes and desktops (the only options when gates was doing this). Even there, think about the number of choices.

Every CPU, for example, is entirely unique. Normal programmers never think about this, but the OS absolutely must. You want your OS to run on Intel AND MIPS? You're going to have to explicitly write code to support both of those. You want your OS to handle magnetic drives AND SSD drives? You're going to have to explicitly write code to support both of those. Same for keyboards and mice and USB and speakers and monitors and... ad nauseum.

I think you can see where this is going. In order to compete with Microsoft, you'd need to literally support all of the hardware they do. You could spend 100 lifetimes and never learn enough about each of these devices to support them all. Even microsoft doesn't support them officially, they just give the hardware folks the tools to add support themselves.

Linux has the same problem. In fact even to this day it's one of the biggest criticisms, that it hasn't caught up to the same level Microsoft is at. Linux got started in 1991. Linus did NOT start the project from scratch. He actually based his work on a project called Minix which was a super-simple academic teaching tool (hardly a serious real-world OS). Here's his original post to the usenet group:

I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I'd like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

As you can see, Linus started off with pretty humble expectations. He didn't believe his OS was anything special. The reason Linux did SO well is that the open source community rallied around the project and made it better one iteration at a time.

But trust me when I say, there's no reason Linux should have gotten so popular. Installing it used to be quite an adventure. More often than not your hardware wasn't fully supported. The only people who liked the OS were fellow programmers who enjoyed the novelty. Some might argue this is still true today.

As you can imagine, there's too much knowledge and specialization for any one person to possibly contain it all. Linus Torvalds is a figurehead mostly because he controls the code, but he certainly doesn't understand most of the hardware. Nor does he deal with the graphical desktop or anything else. The amount of code Torvalds has contributed personally is dwarfed by the amount that the community has contributed.

Bill gates was the last big overnight success story. He wrote MS-DOS (and parts of Windows) at a time where the world needed something like that. He got popular not because he wrote the better product, but because he was in the right place at the right time. Windows won the OS war less on technical merit, and more because they won over enough of the hardware vendors (loyalty counts).

Apple actually almost died. Let's not forget that. Their popularity today is definitely not over their core OS. It's over their sleek UI and usability. And it's a status symbol now I guess? I dunno. But Apple does something special most others don't: they strictly limit the hardware. How nice for them, that they don't have to worry about supporting all those other hardware vendors. But it's kinda brilliant when you think about it, not having to compete for the same demographic as Microsoft.

The reason I'm telling you all of this is so that you can set some realistic expectations for your daughter. Most people I've seen who write an OS tend to narrow the scope significantly. Maybe they only support one kind of CPU, one kind of hard drive, maybe a few kinds of keyboards. As a learning exercise I can't encourage this kind of stuff enough. It's ambitious, error-prone, frustrating, but SO AMAZINGLY COOL that people still do this. If you want to encourage your daughter to do this, you'll be my hero of the day.

Buuut on her own... I hesitate to use the word "impossible" but it would be miraculous to see a single person create a viable competitor these days entirely on her own. I think what the world REALLY needs is another Linus Torvalds who has the vision, the technical know-how, but more importantly the LEADERSHIP to make this happen. Open source communities are like herding cats. And if your daughter really wants an open-source success story like Linus has, I a few big things you can do for her are:

  • Encourage her technical growth EARLY ON (other commenters talk more about this than I will).
  • Encourage her to contribute other open source projects. Not just for learning, but also it really helps to have a little name recognition later on.
  • Encourage her to fork another OS project rather than start from scratch (not strictly necessary, but I think you can see why).
  • Encourage her to reach out to the community and get feedback on her ideas.
  • Encourage her to learn about leadership skills. This includes communication, diplomacy, being assertive, and expectation setting.

Software at this scale is far more hindered by people problems and image problems than by technical problems. Linus is a shining beacon in the open source community because he kicks people's asses when needed and gets the project back in line.

Another thing you should tell your daughter so she has a realistic idea of what's coming is that OS development is FRUSTRATING. I cannot emphasize this enough. Only certain personality types seem drawn to it. I mean this both technically and from a community standpoint. Everyone and their mother has an opinion on OS design. And they can be pretty mean about it, to be honest. So having a thick skin helps a lot.

Obviously what I've outlined here is probably the next 15 or 20 years of her life. This is the real deal, this is usually what it takes. I'm not trying to be discouraging. I really REALLY love hearing that people are excited by this stuff. But it's not for the faint of heart. So yeah if this is really what she wants, all I can say is make sure she has her expectations set and then support her learning and growth as much as you can.

Your daughter sounds really bright, and it's pretty cool that you want to support her like this.

9
skenyon02OP•

Thank you for this. I realize the magnitude of what she's getting herself into. But I don't know she quite does, beyond, she doesn't know how yet. I have faith in her persistence though. It is always enlightening to hear about the historical and revolutionary figures in tech.

1
spacemanaut•

Everyone here is talking about learning how to code, which is obviously important. But one key aspect of operating systems is being overlooked, and is often overlooked by programming whiz kids: aesthetics and user interface. Windows isn't #1 because it's the most technically capable OS—on the contrary, is has a lot of shortcomings that Linux fans will be happy to lecture you about—it's #1 because it's slick-looking and intuitive to use. Your grandma, your 6-year-old, and your colleague who got a virus from downloading free smileys can use Windows. The Next Big Thing would have to not only be technologically/ethically superior to Windows and Mac, but also overcome the limitations of accessibility and compatibility that have always kept open-source operating systems in (let's face it) a niche of nerds, which means it would be prudent for her to study design, ergonomics, psychology, etc. as well as programming.

Good luck!

8
Bochinsky•

I think, actually, Windows is number one because it comes pre-installed on every computer except macs. Most people don't make a choice of their operating system. They just buy a computer they can afford and start using it.

2
skenyon02OP•

This is exactly it!!! She wants all of it in one. No matter what is most comfortable for you, she wants her OS to be it, and if it's not, then change the setting of the UI so it is, but make it easy enough to do that when your 2 year old changes it on you pointing and clicking/tapping, that you can change it back in as few and painless of clicks/taps as possible.

-1†
waytoolongusername•

Seriously consider starting her out with webpage design software. It's all about aesthetics and user interface, and you can realistically expect some visible accomplishment (so she doesn't get discouraged by having nothing to show before her attention span runs out). If you need help selling this idea as not totally foreign to her goals: People have recreated operating systems in HTML:

http://www.virtualdesktop.org/

4
skenyon02OP•

She was actually changing things in the firefox default page last night. She changed the standard white screen with the blue and white button to a black screen, with a white and green button. Just in the few minutes that she was occupying herself while I was doing something. I have no clue on that even. I'm sure it's a line of script that has to do with changing things in <> or " " but I don't know exactly what she did. So I'm sure she'd be up for learning this to get started. She's just so proud every time she figures something out, and wants to show someone.

1
murgs•

You haven't mentioned had good she is at programming, but a good entry for kids is: https://scratch.mit.edu/ (She can then later switch to C (which is the primary language of OS development), but I wouldn't be surprised if C will frustrate her much more than the windows,mac and linux :) )

And while I don't want to dampen her enthusiasm for changing the world, writing a graphical OS from scratch isn't something even experienced people do alone... I might explain to her the system of linux (it's not really just one OS), and point her to the fact that she can pick out a part and improve or replace it for herself while sharing it with the rest of the world.

I have no experience in OS programming, but if you don't exactly want to recompile the linux kernel regularly I doubt you need a specifically strong processor. If she is starting from scratch a regular modern office PC would do. The first two things I would probably improve are hard drive space (and speed with an SSD) and main memory. But that might just be my experience where the standard computers fall short.

After quick googling, you probably also want to take an evening and read a bit of the intros in http://wiki.osdev.org/Main_Page and discuss/show it to her afterwards. If there is an associated forum, I bet they will also provide some information.

And one last thing:

She was very agitated that xp is no longer supported

She does realize that it is older then herself, right?

A way to explain this, might also be the fact that she grows out of old cloths so you have to get new ones. New hardware is coming out constantly so you have to make OS updates to be able to use them. Similarly when you find a hole (security breach) somewhere you have to stitch it. Sometimes you also just like to improve the look or functionality by adding something.

7
skenyon02OP•

I do plan on setting her up on linux on the old computer, and just do what ever. That was about as far as I'd gotten until this post. I do want her to be able to have anything she needs at her fingertips "just in case", because you never know what you will need to do.

She does realize that things need to be updated. What she was unhappy with was the fact that XP couldn't continue to be updated, Vista sucked, 7 was ok, but in her opinion not as good as XP, and 8 just sucks. She was upset with the fact that she feels like the world is being forced into shitty os's just because microsoft doesn't want to continue to update XP. She also realizes the age of XP, but also thinks if it works, you can update/upgrade the current set up, not make a whole nother set up that is not as good, just to make something new.

-1†
waytoolongusername•

It's kindof funny to see that many of your posts are being downvoted at face value, without considering/understanding how a bright 12-year functions. Of course she's going to start out overconfident, plans will get refined with experience, etc, etc...but the big picture is that she's tackling something interesting / mentally challenging when most kids just waste away every free minute with mindless distractions. Keep it up!

3
mindfulmu•

I have a suggestion, a small one multiplied by 20 or so. Start a raspberry pi super computer. Rig up a set amount of raspberry pi's and get them working together. Which has been done before. Here's the trick though, once they are all working together see if she can have them divvy up big problems without one being the leader. Independently working on a chunk of a problem while working together.

7
paullyjunge•

Just give her one pi, she doesn't need a bunch. She can totally change the operating system's code and learn to program.

3
skenyon02OP•

I was actually just talking to someone about this last night. This would be helpful for her wanting to do a supercomputer OS.

1
nameless912•

If she really wants to go the whole Operating Systems route, first of all buy her a book called The C Programming Language by Kernighan and Ritchie. It's the authoritative guide on C programming and teaches some really important fundamentals about one of the oldest and most widely used programming languages out there. It only requires a very basic knowledge of Algebra to follow the tutorials and has been known as a second bible for programmers for ages.

Then, she might have a look at this: Patt & Patel intro to Computing Sytems. It's a higher level book (I used it for my first year in college) but if she's ambitious she'll chew right through it.

If she manages to get through that, THEN I would recommend taking a look at this course: ECE 391 @ UIUC. This is the course I took last year which covers low level programming and the basics of operating systems design. It's a great introduction to the world of super low level programming and will give her many of the tools she needs to really pursue this stuff.

If you have any questions, or if she does, please don't hesitate to PM me. I've taken several courses on operating systems, distributed networking, and high performance computing (all important topics if she wants to build a supercomputer!) and I'd be happy to help.

1
skenyon02OP•

Nameless, Thank you so much! This is exactly the sort of thing I am looking for. I will look into all of these things, and it'll give me a way to guide her.

1
r00x•

Cool! But building an operating system (one to rival the modern giants, at least) is an enormous undertaking. There would be so much to learn first. To ensure that path is interesting and fun, my suggestion would be that she perhaps get started by looking at the embedded aspects of programming. Which is to say, programming for microcontrollers and FPGAs and the like.

This is because:

  • You learn on a real-world platform. It is FAR more satisfying (imho) to see that first LED blink to the tune of your code rather than a "hello world!" prompt on a monitor.
  • You can build things with your embedded projects. You can start solving problems right away, which is very rewarding. Why not build a persistence-of-vision clock? Or an LED light cube music visualiser? Or a device that automatically opens a door when you knock on it with the right sequence?
  • It teaches you about being frugal with your code. On a tiny MCU, every cycle counts. You learn to optimise. You learn to consider whether you have the power and memory on tap to tackle a problem or whether you need to look for a better way. This is something that's hard to get a sense for on normal computers, particularly when starting out. It would also, needless to say, be very important if you wanted to build a sleek, efficient operating system to best the competition!
4
skenyon02OP•

Good advice!

This is exactly why I wanted her to have the old computer, and a new one to work with. She understands realistically there are people out there that cannot get new computers every few years, and she doesn't want someone left out of what's efficient, secure, and stable for that reason alone. She wants everyone to be able to have access to the same level of greatness.

0
zilti•

That sounds awesome!

Show her FreeBSD, it's great to get to learn more about how an OS works, especially when working on the console.

For programming there are so many resources and stuff around... I and many others find the Clojure community very very friendly and helpful to new people, also they participate in Google Summer of Code and have a lot of smaller OSS projects she can start participating.

4
RickRussellTX•

She's now 12

...

the 12 year old rig, which was a monster in it's time

Huh. Same thing happened to me. The last computer I built was in 2002, right before my son was born.

4
skenyon02OP•

Yep. Mine was around that same time. The only thing that it ever couldn't run was D3, because of the video card. But I did get it to (after messing with folders and values) load, with sound, about 30 seconds of load screen, then black, even though it wasn't supposed to run at all. It has progressively gotten slower over the years, despite regular maintenance. For example, it just can't do the 60 tabs at once in firefox like it once could, while running a media player, while running a full screen game, a heavy antivirus, anti-malware, anti-adware. And yes I was crazy enough to do scans and what not while I was doing stuff like this. Why? Because I wanted to, and I could. Because people told me I'd never use all my system resources. lol. Sadly, it can only do one at a time now.

1
s2514•

OP you might want to hit up r/learnprogramming and r/cscareerquestions as well as Linux from Scratch. (I know she doesn't want to make linux but it's still good to learn it.)

Edit: and if she has no coding experience check out Scratch from MIT which is a visual programming language that will help her grasp the logic.

If she is ready to jump into a programming language check out Khan Academy or check out the sidebar of r/learnprogramming for some resources.

3
skenyon02OP•

We do Khan at my school, just for math, I will look into other parts of it.

2†
skenyon02OP•

-Her daughter

0†
Chippiewall•

It's great that your daughter is so keen on computers and wanting to learn. One thing that I would like to emphasise at her age is to focus on breadth and not depth.

So whilst learning to program and doing a lot of it is not bad thing I would definitely explore related areas, if only a little. For instance electronics, particularly digital electronics, is a great foundation for a broader understanding of the operation of a computer - moving up the scale a little programming for an embedded device (Think Arduino or Mbed) is a significantly different proposition to programming for full desktop-style computer and will develop a broader set of programming skills.

3
skenyon02OP•

I definitely want her to have the broadest set of skills possible. Similar to computers, who are limited by the intelligence of their programmer, humans are limited by their knowledge.

-4
pxerz•

Well, if she truly wants to play around making her own OS, she should learn C and assembly. When I was in high school (~5 years ago) I taught myself assembly for TI-83 calculators so I could write a game on it. It was an amazing starting point for low level programming and understanding for how a computer actually works.

If she eventually gets fed up with it (making an OS is a huge endeavor), let her play around with a Linux OS like Arch Linux. It'll teach her quite a lot about all of the components needed for getting a system up and running and give her something to play around with to the point of basically making her own user experience (which it sounds like she wants).

3
skenyon02OP•

I plan on setting her up with Linux on the old rig, but I haven't use it myself since about 06, and really only dabbled with it then, due to my schedule.

1
staticquantum•

One very good resource on the topic is Modern Operating Systems by Andrew Tanenbaum. It may get complex but with a some effort you can understand pretty well how an OS works.

3