If only "sudo pick up your toys" were valid syntax.
July 7, 2012 2:14 PM   Subscribe

John Goerzen, an IT development manager in Kansas and a developer for Debian, has been teaching his two sons, ages five and two, respectively, how to use Linux.

Goerzen began with his older son, Jacob, at the age of three, building with him a computer out of spare parts and installing a command-line-only version of Debian. Surprisingly, Jacob took to the Bash shell with enthusiasm, particularly the word "bash". Since then, Jacob has learned how to use power cycling as a troubleshooting mechanism, how to make a steam locomotive with sl, how to do text-to-speech with cw and some shell scripts, and how to IM with mcabber. Most recently, Goerzen introduced a GUI to Jacob, now five, and his other son, Oliver, now two, opting for tiling window manager xmonad as being most familiar to kids used to running a computer with a keyboard instead of a mouse.

Goerzen's reason for introducing his sons to computing in this way is summarized in his most recent post on the subject:

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.
posted by Cash4Lead (91 comments total) 44 users marked this as a favorite
 
My hamster learned Linux
posted by discopolo at 2:16 PM on July 7, 2012 [1 favorite]


Is he going to have to teach them how to shave early?
posted by Apocryphon at 2:20 PM on July 7, 2012


This is the year of Linux on the LeapFrog.
posted by Ian A.T. at 2:22 PM on July 7, 2012 [6 favorites]


Oh my, that's delightful! Thanks for posting.
posted by laconic skeuomorph at 2:25 PM on July 7, 2012


"Have You Tried Turning It Off And On Again?" - I think Jacob could at the very least be a good front-line Windows support person.

This sounds like a great place to be using the Raspberry Pi.
posted by scruss at 2:26 PM on July 7, 2012 [4 favorites]


Awesome. Although in my experience, 2 and 3 year olds act enthusiastic about pretty much anything, at least the early exposure can do something.
posted by DU at 2:26 PM on July 7, 2012 [2 favorites]


Wouldn't the joke be that once they're sufficiently proficient with Linux they'll lose all desire to shave, saving him from ever having to teach them?
posted by onya at 2:29 PM on July 7, 2012 [18 favorites]


My dad attempted to teach me QBasic at the age of 8. It did not go well.
posted by KGMoney at 2:32 PM on July 7, 2012 [1 favorite]


I guess he doesn't want grandchildren
posted by caclwmr4 at 2:38 PM on July 7, 2012 [10 favorites]


Whenever I hear of people using their young children to test their theory of mental development, I get a bad feeling.
posted by charlie don't surf at 2:38 PM on July 7, 2012 [2 favorites]


When it was my job to process, nay, curate tales like this, I despised the "Linux conversion" story because it usually seemed to involve someone getting their computer colonized by a well-meaning nerd spreading the gospel of Freedom and Choice. One of them I remember in particular involved threatening a spouse with withdrawal of all technical aid unless she submitted to Red Hat and, in turn, probably got to become one of the "users" on one of the "boxes" about whose lengthy uptimes he'd be boasting soon enough.

I was braced to not like this because it was similar enough to that to awaken unpleasant memories. But this is not quite like those things, and it's not closing any doors to those children: The dominant OSes are simple enough to pick up by anyone with a sufficiently flexible outlook, so why not start them this way?

I wish I'd tried something similar with my son. I gave him an OLPC obtained from my realtor in exchange for an iPod Touch several years back, but didn't think to steer him to the command line to do anything even though I spend plenty of time there myself.
posted by mph at 2:44 PM on July 7, 2012 [1 favorite]


Whenever I hear of people using their young children to test their theory of mental development

In this case, the theory that children can learn to use computers?

I actually agree more or less with his statement about using the CLI; it's not a 100% thing, but I've noticed that people who've actually used the CLI have a better chance of understanding what's going on with the machine. I work in tech support; give me a user who's used DOS to organize and manipulate files and directories over somebody who is vaguely aware that files go in folders any day.

I really don't see the downside to this.
posted by Pope Guilty at 2:45 PM on July 7, 2012 [7 favorites]


He's having better luck than I am. My two year old ripped all the keys from the EeePC 700 I was saving for him and promptly lost most of them. Just for that I'm going to start him with a language that doesn't have garbage collection.
posted by furtive at 2:48 PM on July 7, 2012 [27 favorites]


My dad attempted to teach me QBasic at the age of 8. It did not go well.

Too bad Scratch didn't exist back then. One kid started that ~8 and now, at age 13, knows multiple languages and thinking of entering Ludum Dare. Another started Scratch around age 11 and decided programming wasn't for him but knows what it's all about.
posted by DU at 2:54 PM on July 7, 2012 [3 favorites]


A cynic would read this FPP and call it one more piece of evidence that Linux is less an operating system and more a religion.

Which I guess I just did.
posted by DoctorFedora at 3:00 PM on July 7, 2012


If he liked the word Bash he should love shebang.
posted by srboisvert at 3:16 PM on July 7, 2012 [2 favorites]


This idea of pushing computer languages on young kids who are still developing their cognitive ability has been festering for decades. Read the quote in that link, it's not a programming language, "it's a philosophy of education." I've been watching this particular philosophy flop since the 1970s.
posted by charlie don't surf at 3:22 PM on July 7, 2012


Please tell me that the ultimate objective of this enterprise is to "expose them to Unix, command-line concepts, shell scripts, and ultimately programming" rather than "wean them from commercial GUIs and convert them to Linux on the desktop, so that they may choose it as their primary OS." Because boy, has that ship ever sailed.
posted by Gordion Knott at 3:24 PM on July 7, 2012 [1 favorite]


Linux on the desktop may not be winning, but all the growth in computing devices is in mobile, its very likely that linux/android devices will outnumber Windows PCs in a year or two.
posted by Lanark at 3:38 PM on July 7, 2012 [2 favorites]


This idea of pushing computer languages on young kids who are still developing their cognitive ability has been festering for decades. Read the quote in that link, it's not a programming language, "it's a philosophy of education." I've been watching this particular philosophy flop since the 1970s.

Ha, Logo. I and two other students were taught Logo on our elementary school's Apple IICs in c. 1984. I think I found it enjoyable and interesting at the time, though I didn't really get interested in computers outside of school until I got a Commodore and learned how to download games from BBSs.
posted by drjimmy11 at 3:41 PM on July 7, 2012 [1 favorite]


I've been watching this particular philosophy flop since the 1970s.

Seriously. Look how little progress computers have made since then.
posted by DU at 4:05 PM on July 7, 2012 [4 favorites]



I wish I'd tried something similar with my son. I gave him an OLPC obtained from my realtor in exchange for an iPod Touch several years back, but didn't think to steer him to the command line to do anything even though I spend plenty of time there myself.


When my kids were younger and pre-literate they did just fine with GNOME and were able to navigate the byzantine menu system to what they wanted by memory and by counting down. At the same time, they found the visual metaphors of a "window" based GUI mystifying and used the mouse like a drunkard (at least initially.) I think GUI's like Sugar are really misguided: kids actually aren't so good at metaphor, they're much better at counting and memorizing. Which is to say that in many ways Xmonad + the terminal is a pretty good cognitive match.

The problem with the CLI is that young kids are terrible typists, hunt and peck doesn't even begin to describe it...
posted by ennui.bz at 4:17 PM on July 7, 2012 [2 favorites]


Look how little progress computers have made since then.

That's not the point. Look at how little progress our educational system has made since then. In fact, I would say it has been regressing.
posted by charlie don't surf at 4:18 PM on July 7, 2012 [1 favorite]


get cps -f
posted by Aquaman at 4:19 PM on July 7, 2012


My father gave me his old (usually somewhat-broken) laptops with MSDOS on them starting when I was about 6 and I have always been fairly comfortable on the command line because of it. When I was a freshman in college I bought the earliest ASUS EEEpc, which came with a shitty Xandros distribution (I installed various other Linux distributions over time). Soon enough, I was on the command line on that, since everything in shitty Linux is harder than it has to be, forcing you to use the CLI to fix or install things that would be very easy on Windows. Thanks to my knowledge from that, I was impressive enough to land one of the "good" student IT jobs, where I improved my skills even further. Now I work in IT full time with Linux, which is great since my intended career didn't really work out and there are a lot more jobs in this.

I also was a jerk when I was 19 and when my jealous sister decided she wanted an EEEpc too, I told her she was too dumb for Linux. My mom said that was ridiculous and got one for her anyway. I also think she learned a lot from the experience and she also got a good college IT job and is pursuing a career in science where any knowledge of this stuff is pretty useful.

Neither of us use Linux as a primary desktop though because we both found that if you do that you spend more time messing around with Linux than actually using your computer to do what you want to do.
posted by melissam at 4:31 PM on July 7, 2012


Neither of us use Linux as a primary desktop though because we both found that if you do that you spend more time messing around with Linux than actually using your computer to do what you want to do.

Dispute: I used Ubuntu for a while when my previous computer's hard drive failed. I wouldn't have switched back except for A. the software problem (there was still a couple of programs I needed that use Windows) and B. Unity. But I say that, if you mostly use your computer for general kinds of tasks like web browsing and word processing, there is no reason not to use Linux. Indeed, it will save you more headaches than it causes because there is very little malware (for whatever reason).
posted by JHarris at 4:41 PM on July 7, 2012


Dispute: I used Ubuntu for a while when my previous computer's hard drive failed. I wouldn't have switched back except for A. the software problem (there was still a couple of programs I needed that use Windows) and B. Unity. But I say that, if you mostly use your computer for general kinds of tasks like web browsing and word processing, there is no reason not to use Linux. Indeed, it will save you more headaches than it causes because there is very little malware (for whatever reason).

That's why it's so great for tablets and phones, but we both use our machines for lots of other more complicated things. We have been debating trying to switch our mother to Linux because she does not do these things, but we think she has become too attached to Windows and would be upset by it.
posted by melissam at 4:43 PM on July 7, 2012


Goridon Knott: [...]rather than "wean them from commercial GUIs and convert them to Linux on the desktop, so that they may choose it as their primary OS." Because boy, has that ship ever sailed.

1. As Lanark notes, mobile devices are very common now, and Android devices will overtake Windows desktops before long.

2. On the desktop Windows is still king. Most other places though Linux beats it easily: mobile, servers, ereaders, embedded systems. All forms of Kindle run Linux. So do Tivos and even some routers.

3. It is worth looking at why Linux didn't overtake Windows on desktops. Arguably, a big part of it was that Microsoft finally got its act together regarding its OS in several important areas starting with XP, and they would have had no incentive to do that if it hadn't been for competition from OSX and Linux. If Microsoft had continued the Windows 95 tree (imagine: Windows ME 4!) instead of going with the NT branch I think its userbase would be much lower now, if only from all the computer people who would have killed themselves from having to work with it.
posted by JHarris at 4:53 PM on July 7, 2012 [1 favorite]


The problem with the CLI is that young kids are terrible typists, hunt and peck doesn't even begin to describe it...

Young kids, nothing. Terrible typing skills are the norm for nontechnical people, and even present in many otherwise technically-capable people.


If Microsoft had continued the Windows 95 tree (imagine: Windows ME 4!) instead of going with the NT branch I think its userbase would be much lower now, if only from all the computer people who would have killed themselves from having to work with it.

The Win95 tree, which is really the DOS tree, was a technological dead-end. Win98 represents pretty much as far as it could be taken. We're seeing another similar event with 32-bit operating systems; their limitations have ensured their replacement with 64-bit systems, just as 64-bit systems will eventually be overtaken and replaced with better tech. Windows NT/2000/XP/etc didn't require competition from OSX/Linux; Microsoft really couldn't go any further.
posted by Pope Guilty at 5:04 PM on July 7, 2012


The non-progress of the educational system is not the fault of attempts to improve computer education. There is a lot of blame to go around, but I can't see how teaching children problem solving—in any medium!—is a negative thing.
posted by sonic meat machine at 5:04 PM on July 7, 2012


We have been debating trying to switch our mother to Linux because she does not do these things, but we think she has become too attached to Windows and would be upset by it.

People who don't "know" computers tend to be afraid of any change at all, because they greatly fear making a wrong move that messes something the hell up. This is arguably a worse problem with Windows now than Ubuntu Linux -- I was called in by my father to his church's computer to figure out where all the icons had gone. Someone had accidentally turned off the icons on the desktop.

With your mother you're right not to make such a chance without checking with her. Show her a machine running Ubuntu with Unity, maybe from off a USB drive on her own hardware. It isn't perfect (I hate it myself), but if she only browses the web it might actually appear simpler to her.
posted by JHarris at 5:06 PM on July 7, 2012


People who don't "know" computers tend to be afraid of any change at all, because they greatly fear making a wrong move that messes something the hell up.

I finally ended up giving my mother an iPad (I had a spare for odd reasons), and it's become her device of choice. Although I've probably put in 100 hours of telephone tutoring with her about it, and she still isn't grasping the basic metaphors and workflow of the device, she finds it much friendlier than the desktop computer in their house. I think largely because this "what if I hit the wrong thing?!?!?" fear is basically gone with an iPad.

Even though I set it up for her before I sent it specifically with a bunch of specific things downloaded that I thought she might like, she's only ever actually launched and used things I've worked with her on. That's a bit disappointing, but at least she's got something she finds to be friendly and not intimidating. It's got to be tough being 70+ in today's swiftly-advancing technological age.
posted by hippybear at 5:28 PM on July 7, 2012


JHarris: Dispute: I used Ubuntu for a while when my previous computer's hard drive failed. I wouldn't have switched back except for A. the software problem (there was still a couple of programs I needed that use Windows) and B. Unity.

I switched a laptop to an earlier version of Ubuntu (maybe 8.04? It was quite awhile ago), and while I didn't like it quite as well as Windows at the time, interestingly, I never bothered to switch back. It worked well enough that I couldn't be arsed to go through all the pain of a Windows reinstall.

I've preferred Linux desktops for working for a long time, because the lack of differentiation between users and programmers is extraordinarily powerful. If I genuinely need to get work done, I always reach for the Unix command line. But that laptop was the first time that I really, genuinely used it as a personal laptop at home, not because of some idealism, but simply because it was too much of a bother to switch back. It wasn't quite as good as Windows, but it was close enough.

It kept improving, and 10.04 was freaking awesome, and then it seems like everyone in the entire Linux universe went fucking insane all at the same time, and decided to go chasing tablets, and completely made it unusable on the goddamn desktop. Current Linux sucks horribly as a desktop. It's much worse than it was even two years ago.

I guess it's the curse of the perpetual amateur you get in open source... once the developers get good, they get seduced into commercial jobs, and the people left have no fucking clue what they're doing, and in their enthusiastic incompetence, decide to reimplement everything from scratch, poorly.
posted by Malor at 5:33 PM on July 7, 2012 [6 favorites]


Agreed on all points, as usual, Malor. And now Windows is doing the same damn thing with Metro!
posted by JHarris at 5:35 PM on July 7, 2012


something something "Linux" something "beard" something "people in low jobs are grody" something
posted by This, of course, alludes to you at 5:44 PM on July 7, 2012 [1 favorite]


Goerzen household, 2026

Jacob: Yeah well I have FRIENDS dad I just want to HANG OUT why do you always do that

John: Don't you just walk away like that... JACOB

Jacob: Yeah and guess what I'm INSTALLING WINDOWS RIGHT NOW 98% DONE

*door slams*

*catstep played at excessive volume rattles walls*
posted by passerby at 5:45 PM on July 7, 2012 [3 favorites]


I guess it's the curse of the perpetual amateur you get in open source... once the developers get good, they get seduced into commercial jobs, and the people left have no fucking clue what they're doing, and in their enthusiastic incompetence, decide to reimplement everything from scratch, poorly.

Hmm. That wasn't what happened with the GNOME 2 decline: That was driven by alleged professionals on the Red Hat and Sun payrolls, armed with usability studies and everything.

I think once an OS is genuinely entrenched in the business world, you get a sort of House/Senate effect. Business customers want stability and they fight any restlessness on the part of their vendors. There's no such stabilizing dynamic in the Linux desktop world, and even if the installed desktop base rose above 15 percent you'd have to subdivide that slice of the pie among a number of popular desktop environments. So Linux users are largely hostage to the restlessness of Linux desktop developers because there's no corporate constituency large enough to put the brakes on the change for its own sake. See also that Firefox developer's essay making the rounds, which describes that tension between developers and users.
posted by mph at 5:52 PM on July 7, 2012 [1 favorite]


And lest I be accused of being all "rah rah total software stasis through corporate stodginess," IE is a source of personal professional suffering, so I get the downside of the dynamic, too.
posted by mph at 6:00 PM on July 7, 2012 [1 favorite]


I've always sort of hoped that Scratch would evolve in to a sort of "kids shell" that lived at the heart of the OLPC's interface like acme does in Plan 9.
posted by ethansr at 6:14 PM on July 7, 2012


So Linux users are largely hostage to the restlessness of Linux desktop developers because there's no corporate constituency large enough to put the brakes on the change for its own sake. See also that Firefox developer's essay making the rounds, which describes that tension between developers and users.

The odd thing is that underneath the various Linux GUIs is a CLI environment which (depending on which shell you choose) has been basically unchanged for decades. At least not in any sort of backwards-compatibility-breaking way; things are occasionally added, but in very cautious, evolutionary ways.

If some distro decided it would be fun to break bash in an equivalent way that they've broken the GUI -- basically force every user to suddenly relearn everything they used to know how to do, just for the fuck of it -- there'd be nerd rage like you've never seen (at least not since Firefly was canceled). And this extends to other tools as well; some of the most widely used development tools are also the ones with the least UI glitz.

So it's pretty clear to me anyway, that distro developers may love clean-slate reimplementations of shit that they don't really care about, but are just as conservative as any corporate Excel jockey when it comes to the stuff they actually depend on to get their work done. It's a pity that they don't have a bit more care as to the effect their "improvements" have on downstream users, but I guess that's sort of the price you pay for free.
posted by Kadin2048 at 7:10 PM on July 7, 2012 [5 favorites]


but are just as conservative as any corporate Excel jockey when it comes to the stuff they actually depend on to get their work done

The great, painful irony is how their efforts affect the users who are trying to get things done. There is an explicit assumption going on now that "Computers are for Liking things on Facebook while at a cafe, lets build interfaces that make that even FUCKING EASIER!". Of course, the developers never add "Share on Tumblr!" cruft to gcc, or remake vim to be tablet friendly, because, well, those are real tools for us special people...
posted by Jimbob at 9:56 PM on July 7, 2012 [1 favorite]


I've preferred Linux desktops for working for a long time, because the lack of differentiation between users and programmers is extraordinarily powerful. If I genuinely need to get work done, I always reach for the Unix command line.

And this is precisely what is wrong with the Linux world. That is exactly backwards, there is no differentiation between programmers and users. This would be fine if everyone's job was programming, but eventually, someone has to do the actual work. Gushing about Linux and the command line always strikes me as somewhat like a guy who gushes, "When I want to make a wrench, I start with a hammer and anvil!" They are always using tools to build tools, instead of building things with tools.

If I genuinely need to get work done, I usually grab a pencil and paper.
posted by charlie don't surf at 10:42 PM on July 7, 2012 [1 favorite]


One of the thing that really pisses me off about that, Kadin, like with the big bait-and-switch with KDE 4, where they lied about it being ready in order to trick people into testing it*, is that they don't realize that their users are also their providers, in many ways. People suffering with a fucked-up KDE are people that can't be working on, say, Samba, or Apache. It's just this fundamental disrespect for everyone that's not on your team, and all the desktop teams seem to have this disease.

The command-line jocks, however, mostly don't. As you say, changes there happen very incrementally, and with a huge amount of effort toward backward compatibility. But people? Who the fuck cares about people? Never mind that they're same people writing the tools the KDE team uses to develop KDE.

Sigh.

Well, what they actually did was say KDE 4 is Ready! and then put the disclaimer that it wasn't actually ready in fine print. They were consciously deceptive in calling the release KDE 4.0, instead of what it was, an early alpha release. This was a deliberate decision, explicitly to drive uptake, because they didn't feel they had enough testers. It was manipulative and assholish, but not quite a lie. However, I am totally comfortable with saying the KDE team is a bunch of lying jerks in the body text, and then slightly modifying the claim down here, where you probably won't bother to read it.
posted by Malor at 10:44 PM on July 7, 2012 [4 favorites]


And this is precisely what is wrong with the Linux world. That is exactly backwards, there is no differentiation between programmers and users. This would be fine if everyone's job was programming, but eventually, someone has to do the actual work.

This is not how it works any more. I never wrote a source file or a script when I was stuck with Ubuntu a couple of years ago, so I'm going to say you are mistaken, probably going by reputation more than timely experience. If you are going by experience I'd like to hear the circumstance.
posted by JHarris at 11:12 PM on July 7, 2012


Don't look at me, I'm not the one crowing over how I get real work done on the command line. When I really need to kick ass on the computer, it's usually in Adobe Illustrator, but for anything complex, I usually start with a pencil sketch and scan it.

There is no linux program that is equivalent to Illustrator. And there sure as hell isn't a command line method equivalent to Illustrator. Hell, most people are lucky if they can get their scanner to work in linux.
posted by charlie don't surf at 11:34 PM on July 7, 2012


That's nothing to do with the OS -- it's inertia from market pressure. Although if you wanted, you could probably install Illustrator in WINE or a VirtualBox virtual machine. VMs are slowly bringing us a world in which it doesn't matter so much what the host OS is.
posted by JHarris at 12:44 AM on July 8, 2012


Yes, that's right, charlie - people who do graphical stuff with Illustrator and a pencil are actually working, whereas anybody who moves words around for any reason is just a programming hobbyist who should get back to work doing something real, or at least stop bothering the people who do. Also, there is no way a command line could ever help a person manipulate graphical documents, and AutoCAD is not a thing that exists. *eyeroll*
posted by koeselitz at 12:53 AM on July 8, 2012


charlie don't surf: "This would be fine if everyone's job was programming, but eventually, someone has to do the actual work."

I mean, can you just reread this sentence a few times and think about how dickish it sounds?

"Gushing about Linux and the command line always strikes me as somewhat like a guy who gushes, 'When I want to make a wrench, I start with a hammer and anvil!' They are always using tools to build tools, instead of building things with tools."

As someone who spends every working day on a command line, maybe stop mouthing off about how useless it is when you really seem to know nothing about it.
posted by koeselitz at 1:00 AM on July 8, 2012 [2 favorites]


This is not how it works any more. I never wrote a source file or a script when I was stuck with Ubuntu a couple of years ago, so I'm going to say you are mistaken, probably going by reputation more than timely experience. If you are going by experience I'd like to hear the circumstance.

What I mean is that the OS itself has no bright line between users and programmers. In Windows, you have to more or less decide I'm Going To Be A Programmer, and then go download an official Big Package to do this, potentially spending a lot of money, and then sink a huge amount of effort into Officially Writing Your Program.

Linux isn't like that. You start programming right from the bash shell, often without even realizing it. Even a simple pipe of one command into another is a baby step in that direction, and you can arbitrarily get more complex. Bash is a fully functional language, all by itself, and you can write complete programs by just typing them in, live. Or you can get more sophisticated, and write everything down into a script, and lo and behold, you've just written your first permanent program.

If you don't like bash, you can use any scripting language you prefer, and by embedding #!/bin/whatever as the first line, the system will know to run that program to interpret your script. So scripts you write integrate themselves seamlessly into your environment. It doesn't matter what language you use. Use bash, use Python, use Ruby, whatever you like.

And then you can get into more sophisticated programming, perhaps making and compiling executables with a C compiler, but this can start pretty darn simple, and then get as complex as you want it to. And those end up integrating into your shell exactly like the utilities you scripted; they all run the same way. All languages are first-class citizens.

There's no bright line. There's no Rubicon to cross to officially 'become a programmer'. In Unix, everyone is a programmer, all the time. Some people take heavy advantage of that, many ignore it almost completely. But it's all within easy reach.
posted by Malor at 1:04 AM on July 8, 2012 [1 favorite]


This would be fine if everyone's job was programming, but eventually, someone has to do the actual work.

Gee, charlie, you're awfully lucky those numbnuts at Adobe happened to uselessly fuck around at the command line and miraculously come up with Photoshop, where all real work happens.
posted by Malor at 1:08 AM on July 8, 2012 [3 favorites]


Of all the great things about the unix environment that Malor listed, I think the best is the one he didn't mention -- the documentation. Anybody who has looked at both the win32 api and the unix/linux man pages knows how much better it is on the open-source side (although IME linux is a bit less spectacular compared to BSD/traditional UNIX in this regard). It's a wonderful culture and approach to computing.
posted by junco at 1:15 AM on July 8, 2012


Not entirely true. In windows you can do HTML, JavaScript, batch files, and Windows Scripting Host has shipped with every version of windows since Windows 98. But yeah, you do have to make a choice to go download a C compiler. The interesting thing is plenty of corporate VB guys started doing VBA when they just wanted to automate Office and migrated to VB and eventually to C#.

But really, you need to make a choice to use Linux. A much bigger decision than deciding to download Visual Studio to mess around with.
posted by Ad hominem at 1:51 AM on July 8, 2012


Dunno man, MSDN is crazy thorough.We are only talking about Win32 here, not even .NET but Look at Win32 functions by Category. Judging solely by software written for it, including viruses and other programs that rely on a high degree of understanding quirks and gotchas, Win32 is probably the widest understood API.

Unix traditionally has had stuff like Magic Garden Explained and Lions' Commentary on Unix but System V of yore has little resemblance to modern Linux. Nowadays, I don't know where I would turn to learn anything about the Kernal API except a mailing list.
posted by Ad hominem at 2:07 AM on July 8, 2012


or remake vim to be tablet friendly

As a die hard vim user, I'd love this. vim is, in a way, implicit in the concept of a keyboard and a monitor, or at least modal editing is. How would an editor look like that is derived in the same spartan way from the touchscreen?
posted by dhoe at 2:13 AM on July 8, 2012


Ad hominem: But really, you need to make a choice to use Linux. A much bigger decision than deciding to download Visual Studio to mess around with.

Remember, the context here is kids, not adults with pre-existing habits and software. Put a kid on a Ubuntu 10.04 box, and you'd almost certainly eventually have a kid that knew some programming.

Put that same kid on a Windows box, and you end up with a kid that maybe knows networking, GUI administration, and basic troubleshooting, but can't program. The scripting languages tend to be sandboxed into their applications; they're not general-purpose tools the way they tend to be under any of the various Unices. All languages on Unix are just about the same, in terms of how they're treated by the OS and other applications, so you can usually just slot whatever you want, wherever you want.

junco: I think the best is the one he didn't mention -- the documentation. Anybody who has looked at both the win32 api and the unix/linux man pages knows how much better it is on the open-source side

Well, I'm only a light programmer... I write some fairly sophisticated scripts, not really Real Programs, but my experience is that the MSDN help system is amazing. When I've had questions, I've always been able to get absolutely exhaustive, authoritative answers from that source.

It's easy to find documentation on stuff in the open source world, but that documentation is often ten years old or more. Ancient crappy documentation is just as present in Google searches as anything up to date. Worse, many documents don't even HAVE dates, so determining when they were written, and if they still apply, can be difficult. Lots of people will write great docs for something, and then move on with their lives, leaving them to bitrot. And, wow, do they ever. There are so, so many crappy, ancient FAQs and HOWTOs floating around... they were great in 1998, but they're still coming up in searches today.

One of the worst bits is that many of the FAQs and HOWTOs are designed to work directly with the original command-line tools, and have no idea about the modern GUI tools that distros like Ubuntu use. But then the GUI tools have really shit documentation, so I've found myself stuck with having to do things from the command line simply because the GUI tool wasn't explained well enough. That's frustrating. All the sophistication in the world doesn't matter if the user doesn't even know what the program does.

You're right that BSD is much better.... docs are a major focus for them, nearly as important as code, so you can trust their man pages and HOWTOs. Unfortunately, BSD is a relatively small force compared to the sloppy Linux juggernaut, and their infrastructure is far more primitive.

Right up until 2010, I was getting happier with the Linux desktop every year. And I am so frustrated that we're back in freaking 2000 again, with brain-damaged desktops that look like crap and feel worse in use. GNOME 2, as tuned by Canonical, was bloody fantastic, and every distro I've tried, including Ubuntu, is offering a shit sandwich to replace it.

It just infuriates me. After fifteen years of effort, they finally had it just about right. They finally had Linux knocked into enough shape that I was thinking very seriously about putting my mother on it. I was really and truly and honestly recommending it for some use cases, not because of ideology, but because it worked just about as well, ran on very cheap machines, and was far more secure than Windows, if only because it was a small market. If you wanted something safe, and Macs were too pricey, Ubuntu was a great choice.

And then they threw it all out the window to go chase tablets. Morons!
posted by Malor at 3:24 AM on July 8, 2012 [5 favorites]


Hey, these blog posts are interesting and well-written. Goerzen is the guy who wrote offlineimap. The kid named his computer "grandma-marla". I'm going to try xmonad and some other new (to me) software today. Thanks for posting this.
posted by scatter gather at 6:41 AM on July 8, 2012 [1 favorite]


I appreciate the utility of a good wrench. I can even appreciate the craftsmanship of a good wrench. But a wrench is a wrench is a wrench. And giving a Snap On professional wrench set to 3 and 5 year old kids isn't going to do a hell of a lot for them, if they haven't yet developed the muscles and coordination to actually turn a wrench. It might be appropriate to start out simpler.
posted by charlie don't surf at 7:04 AM on July 8, 2012


True. But, fortunately, computers aren't wrenches.
posted by Malor at 7:15 AM on July 8, 2012


The Unix command line is not a wrench. It's a philosophy. For example, let's say that you need to find some text in files. In Windows, this is an utter pain in the ass: let's load all the files up in some GUI utility (that I downloaded especially for this purpose!) and do the search. In Unix, I type:
grep -R "ignorance is bliss" .
And it finds all of the matches. There are too many matches to see on one screen?
grep -R "ignorance is bliss" . | less
There are a ton of additional things that you can learn, and you can use the computer functionally with only a few—but adding one here and one there will help you make your computer use more effective and more efficient. Knowledge accrues, and is fundamentally reusable. I only just recently found out about CTRL-R at the Bash command line, for example. Never used it, never felt the need because I didn't know it was there; but now I use it every day, multiple times a day.

This is the core of being a computer user as opposed to just a user: learning to apply the computer to problems you define rather than being limited to the problems that someone has defined for you.

Here's a fun example. I know how to use Photoshop and Illustrator; am I a great talent? No, but I'm competent. Do you know where I go when I need to perform a bulk operation on a large number of images? ImageMagick. Precisely because I'd like to do the actual work without screwing around with a painful GUI. I can do it once, write down how I did it, and then do the same thing from now until eternity via copy and paste.
posted by sonic meat machine at 7:25 AM on July 8, 2012 [1 favorite]


MetaFilter: the same thing from now until eternity via copy and paste
posted by hippybear at 7:55 AM on July 8, 2012 [2 favorites]


¿Quien es mas macho? I'm just gonna sit here on my girly little mac and let you big dogs duke it out.
posted by evilDoug at 8:47 AM on July 8, 2012 [1 favorite]


I'm just gonna sit here on my girly little mac and let you big dogs duke it out.

There's a whole Unix environment under the hood of a Mac. Most Linux distributions offer more software more easily, but Linux people can make themselves at home on a Mac with relative ease. You see a lot of MacBooks at open source developer conferences (like OSCON ... coming up! Anyone here going to be there?).

I was Mr. Linux for a while in the late '90s, early '00s, but I got sick of it during the GNOME 1 -> GNOME 2 transition, back when it felt increasingly like the Linux world was trying to go either full Unix paleo or off in the direction of condescending and brittle desktop environments that hindered advanced users while keeping new users dumb.

A fellow Unix nerd popped open the shell on his brand new snow iBook, pointed out that it could also run X Window, and that was it for me. I got my own Mac, built a few must-have apps on it (mutt, the GIMP), and didn't look back. Maybe seems like a weird decision to make, since the Linux desktop people were casting hungry glances at OS X and saying stuff John Gruber eventually and rightly ripped them for re: usability and design, but the difference was OS X had a Unix heart beating in there for me to fiddle with, and the desktop experience was more smooth than anything happening on Linux desktops. I got to play with the things I wanted to play with and just stop fiddling with the things I didn't want to fiddle with. In some ways, OS X's really strong opinions about the desktop experience gave me permission to quit fighting with it, learn to appreciate its relative sturdiness compared to GNOME's unholy mishmash of graphical glitz and exposed wiring, and get on with my day.

Also, even if Macs were not particularly well provisioned, I personally wouldn't use "girly" to describe an underpowered piece of technology, even ironically.
posted by mph at 9:03 AM on July 8, 2012 [1 favorite]


So what Unix/Linux/BSD distribution would you recommend for someone that wants to learn the Unix philosophy and shell? I've been using Ubuntu, but it's very slow on my older machine. I'd really prefer to lose the GUI altogether, and work solely from the command line (except when I'm in a web browser). I have a very strong preference for systems that are stable, that don't change much over time, and that are very well documented. Any suggestions?
posted by gd779 at 9:17 AM on July 8, 2012


gd779, there is almost no reason to leave Ubuntu at this time; its package management, if nothing else, is vastly superior to its nearest competitors. Your primary option is to move to a version of ubuntu which uses a lighter desktop environment—xubuntu or lubuntu. These distros use xfce and lxde, respectively, which are lighter-weight than the behemoths that KDE and Gnome have become, although xfce seems to be inheriting a lot of the community of people who liked Gnome 2 and hate "Unity."
posted by sonic meat machine at 9:25 AM on July 8, 2012


I put Xubuntu on an eeePC several years ago. It was great for an underpowered machine like that, and it mostly got out of my way.
posted by mph at 9:58 AM on July 8, 2012


True. But, fortunately, computers aren't wrenches.

And metaphors aren't just words.

Here's a fun example. I know how to use Photoshop and Illustrator; am I a great talent? No, but I'm competent. Do you know where I go when I need to perform a bulk operation on a large number of images? ImageMagick. Precisely because I'd like to do the actual work without screwing around with a painful GUI. I can do it once, write down how I did it, and then do the same thing from now until eternity via copy and paste.

ROFL. Photoshop: Actions>Start Recording..Stop Recording. File>Automate>Batch. Or if you want to create a drag and drop process in the GUI, File>Automate>Create Droplet. You can create a "droplet" and just drag thousands of files onto it.

I've used ImageMagick and it has about .1% of this functionality and is much harder to use. I have a folder with about a dozen droplets for common tasks like resizing or format conversions. You have been making your life unnecessarily complex.
posted by charlie don't surf at 10:31 AM on July 8, 2012


Yeah, I've done macro recording and photoshop batch automation. I always found it took much longer to do any batch processing than ImageMagick. When I was a graphic designer, I also had a set of scripts that did this for me, so that I could do:
~/scripts/process_camera_dump
It did everything for me, copying everything from my camera to a dated folder, changing to that folder, and running ImageMagick over that folder to generate thumbnails, plus creating an HTML file with all of the thumbnails and their EXIF data. It was very convenient, because I needed to archive and catalog my photographs for my organization.

I'm not saying Photoshop is a bad program. I'm saying that the Unix philosophy is to allow you to chain tools together as you need them, rather than relying on someone else's idea of what your problem is; and that's a fundamentally more powerful form of computer use than you might think. By no means does it get in the way of "real work."
posted by sonic meat machine at 11:20 AM on July 8, 2012


I usually hear this line of reasoning from diehard GIMP users who don't have professional graphics experience. So let me describe an actual real world batch processing job I did once.

I worked with a pro photographer who was expert at retouching but never could figure out batch processing. He had about 200 extremely high rez scans of 4x5 negatives, heavily retouched, about around 120megapixel greyscale TIFFs. They were produced for printing on very large inkjet prints, like 32" by 60" with a custom sepiatone effect I created on the RIP. Now a publisher wants to print them in a book, and has suggested 2 Pantone sepia colors that work well with black to make tritone color separations. They want him to FedEx a hard disk with tritone color separations downsized to book size, and lower rez jpeg proofs. A sample image is loaded, the Pantone tritone is set up, and the Pantone ink curves manually adjusted until the tritone looks similar to the large format prints. Save the file, this was all recorded as an action, then made into a droplet. Then a second recording of turning that image into a jpeg was created. All the files were dropped onto the droplet, let it run overnight, then the photog dropped them all on the jpeg droplet in the morning.

I walked him through on the phone. Please tell me how you would do that on a command line with ImageMagick. Do not omit the step similar to when I said, "Ok, now move the sliders to adjust 2 of the 3 tritone ink density curves until you see a little tonal separation between the face and the background tones. Leave the black as it is, drop the slider on the right side of the curve for the Pantone yellow to about halfway, and the one on the Pantone brown even more, and make the curves bow down in the middle a little bit. When it looks good, click OK."

This is routine stuff for graphic arts pros. I don't care how many CLI tools you can pipe together in Unix, no command line can do the interactive visual changes, and linux has a religious prohibition on licensing of commercial graphics standards like Pantone colors.

But it is probably not appropriate to put this in the context of professional work just yet, since we are talking about teaching CLI to little kids. We are talking about new educational philosophies, not GNU religions. Some kids learn visually, some learn better with words, and giving visually oriented kids a syntactically oriented text CLI makes them rely on someone else's idea of what their problem is. I am also not convinced that it is useful to teach kids linear thinking as required by stepwise CLI tools, when there are already tools that allow them to intuitively manipulate many variables at the same time (like those tritone curves I mentioned). But most importantly, it is nearly impossible to tell what sort of tools are most appropriate for kids aged 3 to 5, who still have incompletely formed language and motor skills.

My general opinion is that instead of giving computer gadgets to young kids, you should give them a bicycle.
posted by charlie don't surf at 12:28 PM on July 8, 2012


I never said that ImageMagick is good for everything; and, as I noted, I was a graphic designer. I've used Photoshop, Illustrator, and InDesign extensively. However, for the task that I had to do multiple times per week—moving my images from a camera card to my hard drive, generating thumbnails, and creating an HTML catalog of the thumbnails—ImageMagick was perfect. Similarly, I needed to generate a large catalog containing dozens of tables of text about once every three months. This was a task that took my predecessor about two weeks on every iteration. I did this in about one working day, most of which was taken up by preparing and placing photographs in the layout where desired, because I understood text processing tools enough to convert data to an InDesign layout.

That said, having communicated how to do things over the phone before, let me just say how much nicer it is to be able to just email someone a command versus trying to walk them through doing something in a GUI. Any time that's not possible, I sigh in dread: what is "a little" tonal separation? What does it mean to "bow down in the middle a little bit?" What if that photographer's monitor isn't correctly calibrated?

Learning algorithmic thinking is something that has allowed me to progress rapidly in my career despite an unrelated degree. I can apply problem solving skills that I learned because I had a very early start with programming (I was 9) to a wider variety of problems than you would imagine. This foundation meant that I could stand out when I was working a low level support job; that I could be orders of magnitude more productive than my predecessor in my graphic design job, and that I took on more challenging projects as a result; that I could parlay those challenging projects into higher-paying jobs in the IT industry; and that I can become productive on a new project very quickly within the industry, which is very important. I applaud the father in the original post for giving his children a foundation for skills that are valuable and largely untrainable. And I view the denial of the value of algorithmic thinking in our technological world as fundamentally naïve.
posted by sonic meat machine at 12:59 PM on July 8, 2012 [3 favorites]


charlie don't surf: "My general opinion is that instead of giving computer gadgets to young kids, you should give them a bicycle."

Then why in the world didn't you just say that, instead of wasting pages and pages of text by insulting everyone here and trying to troll us into a gimp vs photoshop or imagemagick vs photoshop argument? Geez.
posted by koeselitz at 1:45 PM on July 8, 2012 [3 favorites]


It's not an ImageMagick vs. PS argument, it's an analysis of child development of visual vs. algorithmic thinking. I decided to throw in motor skill development, and also if your kids stopped sitting around playing games on their computer and were out riding their bikes with other kids, they would be developing both their motor and social skills.

Hey, do whatever you want with your kids, they're not my kids. But remember, some of these kids are going to end up as your cardiac surgeon and your airline pilot. Those are not necessarily good situations for linear, algorithmic thinking.
posted by charlie don't surf at 1:55 PM on July 8, 2012


Don't let your kids learn to use a computer! They will be socially inept and physically clumsy and only able to think linearly!

Seriously? Are you even reading these words?
posted by sonic meat machine at 2:11 PM on July 8, 2012 [3 favorites]


They might even be able to develop sufficient logical skills to detect a Straw Man like yours.

When I was about 12, my first exposure to computers was with keypunch machines. I completely sucked at that until I took a year of typing classes in Jr High, to develop my motor skills.

Then I got some limited access to an IBM/360 via an IBM 2471 terminal. It had this new thing "Timesharing" and you could interact with it by typing at this Command Line thing. All the adults were excited about it, but I thought it was really boring. I used it anyway, because that was all I could get.

Then I got access to a PLATO IV terminal. It had graphics and a touch screen, and best of all, it had content created not by computer scientists, but by professors with degrees in Education that wrote content specifically designed with consideration of the cognitive development of young kids like me. That's when I got hooked. And their math education materials were the first things I ever saw that allowed me to freely develop my abilities, at my own pace. Those were graphics programs in geometry, algebra, etc.

I would hope that after 40 years, kids would have access to better computer systems than what I started learning on. But apparently they do not, if their parents are going to push a CLI system on them. I am disappointed to see adults promoting such retrograde ideas that were no longer state of the art, even before they were born. But if you want to experiment on your kids, and pretend it's the 1970s all over again, go ahead. I suspect there are parents today who insist their kids learn math using a slide rule instead of a programmable calculator.
posted by charlie don't surf at 2:35 PM on July 8, 2012


charlie don't surf, isn't it possible that there exist children who prefer the CLI? Your assumption that every single child in the whole world is a graphical, visual learner precisely like you were seems a bit off-base to me.
posted by koeselitz at 2:40 PM on July 8, 2012 [1 favorite]


Also, this whole conversation you've assumed that any child who uses a CLI must have had it forced upon them by a behaviorist parent. It seems to me that that assumption is unfair, to say the least.
posted by koeselitz at 2:41 PM on July 8, 2012 [1 favorite]


Also, this -

charlie don't surf: " I am disappointed to see adults promoting such retrograde ideas that were no longer state of the art, even before they were born."

... seems quite beside the point. Didn't you just say kids were better off with bicycles than computers? And now the CLI is bad because it's supposedly not "state of the art"?
posted by koeselitz at 2:44 PM on July 8, 2012 [1 favorite]


The thing is, charlie, your formative experiences with the "boring" command line are meaningless, because your imagination was never captured by computers themselves, and that's fine. Nobody is in favor of forcing their children to become programmers. However, computers are such a major part of our world that understanding them is very important; and you can't understand computers unless you interact with them at a level below the consumer software that programmers write for you. You can do that with a GUI, of course: download Python and PyGame and go to town... but the growth isn't as organic and natural. You have to make a distinct and intentional effort. The CLI is the gateway drug: I want to do x. How can I do that? Instead of being a set of independent walled gardens, like GUI software—where your hard-won knowledge of Photoshop is useless if you try to use the GIMP—you can actually make the computer do something, and that's what I loved about it from when I was nine until now.

As for "retrograde" vs. "state of the art," well, there are vast arrays of state of the art programs and services which are driven, behind the scenes, by the command line. Millions of users, billions of requests. This is where consuming software products versus using the computer comes in: a computer is a tool for problem solving, and the interface is just an abstraction for that. It's just that adding abstraction also reduces capability.
posted by sonic meat machine at 3:06 PM on July 8, 2012


The thing is, charlie, your formative experiences with the "boring" command line are meaningless, because your imagination was never captured by computers themselves, and that's fine.

That's not true at all. I was fascinated by computers, we studied algorithms and wrote code on paper for weeks before we were ever allowed to run a program on the IBM/360. Back then, accessing any computer was a total pain in the ass. I will show you the very first computing device I ever used. It is a "mark sense card" and you filled it out with a #2 pencil.

>Instead of being a set of independent walled gardens

Oh there you go with the religion again.

Interfaces are abstractions, but they are useless if you don't understand what you're abstracting. My Photoshop and Illustrator skills were mostly learned in an actual darkroom and in mechanical drafting and perspective drawing classes. I have a BFA degree from an Art School, and studied these subjects years before there ever was a Photoshop or Illustrator app. Do you want to see what computer graphics was like back then, when they were written on the command line? Have you ever written graphics apps in assembly language? What a waste of time.
posted by charlie don't surf at 3:27 PM on July 8, 2012


An alternate use for CLI programs: I have a Google Docs/Excel file with about 700 song names with artists. I need to download their respective videos from YouTube, and strip the audio, transcoding it to MP3 if needed (Not all videos are available in all formats). I can do this manually using JDownloader to handle the download and the transcoding, and it's even pretty quick from having to do it entirely by hand. But that's still a few hundred videos to search for manually.

Or, I can write up a quick script in Python and Bash, and it'll automatically run through them all. Advantage: I know more about automating YouTube downloads, and now I have a script that I can reuse later on.

I first learned how to use computers by going online with Prodigy and Compuserve on Windows 95, and some DOS prompt manipulation so that I could load up Magic Carpet. I only really started learning about CLI as a method of doing things when I was given an old business computer without an internet connection, and told "You can figure out what you want to do with it from there". I read about Ubuntu somewhere, installed it on my own, and learned about dependencies in trying to install programs by copying down the missing requirements, going over to the computer with internet, manually downloading them, and repeating the process.

Nobody forced me to use command line tools. I saw that they gave me options beyond what pre-packaged GUI programs offered me. And that state of exploration, versus consumption, ended up shaking my interest from biology into computer science.

And kids now have even better options than I had. I learned programming with my TI-84, and later Project Euler and the Python interpreter. Now there's Khan Academy, practically limitless tutorials, things like PyGame and Scratch... Every computer comes with a JavaScript console. And it's a short leap from learning CLI programs to 'programmatic thinking' as it's being called now. GUIs don't teach that yet. There's been a lot of work done at trying to resolve this. Google has one that's interesting. But at its core, it's a shell for JavaScript or another textual language.
posted by CrystalDave at 3:32 PM on July 8, 2012 [4 favorites]


It doesn't matter what you studied, or when; you weren't fascinated by it, otherwise your attitude would be different. I'm also not conflating graphical skill and graphical utilities. I honestly doubt that you are even understanding what I'm saying. What does writing graphics in assembly language have to do with anything? Who even mentioned assembly language? I mean, sure, programmatically generated graphics are great (and beautiful, in the case of procedurally generated virtual environments), but they don't have anything to do with the topic at hand and certainly aren't written in whatever benighted programming language you are picturing.

What I'm saying is that giving kids a lower-level experience with the computer, including a CLI, will teach them to use the computer more than giving them a GUI will; and, if they have the interest and disposition, will lay the groundwork for lifelong learning, problem solving, and maybe even a career. This will not stunt them in any way. It is purely positive. If there is a cost, it's in time they spend watching television and playing video games.

I don't know why this is such a subject of hostility. Do you think, somehow, being the person who might potentially create a program like Illustrator (or Netflix, or Metafilter, or any of a hundred thousand other interesting programs and services) is somehow inferior to being the person who uses that program or service? I know I've made more money off knowing how the computer works than I could ever have hoped to make from using someone else's tools to do something.
posted by sonic meat machine at 3:41 PM on July 8, 2012 [2 favorites]


Oh there you go with the religion again.

Stop that, it's stupid, condescending, and gratuitously insulting, and it's completely free of any content or improvement to the thread. "There you go again" is vicious and needless, and comparing having an opinion to religion (with the implication that one's opinion is thereby invalid) is stupid and inane.
posted by Pope Guilty at 5:37 PM on July 8, 2012 [5 favorites]


My Photoshop and Illustrator skills were mostly learned in an actual darkroom and in mechanical drafting and perspective drawing classes.

That's great and all, charlie, but you wouldn't even have Photoshop as a tool if it weren't for all those command-line jocks. The process of making tools is at least as important as using them.

You are very fortunate that they were able to use their verbal, rational skills to create tools that let you express your nonverbal ones. It's quite likely that many of your nonverbal skills would never have found expression at all without the amazing tools that these guys created. In a world where art was really difficult to do and inaccessible, locked behind expensive and fiddly materials like oil paint and canvas, would you ever really have developed as any kind of artist at all, much less a graphic professional? Or would you be off digging ditches somewhere instead?

Instead of accusing the programmers of not doing real work, and scorning them as somehow being lesser than you are, you should be on your knees thanking these guys for saving you from the goddamn salt mines. Many of the professional skills you talk about with such hauteur wouldn't even exist without the tools they invented.

These guys you're scorning have made your life immeasurably better, and maybe they made it possible in the first place. But all you can do is sneer.

It makes you look very, very small. And terribly ignorant.
posted by Malor at 6:16 PM on July 8, 2012


Oh, and:

Have you ever written graphics apps in assembly language? What a waste of time.

Well, it's a goddamn good thing for you that somebody did.
posted by Malor at 6:18 PM on July 8, 2012 [1 favorite]


So what Unix/Linux/BSD distribution would you recommend for someone that wants to learn the Unix philosophy and shell? I've been using Ubuntu, but it's very slow on my older machine. I'd really prefer to lose the GUI altogether, and work solely from the command line (except when I'm in a web browser). I have a very strong preference for systems that are stable, that don't change much over time, and that are very well documented. Any suggestions?

Ubuntu is a fine and good basis for such a system. I'm in one of my periodic see-what-else-is-out-there phases, and, having given Arch and Debian Unstable a spin, have concluded I'll be going back to plain Ubuntu. Ubuntu's maintainers are committed to providing 5 years of support for the current release, so stability and not changing much over time are sewed up. My only regret is that their homegrown init daemon, upstart, is looking likely to be a dead end, with the rest of the Linux world anticipating moving toward systemd. Nothing's perfect.

You can install a "command-line-only" system from the Ubuntu Alternate Install CD, and then easily add, e.g., rxvt-unicode-256color (terminal emulator), epdfview, xorg, firefox, chromium-browser, xscreensaver, and you've got a million choices of window managers, many of which couldn't rightly be said to have a GUI at all. I've been using one of these for years, ratpoison, though I recently dallied briefly with i3 and subtle and am now trying newcomer herbstluftwm. Drop me memail if you want to talk specifics.
posted by Zed at 1:29 AM on July 9, 2012 [1 favorite]


There's another name for 'command-line Ubuntu' -- it's called 'Debian'.

Debian is the distro that Ubuntu is based on. The primary focus of Debian is on stability, and ease of maintenance and administration from the command line are close seconds. Ubuntu basically tarts it up -- the default Debian desktop is kind of ugly, and for a long while, the Ubuntu desktop was far better, looking much more professional. It sacrificed a fair bit of stability and ease of command-line usage, in exchange for a vastly improved desktop. For years and years, I recommended Debian on servers, and Ubuntu on the desktop.

But then they did Unity, which is shit. As a desktop, Ubuntu no longer offers that much over basic Debian, and has a number of drawbacks, primarily a constant flood of patches and poor overall reliability. That's fine for a desktop, but not so hot for a server.

If you're looking for a primarily command-line-driven OS, one that doesn't require that much fooling around with, but which offers total control from a simple shell and vi or emacs, well... Debian is a truly excellent choice. The infrastructure, both in terms of the utilities on the system itself, and in terms of the network servers available for updates, is incredibly good. It's low-fuss unless you want to screw with it, but should you wish to do so, everything's wide-open, and fairly straightforward. The systems in it are pretty complex in spots, but they're sane in their complexity. They make excellent sense, once you understand the problem they were solving, which may not be the problem you thought you had when you started. Frequently, their approach will prove to be better than whatever your napkin sketch was, and you'll start doing it their way instead. A lot of brainpower went into Debian, and it shows.

