I introduced my 5-year-old and 2-year-old to startx and xmonad. They’re DELIGHTED!

Two years ago, Jacob (then 3) and I built his first computer together. I installed Debian on it, but never put a GUI on the thing. It’s command-line, and has provided lots of enjoyment off and on over the last couple of years. I’ve written extensively about what our boys like to do, and the delight they have at learning things on the command line.

The looks of shock I get from people when I explain, as if it’s perfectly natural, that my child has been able to log in by himself to a Linux shell since age 3, are amusing and astounding. Especially considering that it is really not that hard. Instead of learning how to run an Xbox, he’s learned how to run bash. I like that.

Lately, Jacob (now 5) hasn’t been spending much time with it. He isn’t really at a stage where he wants to push his limits too far, I think, but yet also gets bored with the familiar. So I thought it was time to introduce a GUI in a limited fashion, perhaps to let him download photos and video from his Vtech toy camera (that takes real low-res photos and videos which can be downloaded over a USB1 link). He’s familiar with the concept, at least somewhat, having seen GUIs on Terah’s computer (Gnome 2) and mine (xfce4 + xmonad).

So last night, Oliver (age 2) and I went down to the basement on a mouse-finding expedition. Sure enough, I had an old PS/2 mouse down there that would work fine. The boys both helped string it through the desk up on our play room, and were tremendously excited to see the red light underneath it when the computer came on. Barely able to contain the excitement, really. A bit like I remember being when I got my first mouse (at a bit of an older age, I suppose.)

I helped him them in as root for the very first time. (Jacob typed “root”, and I typed the password, and provided the explanation for why we were telling the computer we were “root”.) Jacob and Oliver alternated typing bits of some apt-get command lines. Then while we waited for software to download, I had to answer repeated questions of “how soon will the mouse work?” and “what does ‘install’ mean?”

Finally it was there, and I told Jacob to type startx. I intentionally did not install a display manager; more on that later. He pressed Enter, the screen went blank for about 5 seconds, and then X appeared. “Excited” can’t begin to describe how they acted. They took turns playing with the mouse. They loved how the trash can icon (I started with XFCE) showed trash IN the trash can.

But they are just learning the mouse, and there’s a lot about a typical GUI that is unfriendly to someone that isn’t yet proficient with a mouse. The close buttons are disappointingly small, things can be too easily dragged on and off the panel and menus. 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.

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.) No desktop environment, no file manager in the root window. Just a window manager in the classic X way. Of course!

So after the boys were in bed, I installed xmonad. I gave Jacob’s account a simple .xsession that starts a terminal and xmonad.

Today, Jacob informed me that he wanted his computer to look “just like yours.” Playing right into my hands, that was! But when he excitedly typed startx, he said it wasn’t just like mine. Uh oh. Turns out he wanted the same wallpaper as my computer uses. Whew. We found it, I figured out that xli(1) loads it in the root window, and so I added a third line to .xsession. More delight unlocked!

Jacob mastered the basics of xmonad really quickly. Alt-Shift-C to close a window. Alt-Shift-Q to quit back to the “big black screen”. Alt-Shift-Enter to get a terminal window.

We launched thunar (the XFCE file manager) and plugged in his camera. He had a good deal of fun looking at photos and videos from it. But then I dropped the true highlight of the day for him: I offered to install Tuxpaint for him. That’s probably his favorite program of all time.

He watched impatiently as apt-get counted down 1m30s for tuxpaint and its libraries. Then we launched it, and he wanted to skip supper so he could keep playing Tuxpaint on “my VERY OWN COMPUTER!”

I’d been debating how to introduce GUIs for a very long time. It has not escaped my attention that children that used Commodores or TRS-80s or DOS knew a lot more about how their computers worked, on average, than those of the same age that use Windows or MacOS. I didn’t want our boys to skip an entire phase of learning how their technology works. I am pleased with this solution; they still run commands to launch things, yet get to play with more than text-based programs.

At bedtime, Jacob asked me, very seriously:

“Dad, how do I start tuxpaint again?”

“First you log in and type startx. Then you can use the mouse.”

Jacob nods, a contemplative look on his face..

“Then,” I continue, “you type tuxpaint in the terminal, and it comes right up.”

Jacob nodded very seriously a second time, as if committing this very important information to long-term memory. Then gave a single excited clap, yelled “Great!”, and dashed off.

