That's a fantastic idea, I think it should be a more common idea.
The first 'proper' computer we had in the house when I was about 8 was a 3.1 box, which was great, but the guy who helped set it up as I watched spent most of the time diving through a Windows DOS prompt Getting It Done. I immediately spent more time in there than in a GUI, eventually discovering how limited it was and moving onto Linux. It taught me a lot, and I always feel a little sad that kids won't get that experience without awesome parents like this.
Just think how happy they would be with an iPad or something like that. I think it's all relative, but it reminds me of that film "about a boy" where the kid was really happy to be receiving something at all.
Also computers in the 80s - simple compared to even a raspberry pi
Happiness comes from our relationships, our health, our work, our marriages, and our self-concept. Technology is necessary for none of these for children.
With, that is, the possible exception of self-concept. "I know how computers work and how to use them" is a positive self-concept. Author is knocking the ball out of the park here.
I didn't argue that an iPad will make you happy. Rather that it would make a very young child more engaged, more "delighted" and thus, a bit happier, than would a command line interface. As I said elsewhere, it seems even more preferable for kids that young to mostly skip all of the above.
I disagree. A blank command line is freedom. It's an invitation to do whatever you like. To discover. To try. To fail. To explore.
If you have 5 (or 50) icons to choose from, where's the blank slate? Where's the great outdoors? Where's the "I built it myself!"?
The boys love to eat the food from our garden that they helped plant and nurture a lot more than food from a store.
If they have ownership and freedom to explore, engagement is natural.
If you don't start with the preconceived notion that the command line is too hard or not engaging enough for children, maybe you will find that it isn't.
I love the CLI and spend much more time in it than in every other UI, but I was a Windows user for years, where I barely used it, and I still felt all of that.
My blank slate was an empty text file in Notepad and a browser (this was on a public computer, I couldn't install stuff).
The article (and the rest of the author's writings on the topic) contains a lot of evidence that his children are delighted with what they're doing. They're happily choosing to spend hours of time tinkering with this stuff, both with dad and on their own.
And it's not surprising at all. You're not thinking like a small child. Children focus intently on things that would bore adults to tears all the time. They have so little context that almost anything can be deeply interesting to them.
Now that I have a one-year-old, we spent a lot of time admiring the workings of garbage trucks, examining grass, etc. I can easily see his curiosity evolving over the next couple years to the point where he could amuse himself for hours with a command line and a speech synthesizer.
And he likes the iPad too. This isn't an either-or proposition.
That just not true. There is plenty to learn from a computing device of any type. The best thing I find to learn is that they are not endless gaming playing machines but you can create things on them.
"When I sat down to think about it, the typical GUI design does not present a very good “it always works the same” interface that would be good for a child."
See RISC OS, the old Acorn Computers UI. It was designed exactly this way.
Back to the present, would Sugar be any good for these two? Seems 'monotonous' in the Raskin sense and child freindly.
I love reading about the adventures of Jacob and his computer (and Oliver too!). These stories pop up on planet.haskell.org and they always make my day!
Great and inspiring piece (I have a 3 year old) but I disagree with this:
And then it occurred to me: the perfect GUI for a child would be simply xmonad (a tiling window manager that can be controlled almost entirely by keyboard and has no need for mouse movements in most cases.
The perfect UI for a child and for all other people unfamiliar with a computer all in all is the touch screen.
The reason why the children have problems with the icons being too small and accidental dragging is because the mouse represents an extra layer of abstraction.
If you think about it your brain goes horisontal to vertical and not even in a one to one relationship.
Seconded. My son was playing basic educational games on my wife's iPhone from about 8 months. He's nearly two now and uses the iPad without an issue, switching apps, watching shows. He even knows how to open iPlayer and find his favourite BBC kids shows. Never ceases to amaze me.
My first computer interface was a command line. I was five.
**** CBM BASIC V2 ****
3583 BYTES FREE
READY.
I learned that by telling things to the computer (via the keyboard), it would obey commands or remember information. This actually isn't terribly hard for a kid to grasp, though this level of sophistication probably won't work with a kid who's much younger than 5 or 6.
> The perfect UI for a child and for all other people unfamiliar with a computer all in all is the touch screen.
And how does one become familiar with computers if they only live in that world? This is no different than any other professional bringing their kids to the shop/office to learn what daddy does.
It's really very simple for a child. C-x C-s, C-x C-c, and arrow keys. All they really need to do.
I thought about vim, but I think it would lead to too many confusing situations.
I have a printed "cheat sheet" up there for the boys. It has commands and keyboard shortcuts. They sometimes forget it exists, but at least Jacob can read and follow directions on it without any trouble.
I would give vim a miss - particularly if they'll be hacking xmonad.hs in the near future - emacs has much better Haskell support (I believe). The same is true for dozens of functional languages. I can't be doing with the confusion of multiple editors, so emacs wins for me purely based on the languages it supports.
I wish I became familiar with emacs a lot earlier. It took me ages to transition from using IDEs because of the steep learning curve.
Oh, and I wish I grew up with a Dvorak keyboard. I was forced to learn it after getting RSI about 8 years ago - but I'm better for it now.
In my opinion, save the configuration, XMonad is simpler to use than mouse-based window managers.
You can open and close programs, change their layout, move between and resize them. All with, what, 7 shortcuts?
With mouse-based WM's there's click to focus, click and drag, right click, lots of buttons and icons everywhere and you have to constantly work to make the relevant information visible.
There's a reason why people don't go back after using tiling WM's - they're easier and more efficient to use than their mouse-based counterparts.
Consider that mobile phones use a similar approach by getting rid of the concept of windows and they are, by a long shot, easier for most people to get to grips with. Tiling is a similar concept except that more than one application is visible at the same time. The lack of a window stack helps. Navigating a big physical table covered with pieces of paper (i.e. all applications on the same layer, where the table split into segments - aka desktops) is infinitely easier for a human than a stack of paper (i.e. finding something in a binder or book is more annoying and slower).
They are indeed easier to use, but more difficult to learn. Tiling window managers are like giving someone a control system with no labels on the buttons. Users need to consult a manual to know what they're doing - which isn't something people generally like doing.
You don't need a manual to figure out how to use a touchscreen or whatnot though, which is generally why they're preferred by the masses, despite being inferior.
The same thing applies to emacs and vim too - they're capable of mostly everything IDEs do and much more, but it's non-obvious how to do things without taking the time to learn, read, search - something that people are less likely to do with age - but kids don't have a problem learning.
There's other issues like consistency too. With stacking based UIs you have some consistency built in, but you don't necessarily have it with the tiling window manager and minimal UI applications - take for example the difference in keybindings between xmonad and emacs. Another problem is that some apps can "hijack" your WM keybindings.
You can fix those issues by modifying the configs, but that's an even further level of learning that most people have no chance of ever doing.
>but you don't necessarily have it with the tiling window manager and minimal UI applications - take for example the difference in keybindings between xmonad and emacs.
There should be a formalised standard for keyboard based navigation. In fact, two standards might be a better approach - vi-like and emacs-like, since each of them caters to one of the major ways that people think. Having said that, with a little bit of work, you can get most of your daily applications to use vi keybindings (plugins for FF, Thunderbird and Chrome, Vim itself, custom keybindings for the WM, vi-mode for Zsh - in combination they create a programmer's version of Zen).
Thinking about it, I wonder if peoples' preference for these things might come down to their personality type - http://en.wikipedia.org/wiki/Myers-Briggs_Type_Indicator I'm not aware of any studies attempting to draw correlations between these things but, given how predictable people can be, it wouldn't surprise me if they existed.
>You can fix those issues by modifying the configs, but that's an even further level of learning that most people have no chance of ever doing.
When it comes down to it, the current generation of hardcore tiling WM's are experimental prototypes paving the way for the desktops of tomorrow. Just as many aspects of functional programming are seeping into popular languages, so tiling window management is seeping into popular desktops. I don't know about OS X but Windows 7, Gnome and KDE all support dragging a window's titlebar to the left-most or right-most edge of the screen to vertically tile it. It's extremely basic but it's an obvious influence.
I don't agree that there should be some standard layout - it should be based entirely on the user's preference - so emacs, vi, or whatever you like should be possible. The flaw is that every app decides it's own keybindings, and ignores the preference the user has set for his system.
Rather than a standard, we need a better API abstraction for keybinding, where users can control their keybindings from a single point, and it'll affect all their apps at once. App developers shouldn't tie functionality to specific keys, but to some abstract keys which the user controls.
I use Dvorak layout, but I generally prefer the conventional key locations for common tasks. So for example, cua-mode in emacs, I expect undo/cut/copy/paste to be in the locations of z,x,c,v on qwerty, except they're ;qjk on dvorak. It's awkward to make each app support this configuration - particularly when they all require a different language to configure.
Also, when a user configures his layout, he should be able to specify whether individual applications can override those keybindings or not - apps should request key combinations rather than assume they're available.
---
The personality types is an interesting thought, but I don't think it's really a big deal, because if you can't predict people, you just need to set a trend and make them predictable :p.
The editor wars are really blown out of proportion because of popularity or fashion rather than their technical merits. People are emotionally attached to their tools and aren't interested in the other anyway. I mean, who has the time to learn both emacs and vi enough to compare them objectively anyway? I've not used vi enough to really assess it's capabilities.
Maybe the personality type could give an indicator of a default setting for developers to put in. I'd be surprised if there's no research in this area, considering every desktop developer claims "we're building what users want after conducting usability tests." (I'd like to know who the audience for GNOME's testing was.)
---
I do hope tiling features will make it into desktop systems. Bluetile is an interesting example for gnome integration, although completely broken for gnome3.
Another interesting app is Opera. Their tabs have been based on MDI since day one (mid 90s). It basically has it's own internal WM, which includes some tiling features. (Opera's initial tabs were really tiles before they became the tabs we all know now.)
I think the other desktop environments are a bit slow on the takeup with tiling, and it's perhaps come to a grinding halt with the focus on tablets and touch now. We probably need to start experimenting with introducing touch into our tiling WMs to support heterogeneous inputs rather than exclusively keyboard too.
Probably the biggest joy about tiling WMs is that they're not some fixed system we're forced into using by the trendsetters, but they're more like APIs for developing your own personalized WM in. Until we build some customization abilities that don't require modifying code though, they probably won't become too popular - only minor features leaking into other systems.
What?! it isn't like that at all. I am pretty sure 95% of the programmers on this board use the command line everyday. It isn't "outdated". It is the best tool for a variety of programming related tasks. The average "user" isn't using the commandline today. However, the average "furniture user" doesn't need a set of wood working tools either.
> daddy is a woodworker, so here's some stone tools
Are you suggesting that if "daddy is a developer" that he's only using a touch screen for development? Or that development of touch screen apps is all a developer does? I'm confused by this statement.
Edit: Maybe I'm just not reading this right. Did you mean:
daddy is a woodworker, so here's some stone[-working] tools
or
daddy is a woodworker, so here's some stone tools [used for
woodworking]
The perfect UI for what? If you say "computer", I strongly disagree, because a computer is a very general description for a variety of different machines.
Secondly, when we're talking about learning, using a command line will probably (definitely?) stimulate reasoning and abstract thinking, whereas you can emulate the effect of a touch screen with a door bell.
Addendum: Of course, you can emulate a keyboard with an iPad, but then what's the point? You even lose the tactile feedback a keyboard gives you.
I'd go out on a limb and claim that a kid will be better off by using actual water colors instead of a water color app on the iPad. In the same vein I think kids might have more important things to do at the age of three than typing commands into XMonad (not that it hurts if it's not the only thing they do).
In fact there are numerous studies that show the importance of practical and physical experiences for the development of abstract thinking, math etc. during early childhood.
Perfect UI compared to what the OP proposed would be the perfect UI.
I am not sure that many kids 2-5 get that much out of the command line. They are still working on building their visual skills, exploring tangibles etc.
I am all for command lines if the kid get it, just think it's rare that they get that much out of it in that young age.
Touch screens are interesting because they build on the sorts of visual skills that we use in daily life. The command line is interesting because it nurtures skills you can't get from wandering around a garden. If I want a child to build their visual skills, I want to get them out in nature, or playing with physical toys, not a touch screen.
A CLI on the other hand is a very good abstract reasoning thing - it's on the same level as teaching a kid to read, or counting. And like reading I think it's a very valuable exercise whether the kid "gets" it or not.
It's only good for abstract reasoning if you can manipulate it and understand what you are doing. Kids at that age can't manipulate it the way you seem to suggest. They can "only" (if I do X, Y happens). It takes pretty intelligent kids to be able to be creative about that at such a young age.
The iPad on the other hand allows for emulating the reality the kids know and thus allow them to play around and learn abstraction based on where they are mentally.
What would he be referring to then? There are many, many terminal emulators out there that let you do work on anything that supports SSH. There are word processors, music creators, just about every PC program has an iPad analog.
The "iPad is a consumption only device" meme needs to die. It's completely, totatally wrong.
"Creating technology" is pretty broad. I've never used an iPad for more than a few seconds, so I'm not going to try and decode what he was referring to. I'm fairly certain he wasn't referring to art, though.
It's not a meme. The core of the problem is the forced sandboxing of apps and lack of any reasonable IPC mechanism built in. The individual apps are great, but the lack of ability to multitask holds you back.
That lack of featurism causes app developers to reinvent lots of basic stuff in their apps to get all the features they want. And sure, that happens on PCs too - but to a far lesser extent.
If you're familiar with the unix philosophy of making apps as filters, making them do one thing, and do it well - you'll understand how productive it can make you - and how there's no chance of reproducing that on a (non jailbroken) iPad.
And yes, I wasn't referring to art, but the software itself. Try creating an iPad app purely on the iPad - I wish you luck.
I don't think anyone is arguing that it's impossible to create anything worthwhile on an iPad, it is however obvious from the design of the product that whenever there was a conflict between power/features for creators and convenience for consumers that convenience won hands down every time. There's nothing wrong with that, there's clearly a big market for that.
On the other hand , describing the iPad as a good computer for application development because you can SSH to a remote server and run VIM seems a little stretched, by that standard the Nokia that I had in 2002 was a dev machine.
There's a reason that Apple continues to support and develop OSX.
The "using your fingertips on a glass screen" meme as the best thing in the world to interact with a computing device has to die, too. Using an iPad to create stuff is just like trying to paint with spaghetti instead of a brush. Of course, you can do it, but it's just not the best way/tool.
I think the whole reasoning behind exposing his children to the command line first and working from there is to give them a better understanding of the fundamentals before moving on to higher level UI. A window manager is the next logical step (as that's where computing actually went next). I agree, introducing a touch screen at a later point in time makes sense, but I think a window manager is both more practical and fits in the progression he's trying to achieve.
Kids aren't learning abstract fundamentals at that age though. They are mimicking stuff.
My son was two when he could operate the ipad, go to youtube find his movie. That's not because he could read or knew what he was doing, but because he had learned to mimic how I did things.
So the kids might learn the commands and there might be a lot of value in that. But I do not believe that they are actually internalizing and learning fundamentals in any intelectual sense.
Anyway it's kind of a hard subject. I think it's great what the OP is doing but I fear he is reading a little too much into the reaction from the kids. Unless of course they are gifted with a high IQ (which might very well be the case)
> Kids aren't learning abstract fundamentals at that age though. They are mimicking stuff.
I have to respectfully disagree with you on this point. A member of my extended family does extensive work with deaf young children (aged six months to six years). Her job is to accelerate their spoken-language development, which has been delayed by virtue of being deaf. She repeatedly makes the point to me that the difference between children with delayed language (e.g. most of those she works with) and a "normal" child is that those with delayed language tend to not understand (or use) abstractions in their speech. They treat each word as if it has a single application or use. Once they understand that each word actually can have multiple applications, their ability to learn new words grows exponentially. Until that point, they are simply mimicking.
That sounds like an abstract fundamental to me, though I am perhaps mistaken. (This is also subject to a counter-argument about the nature/nurture aspect of language, e.g. do we have an inborn understanding of language.)
Also, on a more personal note: by the time I was five, I was experimenting with electrical circuits. A few 1.5V flashlight bulbs, a pair of switches, a few D-cell batteries, and some wire went a long way. I taught myself that you couldn't put lightbulbs after each other and have them light up to the same brightness (e.g. series resistance), but that you could connect them in parallel without any of those effects (these were short-term, so I didn't notice the extra power draw). Likewise for switches -- if they were in parallel, then breaking one was enough to break the entire circuit. Those are brand-new, abstract concepts that I was, as you say, internalizing in an intellectual sense.
And no, I wouldn't have called my IQ particularly high at the time, and I still would not.
I don't think what you say contradicts my point and I am in agreement with what you are saying to some extent.
I am not saying there is no understanding going on at all. What I am saying is that when my son uses the iPad or iPhone he does not know what the different things mean (i.e. he can't read that it says Video) he just knows what it do when he presses the icon.
I can't say to him:
"Find the LinkedIn application"
Only if I have done that a couple of times in front of him will he be able to.
With regards to the discussion about language, then yes that is a very complex discusion :)
My own theory is that we are born "pattern recognizing feedback loops" and thus our ability to recognize those patterns and recognize that we recognize them is the foundation of our ability to learn a language. Language is simply an abstraction of our natural ability to do symbolic manipulation.
It's like assembler (our basic symbolic manipulation skills) and the higher level languages (our more developed culturally inherited languages)
Eh.. I know 2-year-olds who know how to do things on the iPad that the adults around them don't! It's ridiculous to think kids aren't learning at these early ages - it's when the brain is most plastic after all.
The fundamentals of language are getting pinned down at the same time in their little heads, and children who start training any skill at such an age tend to become proficient at it. I don't see why this can't be the case with computing as well.
Even if all they're doing is mimicking, it might at least be valuable in teaching them not to be scared of using the command line. I know too many people (including developers) that are afraid of the command line, and think it will be "too hard" to use.
I feel sick to read this. The kids learned the world in a twisted way. I really think kids should know how transistor work before work on computer. Otherwise he took too much unreal things for granted.
You really think it's feasible for a 2 year old to have an idea how a transistor works when all they want to do is watch videos of kitties and puppies on YouTube?
I believe ww2 was facetiously pointing out that the father in this piece chose to introduce his kids to an arbitrary point in the abstraction chain under the premise that anything higher is hiding too much of the implementation.
That said, while you could try and have your 2 year old build ENIAC out of from-scratch vacuum tubes I doubt you'll have much luck - I'm pretty surprised at the degree of success the author had with text terminals at that age, to be honest. As the father of a nearly-2-year-old this definitely has my gears turning...
I think it is likely a pretty solid idea to not teach kids how digital circuits and whatnot work, but rather to tell them. Make them aware that the knowledge of how they work is out there. Humans have a tendency to fill in gaps in their knowledge with superstition, though even the most basic of naturalistic frameworks should be sufficient to keep that tendency under control.
This isn't especially surprising, I probably learned to use command line when I wasn't much older. That wasn't because I was some genius, just that this was the only way to use a computer at the time.
There seems to be a popular misconception that a command line interface represents some kind of advanced brain surgery when in fact for many tasks it's simply easier.
I have done tech support jobs a few times in my life and it's a lot easier to guide someone in using a command line than it is a GUI "Click on Edit , click on Tools , Click the "advanced" tab , right click on the picture of a gear, now drag this thing into that place on the left" vs "type this in exactly how I dictate it".
Also CLI tends to be more predictable, I've seen so many people's computers where they've accidentally dragged interface elements all over the place and have no idea how to find anything.
We all did, there were GUIs available at the time (Win 3.1) but most good games ran from a command line interface, you could get quite a long way just understanding the "dir" and "cd" commands.
The biggest thing stopping people from using computers at that point in time seemed to be how expensive they were rather than that we had difficultly getting them to work.
Sure but that isn't learning the fundamentals which seems to be the basic goal of the OP.
I too could use the command line at a young age with the most basic things. I could even program a little back then. But I wasn't learning the fundamentals that way.
As far as I'm aware there isn't some universally recognized "right" way to teach people how to use computers. I remember 10 years ago everyone was certain that teaching kids to use MS Word was the most important thing in the world, now it seems to be avoiding creeps on facebook.
I'd be thrilled that they are actually learning something, especially something designed for "grown ups" rather than kids.
I am simply reacting and commententing to the overall theme of the comments and the OP's essay which is I read as him teaching his kids the fundamentals by playing around with non-GUI interfaces.
At after school care when I was in kindergarten, they had computers that would play Oregon Trail, which you had to launch from the command line. There were post-it notes with instructions for how to do it. We did it. All of us. It wasn't rocket science.
I remember using a Commodore 64 when I was 3. We had a book of BASIC programs that had to be typed in every time you wanted to run them, or you could store them on a cassette tape.
It's about time I start teaching my 3 year old daughter how to program a computer; hopefully she hasn't been too badly spoiled by the iPad.
I was booting and operating my father's Apple IIe at 4 by myself and I don't consider myself exceptional, but rather having experienced exceptional circumstances.
The year was 1985. Against his hierarchy decision, my father bought one for work under cover of some big carbon paper order (that was used a lot at the time, so it really did go unnoticed) and hid it at home.
Bundled with the computer were two floppies with games, one with a rabbit in a maze and the other I can't remember. He booted them for me a few times. Then one day as he was gone at the office, I booted the thing on the DOS floppy, inserted the rabbit game floppy and started the game. I was caught red-handed when he came back. Boy was he angry (what if I screwed up and destroyed weeks of work?). It's actually the first time I can remember being scolded. Later when he cooled down and realized I could actually get it, he briefly showed me more things like LOGO and BASIC, which I enjoyed a lot. He did not know much on the programming front (he was more of a MultiPlan and WordPerfect user) so I was on my own on that front. I remember creating chains of GOTO to generate infinite loops on purpose, and genuinely trying to understand and build very crude purposeless but exploratory programs. Yet at that age and completely by yourself you really can't do much.
Then, less than a year later the computer gained its due recognition and went at the office, at about the same time we moved far away. I was not to touch a computer again for eight long years.
I was doing Basic programming on the TRS-80 at about the age of 3. It's really not hard to learn how to string a few PRINT and GOTO lines together, and I think it's a great thing to teach kids to do.
> Also CLI tends to be more predictable
Generally I think that's true, but when learning Linux I managed to bork the system so badly using the command line so many times, that I just had to reinstall the whole OS.
I think it's great that you broke the system so badly. You then got to fix it, and you also learned that you have the ability to fix it even when it's terribly broken.
Ultimately, if you don't have the ability to break things, you don't truly have the ability to experiment and discover.
The C64 was great for that too, in a different way. You could do absolutely anything, mess it up in any way - peek and poke random system stuff - and you were one reset away from it being fine again.
I really miss this behaviour of 8bit era. I guess that things get soo complicated today and advanced information are soo easy to find that this state is not possible to achieve anymore. You can screw up even a smartphone by "poking" around too much.
As a young child Dad let me use his XT when he wasnt working. I'd tinker and change settings to see what they did. Occasionally I'd break something and would sweat it out to find a fix before Dad found out. It was a good motivator.
Assuming he did fix it. I remember the time I had some annoyances with my boot loader. After several tries at fixing it, I thought "I should get a clean start, lets dd zeros to mbr!". I did recover from that but it took so much time I didn't want to ever go through anything like it again.
I never recovered from losing a truecrypt password once.
Linux from scratch taught me that Linux is magic, and that if you deviate the slightest amount from the instructions, or try to customize anything, you are in for a world of pain.
When I have children, I also want to do things like these. I have a bunch of old Sun computers that I want to expose them to, not to mention an Amiga 1200 and a SGI O2.
I am not a parent so as far as childhood development goes I'm completely ignorant. Is it normal for a 3-5 year old to have the literacy skills to interact with a text+keyboard interface?
It depends on the child and their environment, I would hazard a guess at saying that any child brought up in a home where parents are going to show them a unix terminal is definitely going to be literate enough already. Many others would be, too. (At 5, certainly - 3 I know less about..)
What's normal is children doing just about anything to please their parents. What's also normal is parents living vicariously through their children. It's the whole two-year-olds-in-tierras-pagent meme nerdified.
Not sure I agree, unless the parents are doing something harmful like indoctrinating their kids into a cult I think it's good for parents to impart skills and knowledge that they have.
After all, if the kid is interested in something else instead they have plenty of time to develop other interests. As a general rule though kids usually do pick up interests from their parents, pretty much every friend I know has some hobby that one of their parents introduced them too (Music , Computers , Cars , Photography etc).
If a parent doesn't create opportunities for the kid to learn about things that they might not get to do at school then they risk having a kid who marches through life with no passions or direction.
Kids vary by quite a bit. Most kids learn their alphabet when they're about 4 and figure out written words when they're 5, but occasionally you get a very interested 2 year old who learns to read.
I learned to type at around 4 by writing letters on a type writer and asking my parents how to spell word by word until I remembered them. I must have driven them crazy, especially as this was a noise mechanical typewriter...
I then learned BASIC on a VIC-20 at 5 by copying my dad and experimenting (at one point I spent an afternoon after I learned about POKE, POKE'ing through large chunks of memory and being delighted every time I managed to provoke weird sounds or visuals).
Many developers I've known have similar stories.
Looking at my own son (3 now) I absolutely think starting at the command line makes learning some basics like that fairly reasonable to achieve for most 4-5 year olds at least. A mouse is hard - it requires a lot of coordination. Touch interfaces works, but limit how far you can easily go in some directions (though they work great for others).
Yep! I got a TRS-80 as a hand-me-down and spent HOURS typing line-by-line Basic code from a book to replicate their programs (mostly animated faces, simple games, etc).
I had no clue what I was doing but it was a blast. :)
At 3, Jacob knew his alphabet and could find keys on the keyboard. He learned enough to remember, by rote or otherwise, that "worm" launched the worm game and "sl" launched steam locomotives, sometimes using a cheat sheet for help. He could not read or comprehend responses very well. (He derived a LOT of enjoyment from typing nonsense commands, then having me read the error messages that started with BASH)
At 5, he reads well. He is not good at spelling - one reason I give him a short cheat sheet - but he can make out a lot of what's going on. Not everything, of course.
We didn't start them on computers from the cradle. We read books to them a lot, and play games involving numbers and words. Jacob loves Dr. Seuss books and word games.
But lest anyone think we're some sort of tiger parents, we also open the front door and let them go play outside, maybe sending some sidewalk chalk with them if they want it.
I got a TRS-80 at about 5. It had only a CLI (BASIC-based). That was a huge incentive for me to learn to read. Nobody else in the house knew about computers then either, so unless I wanted to wait for my dad to get home from work, it was me and the manual.
I made my big leaps and bounds reading when around 5 I was given a chance to work with DOS and win 3.1. I can say I would be a different person today if that computer never got dropped off from a family friend.
At 6 I was running through the registry messing up everything I can. (I once made the desktop completely iconless, didn't make for happy parents.)
Now I've got a 4.5 year old daughter, she uses an android tablet pretty consistently and I'm glad she's shown interest, I think I'll be getting a box setup for her soon now that she's showing a bit more interest.
My wife and I both were reading by the time we were 5.
It's very fluid though: some people do, some people don't. Strangely, children tend to be very divergent in capability at early ages, then they tend to normalize as they get older. At least, that's what people with lots of experience with kids tell me. :-)
I wrote my first love letter at age 5 and my mother delivered it to the girl's family, who took it and read it to her, because the poor child was only 5 years old and couldn't read herself. LOL!
I'm very sceptical about this. Children programming at 3, discovering limits of 3.1 and moving on to linux at 8, etc, etc. I don't know. I have two kids (8; 10) and know a lot of a similar age (family, friends). None of them are this smart. Reading - yes, technology - not so much, just basic skills - paint, excel, word, games, that sort of thing. Linux cli? no, not yet.
Had a chat with my wife who has degree in education, esp early ages. She used to work in kindergartens and schools, and yes, the development varies a lot in young ages, but programming at 3?....
PS. I know it's bit vague and sorry no sources with data points at this time.
Sweet story.
I cant help thinking whether all of these experiences would have seemed completely natural to your kids if they had been presented with a GUI from day one.
And if it would, would that make it easier to learn more, or if the excitement from switching to a GUI is really what they needed to tackle a steep learning curve.
> I didn’t want our boys to skip an entire phase of learning how their technology works
I don't think they're necessarily learning "how technology works", what they are learning is that they have control and can interact in different ways. I think that will be the most valuable thing in the future. Hacking is all about taking something and using it in different ways to "normal", teaching this concept from very early on (by introducing multiple interfaces) will be a great way to ensure in the future that they understand problems have multiple solutions and that technology works for them.
exactly. OP is a careless parent setting his spawn up for mediocrity. If he really wanted to teach the kids how tech works, he would have them write device drivers to interact with the mouse hardware.
It seems to me that starting on a GUI, or even more so on a touchscreen, teaches the mindset of "My computer tells me a bunch of things it can do. I pick one from the available selection."
Meanwhile, the CLI has a very different underlying message: "My computer asks me what I want it to do. I can tell it to do pretty much anything."
That strikes me as the real value in teaching CLI use at an early age -- it reinforces the idea that your computer can do whatever you want it to do, not just whatever it was set up to do when you got it.
That's a very important lesson, particularly in these days when so many of the big players in technology seem keen for consumers to forget it.
Well command lines can be quite stubborn when they don't want to do something.
CLIs were more interesting to poke at though and allowed you to be much more specific about what you wanted to happen. For example say you want to move all of your .mpg files from all subfolders of a particular folder recursively to another specific folder this is generally a lot easier with a CLI.
CLIs also don't tend to change very much, I've been using Linux for over 10 years and been through godknowshowmany window managers but I've never had to re-learn the CLI stuff.
I absolutely agree that this minset is important, but I am not convinced it is helping to have your child use bash.
The C64 era (which I was just barely part of), is gone. As much as I played games, loaded from tape with a "turbo loader", I don't think I neccesarily learned much from it.
If we want to inspire our children to pearn by doing, we need a modern approach. For my son and doughter, I'm thinking an Arduino with some motors and leds will be great. I played around a lot with batteries and push buttons. Having the opportunity to control them with software just moght reward and interest them enough in programming to see how deep the rabbit hole goes.
Bit If it doesn't, I'll be OK with that. I shouldn't push my interests on them. They will have to find their own.
One of the coolest things i remember doing as a kid was sitting on an acorn computer and writing some text that then controlled a Lego robot. I didn't know it at the time but that was my first exposure to programming.
It's really great when a kid gets massively excited about learning how to make things work whether it's a computer or something else.
Reading the story, and the comments, there seems to be a disconnect between why the kids were delighted - it is not that they are delighted about Linux or XMonad. Or that they are learning valuable life skills.
They are delighted to be spending time with dad. Doing something fun, that dad seems engaged in.
As a dad, too much time seems to go on the mundane or the boring. Raising up the enthusiasm level, is a marvellous thing for dads and kids. It does not matter if that is installing Linux, writing blog posts, foraging for mushrooms, bird-watching or football.
Plus one for spending quality time with the kids. what we actually do it seems is less important than doing it.
I remember watching my dad fix things when I was young, and I can confirm that this is indeed the case. It didn't matter what he was doing, I wanted to be watching. Carpentry, ditch-digging, vehicle repairs... It just didn't matter what.
I can't remember how many times he said, "Don't play where people are working." Also, (to Mom): "How many times have I told you not to put my tools away before I'm done working?"
My son enjoys whatever I am doing, be it gardening, fixing something in the house. It amazes me that by just watching me he has become quite a handymanny himself
I (attempted) building a flower box from wood and screws a while back. I spent quite a lot of time watching my dad build things in his workshop while I was little, but never really jumped in and did something myself.
It amazed me how much I knew and was able to do just because of me watching my dad do it.
My uncle was a carpenter and as a kid I used to just watch everything he and his team did. I can pretty much attribute all my engineering skills to that watching activity. I think my son would turn up the same :)
My daughter was overjoyed with excitement to help me put a mouse-trap outside by a hole. She didn't even touch anything, but then runs inside to tell mommy "I helped daddy!".
I was changing the oil and my 3yr old came over to hug me under the car. She put her arms around my torso and pulled - really hard. She wanted to help me up, probably thought I had fallen. My wife arrives to see her hugging me on the floor yelling "Mommy, I'm helping Daddy!".
This is accurate to some degree. They would have been excited without xmonad, or with gdm instead of startx, because it was something new and involved a mouse. They were super-excited about that part.
Part of my point was that we don't have to spoon-feed things to children for them to be excited about. My boys don't yet have any concept of editor wars, or OS wars, or window manager / desktop wars, and are excited about whatever they have - especially when I juice it up a bit for their interests.
I am very intentional about spending time with them every day. And you are right that they are happy to spend time with me, doing whatever. Maybe playing hide and seek (a recent favorite is hide and seek outdoors with radios), simply swinging on the swing set, playing catch. We recently built a fire ring out of some surplus brick. They helped, and enjoy helping gather kindling and cook there.
But what I'm describing here is an utter delight that is beyond the everyday. The were super excited about this. It would probably take going camping or visiting a train museum to get them more excited ;-)
Incidentally, a used manual typewriter is another excellent and cheap way to give children a fun indoor activity that also engages their exploration. Think of all the moving parts in that!
I consider myself very lucky to work only ten minutes from our house. Its taken some time to get to that stage, and it has proven the whole work/life balance thing for me - finally. If possible I recommend it.
I had always assumed I would introduce computers when they started reading and writing but you are giving me some food for thought - thank you.
Occasionally I wonder if there should be an alternative syllabus - activities at home to complement the stages of a child's development and if such a thing exists - anyone know?
Don't hold back! They remind me a lot of me and my brother. At the ripe old age of 7 and 5, we started programming with MicroWorlds, and spent hours teaching ourselves from the manual so we could make simple 8-bit DOS games.
Once a month or so, we would also make a trip to the local thrift store and we would each get to pick out 1 electronic gadget (<$5 unless it was particularly compelling) to take apart. I hacked up everything from keyboards to handbag-sized cell phones. Exploring programming and electronics as a kid was a big part of my success as an adult. For a lot of people, technology is scary/magical, but it doesn't have to be that way.
My first 'real' program was drawing a house in LOGO when I just turned four. I still remember my dad explaining me the concept of angles because I really wanted to draw a roof.
When I tried to rewrite that program 25 years later and downloaded a LOGO interpreter for OS-X; when it came to clearing the screen somewhere out of the vague recesses of my muscle memory the 'CLEAR' command just popped out.
I learned that my ten year old was only learning consumption patterns for computers at school.
Web searching and a tiny bit of Office basically.
Something had to change and I've found that several kids are keen enough on LOGO even in our day and age to come to a Saturday morning LOGO lesson in the computer lab.
...even some of the grown ups have started bragging about shapes they built or clever uses of the REPEAT command.
It's just a magically simple analogue for all things code.
What's excites us is that he is getting the kids excited in something important. He is showing the kids that they can have their OWN computer -- like Dad -- instead of promoting the "exclusive priesthood" concept of computer programming.
What if your dad pretended as if cars were a black box, "don't touch them!" and you are never allowed to look under the hood? You will have a very different outlook on life than if your dad had you help with the tools and showed you what they do and how they fit together, or sat you on his lap in the driver's seat every now and then while the car is parked and let you pull the steering wheel this way and that.
Unfortunately, most people probably promote the "don't touch it!" mentality.
>Unfortunately, most people probably promote the "don't touch it!" mentality.
Because computers are black boxes to most adults. They don't want their child to touch it because they wouldn't know how to resolve the problems that may occur. When the adult nearly breaks something every time he/she touches it, they are definitely going to be worried about letting kindergarten-aged children touch it.
To be fair, my then two y.o. son locked me out of my iPod touch by enabling the internet access restriction. Without the pass code, there was nothing else to do than to re-install the os.
He is still allowed to play with it, but I won't let him touch my phone.
I was introduced to computers through my Dad. I distinctly remember him teaching me how to upgrade the computer processor (in order to play a new game, Jedi Knight I think) and I was hooked. He and I spent a long time together with various programs and how computers worked. Sometime later, he bought me a small computer second hand or refurbished that was my own. We often tinkered with it until I was ready to build my own computer. He and I did lots of comparison shopping for parts to build "The Ultimate Gaming Rig" for the modest sum of $1000 that I saved.
Some dads build cars with their sons. My Dad and I built computers.
He and I still talk about computers and software, and are still excited by the latest tech. Those are some of my most cherished memories from childhood, and became the foundation of my career over a decade later.
I have fond memories of doing things with my dad -- he once let me dismantle an old lawnmower engine so I could learn how it works -- but although he was very supportive of my computer interests, I had surpassed his skill level early enough that I didn't have a lot of time with him on it.
I hope my boys have memories of me like you have of your dad.
Am I the only one that feels a little queasy reading this?
First of all: I think it's great to be teaching your kids about how computers function at a basic level. I think it's cool and admirable that his kids can use a command line.
But the very evidence presented in this article suggests that he's repressing his children from having more fun, more "delight" than they're able to looking at a bunch of text. They're so excited by the visual interface because all young children are excited by stimulating visuals.
The (admittedly poorly written) comment which is currently at the bottom of the thread points out exactly what I was thinking. Imagine how excited, how delighted, these kids would be with all of the possibilities afforded by an iPad. The diverse critical development opportunities and perceptual stimuli would seem to far outweigh the advantages of being able to think like a programmer or whatever. And, it would just be so much more fun for them, in my opinion.
Imagine how much more fun they could have painting instead of using tuxpaint. Learning how to interact with objects that aren't keyboards, mice, or lcds may benefit them in other ways as well.
Edit: In light of other comments by jgoerzen, this comment misses the mark.
Agreed. Children's development has been tuned by ages and ages according to a world full of stimuli. The reason kids seems to go for iPads is because they are more like the actual world. You touch them, they react.
I didn't argue that kids should use iPads instead of the real world. I think it may be better that they don't use computers at all. I was merely suggesting that an iPad might be better for them than a command line interface.
I would argue that giving them something that simulates things in the real world is less valuable than showing them something they can't get in the real world.
If if simulates something in the real world, why not just let them interact with the real thing?
I'm not convinced that you are "repressing" your children by not buying them every shiny new tech toy that 2012 has.
I'm no child development expert , but is it necessarily a positive to provide children with so much stimulation and stuff that is designed for short attention spans?
I had a variety of educational games as a kid but the majority of them had very limited potential to actually teach anything, I probably expanded my brain a lot more by making Doom 2 WAD files than I did doing any of that.
Oh man. First of all, the iPad (which I basically meant generically as "multi-touch tablet") is not a "shiny new tech toy." For most people, it represents many iterations on the kind of computer this man is using with his kids. For those of us who aren't software engineers, this article reminds me of what computers were like when I was extremely young.
And the iPad isn't limited to simple things. You should try using one. You can do a lot of complex things, you can build things, you can even program.
> For most people, it represents many iterations on the kind of computer this man is using with his kids.
For most people it represents a large phone that they can browse Facebook on. It's designed to be as little like a computer as possible; and for the purpose it is designed for (consuming media content), that's great.
For these kids playing with this simple command line stuff is fun, and they will have plenty of time to play with tablets later.
I'd argue that it's much better to do it this way around than giving them the tablet first, then trying to teach them command line when they are in primary school.
I would liken it more to a kid who is learning to drive and has a dad who is a mechanic, so instead of getting a brand new car with a SatNav , power steering and heated seats they restore a classic together and the kid learns to drive that.
Not a perfect analogy but the point I am making is that I don't think there's anything at all wrong with parents teaching their kids what might be considered "unusual" skills.
Yes that's true, in the US people seem to view driving stick as some advanced technique, here in the UK even the crappiest drivers learn with a manual (this may start to wane as modern autoboxes get better).
I don't think it's very constructive to label something as "advanced" or "hard" because this can cloud people's judgement and make them scared of things that are in fact relatively straight forward.
Thank you, This is how I felt too. I mean, cute story and all, but this sort of backwardation of technology and culture always makes me feel a little unnerved in a North Korea kind of way.
But hey, different parenting philosophies, I guess.
Disclosure: Not a parent.
Edit: Double Disclosure: Could see myself doing this if I were a parent
The iPad, to me, represents everything that is wrong with raising children.
First of all, I should say that computers are a small part of my boys' life. We live on a farm. They get lots and lots of time to explore outdoors, climb in trees, and all that good stuff that so few kids get these days. That is really more important to me.
You are probably right that they would also be delighted at an iPad. But what would that achieve? A simulation of things they could do with paper, out the front door? Reinforce the message that cool things are expensive and welded shut?
Research shows, and I firmly believe, that children need unstructured play. They need to be able to pretend, to create, to examine, to fail cheaply. Lots of toys and gadgets don't foster this. Don't get me wrong; our boys have plenty of toys, but we try hard to keep it from being so vast an amount like so many people have. When we travel, we don't bring a lot of toys. Walking in downtown Portland, for instance, they might find some leaves and make a game out of throwing them in the air while we walk.
We built this computer from spare parts. They were active participants in that. When it breaks, we will take it apart together and look at it. Maybe we will open it up other times just to see what it's like. This machine was free; it was built from old parts in my basement that I had discarded.
I vehemently disagree that more cost == better experience for children.
Two other things they've loved that were also free to me: an adding machine about to be thrown out (they love printing "cards" with it), and a manual typewriter (think of all the mechanical discovery awaiting one of those.)
Outdoors, they invent all sorts of games. They both have picked out trees on our yard that are "trains", designating branches as various controls and sometimes inviting me to ride on their train.
Was learning how to use the VCR everything that is wrong with raising children?
How is the iPad limiting? Aren't you confusing the Apple ecosystem with the apps on there?
Give them a piano app and see them fail, Give them a drawing app and see them fail. Let them play some of those gravity games and see them explore and fail.
I understand what you are trying to do. I too am thinking (and overthinking) how to best allow my kid to become great. I see no problem in you doing it. I would encourage it. But you seem to be overthinking your principles.
But that's just me. My son loves hammering at the computer too. (He is working he says) but he also loves playing games and music on his iPad.
They aren't mutually exclusive. For a child the iPad is not a walled garden and if they think it is then just jailbreak it with them. Actually now that I think of it, that seems to be a much better lesson in teaching them how to become a hacker.
Perhaps my first sentence overstated it a bit; I was reacting to the person that was "a little queasy." Sure, it's possible to use an iPad in a way that is not actively bad, and probably beneficial.
But it's still a box sealed shut that someone else built. And, perhaps most devastating, it's designed to just work out of the box.
I'm drawing an analogy to the maker movement here. I don't want childrens' experience to be defined by others, or to live in the boxes invented by others, whenever I can avoid it. Left to their own devices, they invent their own boxes all the time. I would have never imagined that one of our trees would be a pretend locomotive, but there you go.
My first computer, a TRS-80 CoCo II, turned on to a BASIC prompt. Yes, you could run software others wrote. But you were almost inevitably learning concepts about the computer, too - how can you copy data from one disk to another when you only have one drive and your RAM is smaller than it, for instance? Sure, you can use something Tuxpaint on an iPad, but you wouldn't be using it on something you built.
Apple's ecosystem is the antithesis of the "I can do it myself" approach. (If you do jailbreak it, then I start to see some more value.)
Linux is the embodiment of the "I can do it myself" approach. I remember as a kid opening up a hex editor and modifying the boot sector of a floppy so that when you forgot it in the drive at boot time, you saw my name instead of the "Non system disk or disk error." But my boys will have source code, if they should ever want to use it. How cool is that?
It's a little weird having this discussion as I am fundamentally agreeing with you in what you are trying to do. :)
Having said that. I just cant help having the feeling that 99% of what you are doing with your kids is lost on them. I.e. they are not there yet where they can actually appreciate and use all the information they are receiving.
I went through the same things with my son and music. As a former musician myself I was of course eager to have him learn to play an instrument. But more or less any music teacher i talked too basically said that before 3 learning an instrument was lost on them.
So instead we sing songs and I have bought a bunch of proper instruments that he can play around with as he wants.
On the iPad have have a very interesting synt app called MorhWiz and where he like to fiddle around with the other instruments he loves using MorphWiz.
This I believe is because the MorphWiz takes away some of the difficulties while still allowing for exploration. And there he actually plays stuff.
My point is. For your kids, the Ipad is like a linux system they can do everything they can think of with. They are not yet ready and cannot yet internalize the way you seem to think they internalize.
Again it's not my children, I am not in disagreement with your goals. But I think your kids could get even more out of this if you started from where they are not where you are.
<grin>, I do think we agree on the big picture, perhaps.
I completely agree with starting them where they are.
And yes, they do not yet know what a for loop is, or what a compiler is, or what it truly means to install something. But they do know sequencing of commands and cause and effect.
If a 2-year-old wants to pluck strings on a guitar, as ours has, then great! Maybe they will sing with their random music sometimes, and as a parent, that's beautiful. It is probably not teaching them actual skill in the technique of playing a guitar, but it's teaching them: 1) that "I can do this", 2) this thing make music, and 3) this is fun and merits more exploration.
I think I did meet them where they were at, and part of doing that was going ahead and installing a GUI for them now. There is no reason to believe that my excitement over a CLI when I was 5 was something unique to me. I think that many more children could do and enjoy it than are given the chance.
This goes both ways. The fact that my Mac "just works" means I can use it to make things and solve new problems, rather than spending all my time reinventing the sovled problem of a working desktop.
I've played with desktop Linux. The hours that went into to fighting Xorg or chasing WiFi drivers were perhaps educational, but definitely not productive. In the time it took me to get internet connectivity in Ubuntu on an old Dell, much less learn to stumble around vim, I could have made something new and useful with Twilio, Django, and TextMate on my Mac.
If I were a mechanic, I'd rather spend time fixing cars than fixing my tools.
This reminds me of an experience I had with my girlfriend's eight year old son who was raised on xboxes and other high-tech toys. One day we got him a baseball, glove and a net that allowed him to throw the ball into the net and catch it on the rebound. He reluctantly started playing with this stuff in the yard and a half hour later he was still at it, and really enjoying it.
Afterwards he told me, "I don't understand why this is so fun." At first I didn't understand what he meant by that, but then I realized that he was confused about how something so low tech could actually be really entertaining.
There is a maximum amount of delight children are capable of achieving, and it really doesn't take a great deal to get them there. It isn't related much to the fanciness of the toys.
If there was a measurable increase in the delight provoked by a CLI and a GUI, then logically any computer should cause them to drop down dead with excitement as compared to the toys of 100 years ago.
As someone else said, it's time spent with happy parents that they're really into.
I wish they'd teach Linux in school, starting from the kernel, instead of this "how to use MS Office" tripe that passes for "computer science" here in the states.
Not that I entirely disagree, but the English teacher couldn't care less whether his/her charges understand, well, anything about Linux, but the English teacher cares a great deal whether his/her charges can manage 1-inch margins and double-spacing on whichever word processor is currently winning the mindshare war.
I still do not understand this. If I were an English teacher I would tell my students to email me the assignment with the following format
Subject: Assignment 1 - Larry Jones - Romeo and Juliet Meets Robots
Body: [5 paragraphs of text]
Or even better would be for them to have it on a blog, so you get social pressure to do well. Parents might not go for that one though.
Why do we need to be good at margins, double spacing, etc. When was the last time I needed to change the margins on a Word doc? 3 months ago? Waste of time/resources.
I think it was so the teacher could write comments on the pages more easily. That was 10 years ago though, so I'm not sure if students still have to hand in printed hard copies?
I think he's referring to high school, where the selection of computer courses is far more limited. At my high school right now (in the United States), the only computer course covers using MS Word, Powerpoint, and Excel. Absolutely no programming courses whatsoever.
(As a side note, I self-studied AP Computer Science and it isn't much better. Its pretty much all Java syntax and logic with a few sorting algorithms thrown in so that they can call it "computer science").
I wish they'd teach Linux in school, starting from the kernel, instead of this "how to use MS Office" tripe that passes for "computer science" here in the states.
This is a good story, although there are some thoughts that come to mind when I consider what's happening.
It seems as though GUI environments are being treated as second-class citizens. While I live and breathe my command line as I have for years, GUI interfaces run the world. As long as the kids learn GUI interactivity at some point, they'll be better prepared for the world.
But the excitement those kids are getting is that feeling of control, of if-I-do-this-then-that-will-happen, which is a powerful motivator. startx and xmonad can offer a simplicity that would very much appeal to young kids interacting with a computer.
All in all, good for Dad and kiddos. They like doing those things, and Dad is focused on helping them succeed. A winning combination.
I think that modern OS GUI has helped increase productivity. Not giving your kids exposure to a modern OS means that your kid would be playing catch up with other kids when exposed to one, say, in school.
A person's job prospects may also be limited if they don't know, or are not comfortable with, what the majority uses
We're talking about a five-year-old here. I think it's absurd to think that any of us know what a mainstream productivity OS is going to look like by the time it affects his "job prospects".
At that age, what matters isn't any of the material learned. It's the attitudes and self-conceptions that matter. If a five-year-old learns that he likes telling computers what to do and that he can get steadily better at it by exploring, that's a huge win for his future.
The last version of Windows I used seriously was 3.1.
Last winter, I suddenly had to fix problems in Windows Server 2008. I may have been a bit slow, but yes, I can fix an OS I've never used.
If you have a good knowledge base, and the experience to provide a good intuition, you can figure them out.
I would, incidentally, consider Debian to be a modern OS, and a CLI to be a modern UI. If they can string together commands in bash, I'm sure they'll be just fine with Windows.
This is so depressing. All these nerd dads are trying to break some kind of record by saying "look my kid can do this at age X". Please consult development psychologist before you stuff your toddler's brain with such garbage. They need to play with physical objects, music, colors, food. go out and have fun. There is plenty of time to learn shell.
This is really awesome and I finish the whole article. I am 21 now, having almost graduating from a finance degree now and I started to learn coding, there are just way too many things in my head that I want to build. I keep a journal for all my ideas and hopefully one day I build all of them. The excitement is just awesome! I have done some investing and trading and I thought it was my favourite to do but then no...I am like new born now!
Ouch, teaching kids to log in as root. Bad dad, bad! Teach them sudo and explain that you were possessed by the devil when you mentioned root before, and to forget all about that.
when I started using linux, I went through two phases. the first one was marked by knowing, generally, which commands to invoke from the command line to make the computer do what I want. I had very little idea of what was going on in the operating system and the userspace runtime, and it didn't matter because the creators of the OS and runtime were smart and the system behaved sensibly.
I thought I knew what was going on, I had this feeling that I was in control of the computer, but really I wasn't, I was just as much at the mercy of the operating system maintainers as I was when I ran Windows. If a command line program reported an error or crashed, the procedure to fix it was identical to the one on Windows: ask your friends, or search the Internet.
It was only after many years of doing system level programming that I was actually able to fix problems that the original tool creators did not anticipate.
I think many people park themselves in front of a command line for five minutes, "learn bash", and think "hooray I am in charge of the computer". You're not.
Find an old keyboard, one you don't mind taking some abuse. Plug it in to a computer somewhere, put it in a 80x25 text mode where the letters are nice and big.
Then log in and let them bash at it randomly to their heart's desire. They'll be able to make lights on the keyboard turn on and off, and see the effect on the screen of what they do on the keyboard. It might only last a few minutes at first, and that's fine.
Once they can recognize letters pretty reliably, they could start with some simple CLI things. At almost 3, Oliver can log himself in, but I usually have to point to each letter in his username before he hits it. He knows his letters, but not his QWERTY, yet. He also has some issues with repeating letters. But once he's logged in, it's mostly random mashing at the keyboard for him yet too. I bet it won't be for long though.
As to age, each child is different. Follow their cues. If they happily sit on your lap for 15 minutes, seriously studying, or laughing at the hilarious error messages they make, then it's time. Or if they start wanting to use your computer. If they run off after 30 seconds, try again in a month or two.
It's a window manager. That is, all it does is draw and position windows for your programs. It serves the same role as KWin in KDE or Metacity in Gnome.
There are some important differences between XMonad and normal window managers. In XMonad, you cannot drag windows around and they cannot overlap. Instead, the windows are positioned automatically and can be controlled with some simple keyboard commands. Additionally, XMonad lets you configure its behavior--how it lays its windows out--with Haskell, a very nice functional programming language.
You can use XMonad with an existing environment like Gnome; you would then have tiling windows that do not overlap with all of the normal Gnome features you're used to. However, XMonad can also run alone for a more minimal environment where you do not have extra panels and menus and use the keyboard much more often than the mouse.
Everybody I know that has used XMonad really likes it. It really makes you more productive by managing windows for you--you don't have to drag them yourself. If you have some spare time, you should try it out and learn the basics. It's also a good excuse to learn Haskell, which is an insanely awesome language and great fun.
I have a 34month old and 4yo, and this has inspired me to give them a old machine tonight. They will love 'sl'. I will also try the xmonad and tuxpaint stuff with the 4yo. She will like having her own computer and will be tickled to be 'working' like Daddy. They use an iPad sometimes, but I'll be interested to see how they feel about typing on keys and using a trackpad to paint with (the mouse doesn't get used).
The 4 yo was excited about getting a computer, but didn't care at all about using it. She just didn't 'get' the steam locomotive. She was willing to participate (and was interested) in typing characters on the screen and having something happen, but I just didn't have enough at an appropriate level to maintain her interest. I had hoped to work up to the gui and tuxpaint, but we didn't get that far before she completely gave up. I think there would've been (general) merit in this approach, but there's just not enough command line apps that are suited to this age group. The 2yo could also make the train go, but he didn't recognize it as a train. It was probably too fast to decipher the ascii art.
Somewhat strangely, starting the following day, the 4yo started calling her fake baby cell phone a 'computer' and is really in to pretending to do things on it. Crazy stuff like talking about how well she's doing at playing videos games. We don't play any video games in our house. It's as though I unlocked some possibility of having her own computer and her mind is running with it.
My 4.5yo has been using iOS since a bit before 2, has his own ipod touch and uses the family 1st gen iPad. He came home from kindy excited by using a PC. I couldn't understand it but now I do. Kids love to learn and he needs new challenges and this is another thing I can do with him. I have been waiting until he has better literacy to start on the cli, but perhaps the cli will help him learn letters and typing. Nice one.
I was born in 84 and have a lot of fond memories with Windows 3.1, solitaire and the progression of computer games as I grew up.
I sincerely hope this father kids his kids out of the house and into the backyard to make friends, built forts, break things, and all the other awesomeness I experienced as a kid growing up. If my dad started putting me in front of a terminal when I was 2 or 3, I'm nervous how I would have ended up.
Because I received my first programming book (HTML in 24 hours) when I was 13, I had plenty of years to learn to code, but didn't sit inside while all the other kids were playing for 13 years. Now I'm coding everyday, having a blast at my startup, and my best friends today are the kids from my neighborhood that I was building forts and setting off fireworks with 20 years ago.
Absolutely I do. See my blog for examples. The other stuff is more important than the computer, and they spend far more time outside than they do at the computer. One of their favorite activities is to build their own river systems using a slow trickle of water out of a hose & pipe onto a small mound of dirt.
I got my 8 year old an arduino, so I'm secretly taking him through Kernighan and Ritchie. Each night I teach him a new little snippet and the next day he'll run with it. Its fascinating to watch as he takes the concept and pushes it as far as it will possibly go, ending in a massive barely working kludge... and then the next night we learn a few new lines that make it all simple and easy and its sheer joy. Its like watching Peter Parker get spider powers.
Just learning that programs could be broken into callable functions was a moment of stand up, open mouthed wonder.
My experience has been that the earlier in life that someone is introduced to a technology, the easier it is for them to learn it. Kids these days pick up computers and the Internet very quickly, while many older people (esp. 60+) struggle to understand it. I think this is largely just a property of the human brain - our capacity to learn new things decreases with age.
I was fortunate enough to have a father who did pretty much the same thing as this guy. Growing up in the 80s, I was introduced to the DOS command-line, BASIC, Turbo pascal, building and upgrading my own computers, etc. I distinctly remember the day when I was 8 years old and asked my father, with no prompting, "Dad, how do you make programs?". This was 24 years ago and pretty much every day since then I've been working with computers in some form or another, completing three CS degrees, teaching the subject at university, and starting my own software company. I'm pretty sure none of this would have happened if it wasn't for my father.
As a CS lecturer I've seen some students who come into the first year courses having never written a line of code before in their lives, and others who were writing their own games all through high school. While there are some exceptions, the latter group tend to do far better at their studies and also often just naturally do their own projects outside of formal study, which IMHO is critical for learning the subject properly.
I think getting kids into the technical aspects of computers at an early age gives them a tremendous head start over their peers who are playing Xbox and angry birds on their iPad. This guy is giving his kids two of the most important gifts of all - education and inspiration, of the sort they'll never get in school.
reply