I've been hearing good things lately about Arch Linux, from a bunch of guys who use Debian a lot, but I don't know much about it. Might be worth a look. It sounds like it's got the same kind of fundamental sanity to it, even though the approaches are quite different.

I'd definitely avoid Gentoo; it's intended as a command-line system, kind of like Debian, but it's meant for compiling everything yourself, which is just not very reasonable anymore. It can take hours to days to compile and install a Gentoo system, and then you're looking at hours again every time you do a major package update. And you don't really gain very much for all the pain.

Debian's system of distributing binaries, and then giving you the tools to download the source, modify it, and generate your own packages, is much better. You get sane defaults and a nice pre-built system, and then you can replace any bits of it that don't work the way you want them to, without incurring any horrible penalties anywhere else. If you want to modify, say, Apache, you get the source package, extract it, make whatever changes you want, and then issue a 'debuild' command. Debuild will tell you about any missing dependencies (usually libraries -- compiling a program takes different libraries than running it.) It doesn't, sadly, automate getting them for you, but at least it gives you a nice list. Once you install the libraries you need, the debuild command will generate .deb package files, just like the ones from the actual distro, which you can then manually install with 'dpkg -i packagename.deb'.

It's a really, really nice system for working with every day. If you live predominantly at the command line when you're interacting with Linux (even if it's through xterms or konsoles), Debian is tailor-made for you.
posted by Malor at 2:32 AM on July 9, 2012 [2 favorites]


Debian proper has three flavors, Stable, Testing, and Unstable. A release only gets to be the new Stable after a lot of testing and stable it is -- if that's one's priority, it's an excellent choice. But the price of all of that time in testing is that the packages aren't the most up-to-date. Testing is what will be the next stable, and the current testing has just been frozen (meaning no new updates for new features, just for important bugfixes) in anticipation of becoming the new stable in early 2013. Being frozen, it's going to be fairly stable, but under certain circumstances, critical security bugfixes may be very slow to get into testing (there are good reasons for this I won't get into.) Unstable tends to be very up-to-date, but it's... unstable. There are lots and lots of updates. Lots of people run it on their desktops and report no ill effect, but things can break and that's on you. I decided Unstable wasn't for me when the update I was doing warned me that the Chromium I was about to get had a bug reported against it that github didn't work in it.

The best thing about Ubuntu is that it's Debian under the hood. It's more up-to-date than Stable, more stable than Unstable, and gets faster updates than Testing. The current release is a long-term support (LTS) release with the aforementioned 5 years of support, so they were more conservative in the changes and it's derived from Debian Testing instead of Debian Unstable.

So while I agree wholly with my esteemed colleague Malor that Debian is great, and in not being a fan of Unity, and that Debian Stable is an excellent choice for a server, I'm going to differ with him in that I don't see the current Ubuntu LTS as having noticeable drawbacks as the basis for a command-line or hand-rolled lightweight desktop system, and I'll note that the good things he says about Debian apply to Ubuntu, too, because it is a Debian.
posted by Zed at 9:51 AM on July 9, 2012 [1 favorite]


didn't think to steer him to the command line to do anything even though I spend plenty of time there myself.

I am surprised by how much my 3 y.o. enjoys typing on the computer. She can't really read/write yet, but she can spell her name and MOMMY/DADDY and

Learning on the command-line is a good idea. It doesn't really matter if it's Linux, Windows, or Mac, or whatever, I wouldn't think.

I suspect there are parents today who insist their kids learn math using a slide rule instead of a programmable calculator.

Are you really arguing we shouldn't teach kids how to do arithmetic by hand? I would think 2 + 2 = 4 comes before the calculator ...
posted by mrgrimm at 10:13 AM on July 9, 2012


Thanks, Malor and Zed. I use my Ubuntu box mostly as a server, so I might experiment with plan Debian and see how it compares.
posted by gd779 at 5:16 PM on July 9, 2012


but under certain circumstances, critical security bugfixes may be very slow to get into testing (there are good reasons for this I won't get into.)

For many years, this was always the big reason not to use Testing in production, that it didn't get security patches in a timely way. But Debian changed their procedures a few years ago, and Testing now gets critical security fixes just about as fast as everything else. Anything with a remote hole is going to be patched pronto.

There is one major difference, because the patches are being handled by two separate teams. The main Security team just handles Stable, and they get fixes out extremely quickly for even very minor security problems. The Testing team prioritizes slightly differently. Since there's often a new version coming in Unstable, if they think a specific bug is hard to exploit or just not that important, they may opt to wait for the normal amount of time packages sit in Unstable before migrating down to Testing. For any remote exploit, or if they get any evidence that a local exploit is actually being used to attack systems, they'll get a patch out right away, but things they triage as minor may take longer. The Testing team tends to patch security flaws with entire new versions of software, where the Stable team ONLY patches flaws, using a minimum-impact philosophy. They don't add features, they don't do updates of any kind, they just fix bugs.

Basically, at this point, if you're really security-focused, Debian Stable is probably tied with Red Hat for best Linux distro going. They are super, super anal. (Unfortunately, the Linux kernel itself is so full of security problems that much of that effort, by both Debian and Red Hat, is wasted. But they're doing the best they can.) Debian Testing isn't quite that good, but I'd still call it better than almost anything else. It's MUCH better than commercial OSes, most of the time.

If I were installing a new Debian box now, I'd definitely use Testing, as there won't be too many more major changes, and Testing has many nice features that Stable now lacks, especially with the installer. There will still be plenty of updates for awhile, but they'll be to nail down problems and smooth the distro out into final release shape. When they call something done, it's really done. And you get support until at least a year after the NEXT stable release ships, so if you were to install Testing right now, you'd get probably 4.5 years. The 1-year timeout doesn't actually start ticking until TWO stable releases from now, and those releases tend to be about three years apart.

Ubuntu? Ubuntu ships on a schedule, not when it's done, so lord only knows what your system is going to do after you install it. When the desktop was wonderful, I was willing to tolerate the breakage and constant flurry of updates, but the desktop is no longer wonderful. And I'd definitely choose the current Testing over the Ubuntu LTS, because it will be newer, and will actually be supported for just about the same length of time. You will, however, have more updates for the next six months on Testing than you would on LTS.
posted by Malor at 6:05 PM on July 9, 2012 [2 favorites]


Also, with Testing in freeze mode, that security team will probably be rolling out all security fixes, even very minor ones, as fast as Stable, because there won't be any new versions to wait for. So the normal advantage of LTS over Testing, that of faster security fixes for minor problems, shouldn't be there.

Just make sure your /etc/apt/sources.list lines say 'wheezy', rather than 'testing', so that you end up on the Stable version, once it ships. You don't want to be on Testing right after a stable release, because it tends to break rather spectacularly as they re-architect things for the next stable version. Wait at least six months, for the dust to settle, before switching up. And don't forget to report bugs on their bugtracker, but use a throwaway email address, as their bugzilla is heavily harvested by spambots.
posted by Malor at 6:11 PM on July 9, 2012 [1 favorite]


It's not an ImageMagick vs. PS argument, it's an analysis of child development of visual vs. algorithmic thinking.

It's also free software vs paying $700 for a license so a three year old can use it.
posted by furtive at 10:24 PM on July 9, 2012


« Older Weak as I am   |   What happens when you get your stockings in a... Newer »


This thread has been archived and is closed to new comments