138 thoughts on “I introduced my 5-year-old and 2-year-old to startx and xmonad. They’re DELIGHTED!

  1. One of your prior articles got me to introduce Debian to my son. Got him an old Apple PPC clamshell to load it on. gave hime a login and let him go. wurm and snake are his favorites (per your other post, I installed bsd-games), but he likes “dad not found” “mom not found” etc too. He can name most of the keys as he hits them, even semi-colon and equal sign. Pretty good for 3yrs 2 mths imo.

    Thank you for doing this, it was inspirational to me.

    Reply

    John Goerzen Reply:

    That’s cute and great! My son has loved producing various error messages too.

    Reply

  2. You should install the ‘sl’ command if you haven’t already, a kid would love that I reckon. Basically an ASCII train comes across the terminal if you mistype ‘ls’ as ‘sl’.

    Reply

  3. Hey there. I just stumbled upon this completely randomly, whilst looking for some xmonad resources, and I just wanted to pop in and tell you that this was awesome. I think I will raise my kids like that myself.

    This is asked out of complete, genuine curiosity, so I hope you don’t take offense: is there no part of you that feels like you are perhaps forcing some interests upon the kids, though? I mean, I can see both sides of the argument here. On one side.. they’re 2 and 5. How do they know what they think is interesting?

    Maybe they’ll just grow out of it if they really don’t like it.

    Anyhow, thanks for the read!

    Reply

    John Goerzen Reply:

    No problem!

    It’s a chicken and egg problem, isn’t it? They will discover what’s interesting as they go along. It might be computers, it might not. I’ve provided them an option. I don’t see xmonad as being particularly different from Windows in that regard. Everybody with kids that use computers makes some choices for them about operating system and software, and it’s that way here too. I’m not sure that’s precisely what you asked, but I hope it helps.

    They certainly have many non-computer interests as well, though.

    Reply

    John Arnold Reply:

    I’m a little mixed about what you’re doing with your kids here. On the one hand I have the same command line background as you and I would like my kids to have the same joy of learning about computers as I had. I’m hoping I can do something like that with my Raspberry Pi. But on the other hand I don’t think young people will think of a computer as being a box with a keyboard, mouse and screen like you and I do. I think tablet computing is the future of computing for the masses. I’m not saying traditional computers are going away. They’ll just be for those that need something beefier. For the vast majority a tablet will be all they need and more.

    So it’s great that your kids are learning the fundamentals, and I hope to teach my kids some of that too. But just as I know about punched cards but never use that knowledge I feel our kids will probably know about command lines but never ever use them.

    Reply

    John Goerzen Reply:

    One person on Lifehacker responded to this article this way: “The point is that in order to be a master of technology, and not a slave to it, you must know how and why it works. And the best way to understand computers is to run them starting with the console.”

    My first computer was a TRS-80 CoCo II running BASIC. I haven’t touched BASIC in many, many, many years. The *tool* became obsolete but the *knowledge* and problem-solving skills didn’t. I learned about the fundamental logical nature of computers, about loops and commands, about moving data from disk to RAM and such.

    Kids love to explore. They don’t start out with preconceived notions of what’s good or bad. Linux isn’t the only thing, and computers aren’t the only thing. The boys have plenty of other activities and will encounter other operating systems. But somebody that only ever uses a tablet will have no idea how to write software to run on that tablet!

  4. The first thing I had (born in ’78) was an Atari VCS. I’ll always be grateful for my dad. Now IT is my life, make a lot of money, and enjoy it as much as ever. I’m keeping one from when the time comes; later I’ll get a Mac II which had an awesome mouse tutorial and lots of educative games were available (more than any other plattform). Obviously the net is out of the question maybe until he’s 9 or so… I hope. I’ll have to assess if I’m not crippling him as time comes. Meanwhile will do the same; start as I did so he’s able to get it as I did.. Hope so.. Very inspiring article!!

    Reply

  5. well done!
    regarding the vtech toy camera, we had also considered it, but then decided to give our 5-year old daughter a GE DV1 camera which is easy to use, makes HD video, decent 5 MP photos (but no flash and no macro), is shockproof and water-resistant, and reasonably priced at 85$. The only disadvantage: she won’t let me borrow it unless she gets chocolates ;)

    Reply

  6. I found this on lifehacker and I was just so happy all the way through, while also filled with immense jealousy. I am 17 now and just got into programming. I had used the terminal on my mac (messed around opening programs, deleting files, and making my mac say things to me. Also to hack into macs FOR GOOD REASONS – says every criminal ever) a few years ago. But i felt confused at the meaning and syntax of it all. This is all me explaining why you, sir, are an awesome father.
    So anyways, I was wondering what you chose for them, and why.
    DFTBA

    Reply

    John Goerzen Reply:

    Hi Wyatt,

    First, thank you for the kind words. I appreciate it!

    Don’t think that 17 is too late to start programming. There’s still a lot of years left and a lot of time to pursue your dream, whatever it may be. I might suggest you take a look at diveintopython.net. It’s a way to help you get started hands-on.

    I’ve actually written a number of posts about what they’re doing; you can see them at: http://changelog.complete.org/archives/category/technology/children-computing

    Good luck!

    Reply

    Wyatt Reply:

    Yeah thanks! I actually just started an Intro to Programming class and I think that was one of the resources we are going to use!
    And good luck with the kids! I have heard the teenage years can be difficult ;)

    Reply

  7. Grin… you might be on an excellent position to giveME some advice to remember there… any tips?

    Reply

    Wyatt Reply:

    Instill in them the importance of honesty while you still can, never overlook the option of bribes, and remember that we can be very irrational creatures that sometimes need updates and recalibration. But I am sure your two boys will be perfect children. I NEVER have problems with my brother. *sarcasmsarcsmsarcasm*

    Reply

  8. Thumbs up to you! This was a very nice read – it was just what I needed to brighten up this cold and dark winter morning.

    Linux, CLI and xmonad for your two young sons = awesome. You sound like a pretty darn cool father. :)

    Reply

  9. Regarding blocked internet access, are you specifically exempting web access to repositories for apt-get, have a local repository, or something else?

    Reply

  10. “People familiar with the command line — any command line — have a better understanding of computing than those that don’t.”

    That’s because someone who is familiar with command line has obviously studied computing enough to learn the importance and usage of command line and how it was used to build what we have today. It’s comparable to this scenario:

    I want to teach my kids to cook but I don’t want them to use the oven because knowing how fire works and how to make fire was how we learnt how to cook in the first place. So you’ll spend hours and hours explaining how fire works and discussing what are the most efficient ways to make fire while everyone else is learning the best and most efficient ways of actually making the cake. In the end your kids will know how to make a fire but the quality of their cake will be lower because they spent too much time on figuring out how fire works instead of figuring out how to make a tasty cake.

    Reply

    John Goerzen Reply:

    The problem with that analogy is that modern GUIs intentionally hide and even limit access to how things really work.

    To take your analogy farther, it’s like telling someone the only way to make a cake is to use a pre-made mix. They’ll get a cake, but many delicious options will be hidden from them.

    Reply

  11. Today my 3-year old wanted to join me while I was reading through my
    email. And sitting on my lap she started to ask me which keys she could
    press. Obviously she wanted to share my activities.

    Because I couldn’t think about anything better to provide her with some
    reaction to pressing keys, I started vim in an xterm, scaling the font
    size up to very easy readable. And she happily started to type while I
    introduced the to the arrow keys, the dot, and the two different delete
    buttons (“the buttons that eat up letters”). It turned out that the
    ability to produce something on the screen was enough to guarantee an
    hour of excitement).

    She probably did not realise the erratic behaviour of automated line
    breaks, but I wanted to prevent confusion by computer actions without
    active input and set the textwidth to zero very fast. I don’t think that
    this would have been an issue, but I am happy that she didn’t stumble
    upon the strange jumps that would have occurred up and down arrow-keys.
    It would be much more friendly if I could get vim to more directly move
    up and down visible lines instead of logical. There probably is
    something somewhere in some documentation.

    For now: Your article, albeit quite dated, is very inspiring and I think
    I am motivated to give it a try here. I very much like the idea that my
    kid would explore the computer in a way that provides real knowledge
    about that tool instead of being provided with some colourful
    bubblegum-world.

    And she reacted very well when I showed her that it is possible to fill
    the screen very fast by letting the computer do the counting for you.
    The large numbers that the infinite list [1..] displays very fast seemed
    to impress the little girl that delightfully counts all the things that
    she is able to count. (We were later able to count the first ten entries
    of the infinite list (take 10 [1..]).

    Nonetheless, the Haskell interpreter is probably not yet the right tool
    if you are not yet able to read or write syntactical structures. But it
    is never to early to be curious.

    If you want further inspiration, take a look at John Goerzen’s blog
    article on how his kids have been raised by CLI and liked it:
    [The Changelog, I introduced my 5-year-old and 2-year-old to startx and
    xmonad. They’re
    DELIGHTED!](http://changelog.complete.org/archives/7562-i-introduced-my-5-year-old-and-2-year-old-to-startx-and-xmonad-theyre-delighted).
    After all, isn’t shellcoding the biggest text-adventure there is?

    Reply

    MAlf Reply:

    > It would be much more friendly if I could get vim to more directly move up and down visible lines instead of logical.

    :nnoremap j gj
    :nnoremap k gk

    You’re welcome. :)

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *