The penguins are coming!

The penguins are coming! Word came down from the corner office (the really big corner office) that he wants us to get really serious about Linux. He sees Linux as a cheap and reliable solution to some of the problems some outside clients are having. This is good. Really good.
My boss asked if it would be a capable answer to our needs, namely, for ISP-style e-mail and for Web caching. But of course. Then he asked if I was interested in pursuing it. Now that’s a silly question.

Now it could be that FreeBSD would be even better, but I know Linux. I don’t know FreeBSD all that well. I’ve installed it once and I was able to find my way around it, but I can fix Linux much more quickly. The two of us who are likely to be asked to administer this stuff both have much more Linux experience than we have BSD experience. Plus you can buy Linux support; I don’t know if you can buy FreeBSD support. I doubt we will, but in my experience, clients want to know (or at least think) that some big company is standing behind us. They’re more comfortable if we can buy support from IBM.

So maybe my days of Linux being a skunkworks project are over. The skunkworks Linux boxes were really cleverly disguised too–they were Macintoshes. They’re still useful for something I’m sure. I expect I’ll draft one of them for proof-of-concept duty, which will save us from having to pull a Compaq server from other duty.

I spent a good portion of the day installing Debian 3.0 on an old Micron Trek 2 laptop. It’s a Pentium II-300 with 64 megs of RAM. It boots fast, but current pigware apps tend to chew up the available memory pretty fast. I recompiled the kernel for the hardware actually in the machine and it helped some. It’s definitely useful for learning Linux, which is its intended use.

I’ve noticed a lot of people interested in Linux lately. One of our NT admins has been browsing my bookshelf, asking about books, and he borrowed one the other day. Our other NT admin wants to borrow it when he’s done with it. The Trek 2 I installed today is for our senior VMS admin, who wants a machine to learn with. My boss, who’s been experimenting with Linux for a couple of years, has been pushing it aggressively of late.

I don’t know if this situation is unique, but it means something.

I spent a good part of the evening at the batting cages. I messed my timing up something fierce. I hit the first few pitches to the opposite field, some of them weakly, but soon I was hitting everything–and I mean everything–to the third-base side. So my bat speed came back pretty fast, and I was getting way out in front of a lot of the pitches. So I started waiting on the ball longer, hoping to start hitting the ball where it’s pitched. The end result was missing about a quarter of the time, slashing it foul to the third-base side a quarter of the time, hitting it weakly where it was pitched a quarter of the time, and hitting it solidly where it was pitched a quarter of the time. Good thing the season doesn’t start until June–I’ve got some work to do.

Afterward, I drove to my old high school, hoping to be able to run a lap or two around the track. I was hoping for two; realistically I knew I’d probably be doing well to manage one. There was something going on there, and I couldn’t tell if the track was in use or not, so I kept driving. Eventually I ended up at a park near my apartment. I parked my car, found a bit of straightaway, and ran back and forth until I was winded. It didn’t take long.

I can still run about as fast as I could when I was a teenager, but my endurance is gone. I’m hoping I can pick that back up a little bit. I was a catcher last season, filling in occasionally at first base and in left field. In the league I play in, we usually play girls at second and third base, and we’ve got a couple of guys who can really play shortstop, so I’ll probably never play short. When I was young I played mostly left field and second. I’d like to roam left field again. Not that I mind catching, but there’s a certain nostalgia about going back to my old position.

Another RISC platform for Linux

Vintage workstations. I’ve read two articles this past week about running Linux or another free Unix on vintage hardware.
http://www.debianplanet.org/article.php?sid=605
http://www.newsforge.com/article.pl?sid=02/02/19/049208&mode=thread

And while I can certainly appreciate the appeal of running a modern free Unix on a classic workstation from the likes of DEC or Sun or SGI, there’s another class of (nearly) workstation-quality hardware that didn’t get mentioned, and is much easier to come by.

Apple Power Macintoshes.

Don’t laugh. Apple has made some real dogs in the past, yes. But most of their machines are of excellent quality. And most of the appeal of a workstation-class machine also applies to an old Mac: RISC processor, SCSI disk drives, lots of memory slots. And since 7000-series and 9000-series Macs used PCI, you’ve got the advantage of being able to use cheap PC peripherals with them. So if you want to slap in a pair of 10,000-rpm hard drives and a modern SCSI controller, nothing’s stopping you.

There’s always a Mac fanatic out there somewhere willing to pay an exhorbinant amount of money for a six-year-old Mac, so you won’t always find a great deal. Thanks to the release of OS X (which Apple doesn’t support on anything prior to the Power Mac G3, and that includes older machines with G3 upgrade cards), the days of a 120 MHz Mac built in 1996 with a 500-meg HD and 32 megs of RAM selling for $500 are, fortunately, over. Those machines run Linux surprisingly well. Linux of course loves SCSI. And the PPC gives slightly higher performance than the comparable Pentium.

And if you’re lucky, sometimes you can find a Mac dirt-cheap before a Mac fanatic gets to it.

The biggest advantage of using a Mac over a workstation is the wealth of information available online about them. You can visit www.macgurus.com to get mainboard diagrams for virtually every Mac ever made. You can visit www.everymac.com for specs on all of them. And you can visit www.lowendmac.com for comprehensive write-ups on virtually every Mac ever made and learn the pitfalls inherent in them, as well as tips for cheap hardware upgrades to squeeze more speed out of them. I learned on lowendmac.com that adding video memory to a 7200 increases video performance substantially because it doubles the memory bandwidth. And on models like the 7300, 7500, and 7600, you can interleave the memory to gain performance.

Besides being better-built than many Intel-based boxes, another really big advantage of non-x86 hardware (be it PowerPC, Alpha, SPARC, MIPS, or something else) is obscurity. Many of the vulerabilities present in x86 Linux are likely to be present in the non-x86 versions as well. But in the case of buffer overflows, an exploit that would allow a hacker to gain root access on an Intel box will probably just crash the non-x86 box, because the machine language is different. And a would-be hacker may well run into big-endian/little-endian problems as well.

http://homepages.ihug.com.au/~aturner/7200boot.html

Trolling the web for nothing in particular

Yes, Brian, baseball will soon return. I hate the things Major League Baseball does (Bob Costas once likened choosing sides between the players and the owners to choosing sides between Iran and Iraq), but we’ve chosen to stay together for the kids. I’m sure everyone who cares (and some who don’t) can guess what I think of Bud Selig, but I’ll tell you anyway, soon enough.
In the meantime, I look like ArsTechnica today. Oh well. I don’t do this very often.

Blogging. Wired News had its take on the phenomenon, and threw out some interesting stats.


In January alone, at least 41,000 people created new blogs using Blogger, and that number is always increasing, [Blogger founder Evan] Williams said. Some have put the total number of weblogs at more than 500,000.

Alongside the boom, however, there have recently been a few faint signs of backlash. As increasing hordes take on the task of trying to keep new sites looking nice, sounding original and free from banalities, more hordes just seem to fail.

Blog critic Dave Linabury offered a recipe for success:


“It really can take a lot of time,” he said. “I spend two hours a day on my weblog. Many people don’t realize this, they think it’s a quick way to get popular. And after awhile they get really discouraged and say, ‘he got 2,300 hits today, I got four.’ The bulk of people out there get less than two dozen hits.”

“I don’t want to be elitist,” Linabury added, “but all these people out there with popular weblogs, they’ve been doing it longer and they stick to their guns.”

I can attest to that. The people who get more traffic than I get almost all have been doing this longer. But I can tell you one thing: It’s never enough. Back when I was getting 80 visits a day I wanted 150. When I was getting 150 visits a day, I wanted 250. Now that I get about 500 visits a day, I’m awfully distressed to see people are getting 2,300. And by the time I reach 2,300, I’m sure there will be people getting 5,000 or even 10,000. (Note that visits are the number of unique visitors; hits are the number of files served up. Hit count is deceptive. I get 500 visits per day but closer to 1,000 or even 1,500 hits per day, due to people visiting, reading comments, and then often reading something from a previous week. And if they do a search, that’s at least two additional hits.)

Link

Another feather in Internet Explorer’s cap. To my knowledge, no new security vulnerabilities have been reported in Internet Explorer this week, but the newest security patch, released last week, contains a bug that can cause a VBscript directive that previously worked to crash the browser.

Microsoft says Webmasters need to modify their pages not to use the directive.

That’s nice (I don’t use VBscript on this site) but there are embedded devices, such as HP’s JetDirect card, that use the directive. So early adopters of this patch may find themselves unable to do their jobs.

Better webmaster recommendation: Don’t use VBscript or ActiveX or other Microsoft-owned languages in your Web pages at all. Better end-user recommendation: Use Mozilla or a derivative instead of Internet Explorer.

Link

Recompiling Debian for your hardware. This thread comes up every so often, and with the popularity of Linux From Scratch and Gentoo, the appeal of a compiled-from-scratch Debian is undeniable. But does the small speed improvement offset the increased difficulty and time in upgrading?

The consensus seems to be that recompiling gzip, bzip2, and gnupg with aggressive options makes sense, as does recompiling your kernel. Recompiling XFree86 may also make some sense. But expending time and energy in the perfectly optimized versions of ls and more is foolhardy. (Especially seeing as speed demons can just get assembly language versions of them from www.linuxassembly.org.)

Link

A Guide to Debian. This is a guide, still incomplete, that gives a number of tips for someone who’s just installed Debian. The tips are applicable to other many other Linux (and even Unix) flavors as well.

Link

Spam. A coworker walked into my cube today and asked me how he could keep web robots from harvesting e-mail addresses from his web site. I found myself referring once again to the definitive piece on the subject, from Brett Glass (who gets my nomination for the greatest computer columnist of all time, for what that’s worth).

Link

The RULE project. A project has emerged to bring Red Hat Linux back to its roots, and allow it to run on older, less-powerful hardware.

From their site:


This install option is meant to benefit primarily two classes of users:

* GNU/Linux newbies who cannot afford modern computers, but still need, to get started more easily, an up to date, well documented distribution.
* System administrators and power users who have no interest in eye candy, and want to run updated software on whatever hardware is available, to minimize costs, or just because it feels like the right thing to do.

I love their FAQ. Check this out:


1.0 Hardware is so cheap today, why bother?

1. This is a very limited and egoistic attitude. Eigthy per cent of the world population still has to work many months or years to afford a computer that can run decently the majority of modern, apparently “Free” software.
2. Many people who could afford a new computer every two years rightly prefer to buy something else, like vacations, for example…. Hardware should be changed only when it breaks, or when the user’s needs increase a lot (for example when one starts to do video editing). Not because “Free” Software requires more and more expensive hardware every year.

These guys have the right idea. I can only hope their work will influence other Linux distributions as well.

Link

Linux uptime. (Sure, a little original content.) When I was rearranging things months ago, I unplugged the keyboard and monitor from my webserver, then I never got around to plugging them back in because I didn’t have to do anything with it.

The other day, I had occasion to plug a keyboard and mouse back into it. I went in, did what I wanted to do, then out of curiosity I typed the uptime command. 255 days, it told me. In other words, I haven’t rebooted since last May, which, as I recall, was about when I put the machine into production.

How Linux could own the education market

How Linux could own the education market. I spent some time yesterday evening working on computers. They were contrasts to the extreme: One, a brand-spankin’ new 1 GHz AMD Duron system with 512MB of RAM and 80 GB of 7200-rpm storage (IDE, unfortunately–but for $800, what do you want?). The other was an elderly AST 486SX/25 running Windows 3.1 belonging to a local teacher who goes to my church.
She teaches kindergarten, and the AST used to be her home computer. When she bought a Compaq Presario a couple of years ago, she took the AST to school. It’s more useful there than in her basement, and there’d be no computer in her classroom if it weren’t for that.

I don’t understand why that is. As much as my sister jokes about it, we don’t exactly live in the ghetto. The school district has money, but it isn’t spending it on computers. Whether that’s a good or bad thing depends on your point of view. The majority of people living in Oakville probably own home computers, so this probably isn’t contributing to the technology gap. But I wonder sometimes how things might have been if I’d been exposed to computers a few years earlier.

I was shocked how much I remembered about Windows 3.1. And I was able to figure out how to get her CD-ROM drive to play music CDs. Don’t ask me how; this was the first I’d messed with Windows 3.1 since 1994 and I’d prefer it stay that way–I was so impressed by Windows 3.1 that I’m one of the 12 people who actually went out and paid money for OS/2. I own actual, retail-box copies of OS/2 2.1, 3.0, and 4.0. And I remember distinctly thinking that her computer has enough memory to run OS/2 at least as well as it runs Windows 3.1…

I also remember distinctly thinking that my employer pays someone $15 a pound to haul better computers than hers away several times a year. We regard 486s as junk; low-end Pentiums may also go out, depending on whether the right person finds out about them beforehand. Usually they work just fine–the problem isn’t the computers, it’s people trying to run Internet Exploiter 6 and Office 2000 on them. They’d run Windows 95 and Office 95 perfectly fine.

But a lot of times we can’t give these old computers away because the licenses for the software that originally came with them are long gone. Old computers are useless without software, so no one would want them anyway.

Now, let me tell you something about kids. Kids don’t care much about the computers they use. As long as there’s software on them, they’ll use them. When I was a kid 20 years ago, I used Radio Shack TRS-80 computers at school. The next year, my family moved, and my new school had Commodore 64s. I couldn’t tell much difference. My next-door neighbor had a Radio Shack Color Computer. They were computers. The Commodores had better graphics, but from a usability standpoint, the biggest difference was where the cartridge slot was so you could change programs. Later on I took a summer class at the local junior college, learning about Apple IIs and IBM PCs. I adjusted smoothly. So did all the other kids in the class. Software was software.

Kids don’t care if the computer they’re using runs Windows or Mac OS or Linux. All they care about is whether there are cool programs to run.

So, businesses throw useless computers away, or they give useless computers to schools so they don’t have to pay someone to haul them away. And schools don’t generally know what to do with obsolete computers that lack software.

Linux won’t run fabulously on old 486s, but Debian with a lightweight window manager like IceWM will run OK. (Let’s face it, Windows 3.1 doesn’t run fabulously on them either–it crashes if you breathe wrong.) I know of a project to clone Oregon Trail on Linux. Great start. How about Sea Route to India? I remember playing that on C-64s at school. It may have been a type-in out of a magazine–I don’t remember where exactly it came from. In these violent times, Artillery might be too controversial, but it taught us early on about angles and forces. Artillery was an ancestor to games like Scorched Earth, but without the heavy-duty nukes. Close wasn’t good enough to win in Artillery. You had to be exact. And no blowing up the mountains between you and your opponents either. You had to figure out how to get over them.

But what about doing homework? By the time I was in the sixth grade, they were teaching us how to use word processors and databases and spreadsheets. AbiWord is a fabulous lightweight word processor. It gives you fonts and spell-checking and good page formatting. (I learned word processing on Bank Street Writer. AbiWord is a far, far cry from that. Frankly, I’d rather write a paper with vi than with Bank Street Writer.) Besides being feature-rich, AbiWord’s been lightning fast on every computer I’ve tried it on. Gnumeric is a nice, fast, capable spreadsheet. I don’t know of a free-form database, but I haven’t looked for one lately either. (I don’t think we need to be trying to teach our 6th graders SQL.)

But what about for younger kids? I remember a program called The Factory. The object was you combined chemicals to make monsters. Different chemicals made different monsters. I seem to remember you played around to see what chemicals would make which heads and torsos and arms. Then the computer started showing you monsters and you had to figure out what chemicals to give it to match them. I also remember a program called Snooper Troops. I don’t remember much else about it, other than it was a mystery and you went around looking for clues, and one of my classmates accidentally formatted the disk one day before any of us had managed to solve it. We couldn’t get the disk replaced, because it was out of print.

And Spinnaker had all sorts of simple titles for younger kids that let them tell stories and other stuff. It seemed cool at the time. But that was almost 20 years ago, so about all I remember was that sailboat logo and some corny theme music.

The other thing about those old days was that the majority of these programs were written in Basic. An ambitious teacher could modify them, to make them easier or harder, or improve the graphics a little. As we got older and learned to program, some of us would try our hand at making changes. You can’t do that anymore with Windows or Macintosh educational titles. Open source can bring all that back too, provided the programs are written in languages like Perl or Python. And it can give cash-strapped schools a way to get computers where kids can use them.

Now I’m wondering what it would take to write something like The Factory in Python…

Tweaking Debian for all it’s worth

I fell way behind on my Sorcerer Linux box. The thing compiled code for a day trying to keep up, and finally I started questioning the point of it all. Yeah, the kernel and glibc all benefit from having fresh, up-to-date and aggressively-optimized code, but my highly-optimized KDE 2.2 was slow as a dog, and why am I bothering compiling a superfast version of more? So I installed Debian.

But I wanted ReiserFS. So I went and downloaded the special Debian boot floppies that support Reiser. I just let it do an install over the network. The end result was a copy of Debian Testing on my system. Of course I wanted to upgrade to unstable, so I edited /etc/apt/sources.list and changed the occurrences of “testing” to “unstable.”

Next, I wanted the hottest kernel on the block, which happens to be 2.4.17-mjc2. There is no Debian package for that. So I made one. For myself. I’m pretty sure the one I made won’t work on your computer. Here’s what I did, so you can make one that won’t work on my computer.

apt-get install kernel-source-2.4.17

Download the mjc patch to /usr/src

cd /usr/src

ln -s kernel-source-2.4.17 linux

bzcat 2.4.17-2.4.18-pre1-mjc2.patch.bz2 | patch -p0 (substitute the name of the mjc patch you downloaded)

make xconfig

Pick some of the cool new options like the pre-emptible kernel and realtime scheduler

make-kpkg kernel_image

dpkg -i kernel-image-2.4.18pre1-mjc2_i386.deb

echo "kernel-image-2.4.18pre1-mjc2 hold" | dpkg --set-selections

rm /usr/src/linux

I also went into /etc/fstab, found my ReiserFS partitions, and under the (options) heading, I added the notail and noatime options to increase filesystem speed.

How’s it run? I’m about to find out. But even without this stuff, running GNOME apps under IceWM, Debian is awfully fast. I like KDE, but in my experience it’s so much slower than GNOME, at least when GNOME is running in conjunction with IceWM. GNOME apps like Gnumeric and AbiWord load in under 2 seconds, even on a slow hard drive.

Why Linux stands a chance

Something I read on LinuxToday on Monday made me realize something. The article was a tutorial on writing Gnome apps with Python. Not too exciting, right? Not until you realize the implications. Python is a high-level, interpreted language. Gnome produces good, professional-looking applications with Windows-like functionality like toolbars and menus and drag-and-drop.
Put two and two together. Remember the early days of computing, when practically everyone who owned one knew how to program, at least a little bit? We’d program our 8-bit microcomputers in Basic, and sometimes we’d come up with something cool. You might send your creation off to a magazine in hopes of them publishing it and sending you a little money — a friend growing up and I netted a cool $350 on a little hack we wrote over spring break one year. Other times you just uploaded your creation to a BBS, hoping that people would find it useful, and maybe someone would download it and improve it a little. IBM was big and unstoppable, and Apple made the wise decision to flood the schools with cheap hardware in hopes of making it up by selling overpriced hardware to homes and businesses (which they did), but the homebrew market kept Commodore afloat for 10 years after their last good marketing decision. The cost of entry was low, and an easy-to-learn programming language was built right in, so creative minds could start playing with it without spending hundreds or thousands of dollars on development tools and thousands of dollars going to class.

The results weren’t always professional, but a surprising amount of it was exceptionally high-quality. High enough to sell more machines. Today, some 20 years after the Commodore 64 was released, it still has a following. It’s insane.

I still think that was part of what killed the Amiga. There were free languages for it, but you had to fork over a few hundred bucks for the toolkit to make them work. A lot of people did, but not enough. The development community was small. Some of the best stuff I saw on that platform came from people who pirated the toolkit. But not enough people did, so the pool of people to learn and steal tricks from was tiny. Meanwhile, Microsoft was selling complete languages, with everything you needed, for less than Commodore was charging for its header files. The Amiga never stood a chance.

Linux and other open-source projects collectively give you a free operating system or five, but they also give hundreds of development tools. The end result is Web sites like Freshmeat that do nothing but track new software. There may be more graphical Linux freeware out there now than there is Windows freeware. Considering Linux has maybe 1/50 the installed base of Windows, that’s pretty impressive. Linux doesn’t have a killer app just yet, but it may come. It’s definitely not short of ideas. Just this past week, someone released a hack for the Nautilus file manager to make it read binary newsgroups. It reads them and is intelligent enough to group related binaries in subdirectories for you. It’s a file collector’s delight. Brilliant idea. I’ve never seen anything like that for any other OS, especially not Windows.

Free languages lower the bar. Free and capable high-level languages lower the bar even more. Even a non-programmer like me can have an idea, hack out something in Python, and even if it doesn’t work perfectly, it can serve as a springboard for someone else to grab and improve, either by revising the existing code or by translating it into a lower-level, faster language. The quality of the code isn’t nearly as important as the quality of the idea. And we all know programmers don’t have a monopoly on good ideas.

Maybe Linux will remain an underground, punk OS forever. But even if it does, it’s going to be an unbelievably good one. Look for it to be bigger than the Mac within two years.

Why I run Debian, and some Debian tricks

After Dan Bowman pointed out another blogger’s recent difficulties installing Evolution on Mandrake 8.1, I had little comment other than, “That wouldn’t be an issue if you’re running Debian.” Well, I think I said a few other things because I tend to be wordy, but that was the only important thing I had to say.Debian is one of the more difficult Linux distributions to install (you have to know what hardware is in your machine–it doesn’t nicely autodetect everything like Mandrake), but it’s far and away the easiest distribution to maintain. We’ll get back to that in a minute.

Released versions of Debian tend to be ultra-conservative. The current version, Debian 2.2r5, still uses the 2.2.19 kernel, for one thing (and that’s a fairly recent change). The current 2.2 kernel is either 2.2.39 or 2.2.40. All packages (at least all the ones anyone uses anymore) are constantly checked and maintained and patched. In theory, the current stable Debian release ought to be the most bullet-proof Linux available.

Besides Debian Stable, there’s also Debian Testing and Debian Unstable. Debian Unstable is pretty cutting-edge, but I’ve had no problems running it. I just keep up with the current patches and the system runs fine. I know people who run production servers on Testing and Unstable and get away with it.

If you want the latest and greatest stuff, after you install Debian, edit the file /etc/apt/sources.list and uncomment the ftp and http lines. Next, copy and paste those lines, then edit the “stable” to read “unstable.” (Or if you’re more conservative, edit it to read “testing.”) Be aware that occasionally you’ll run into problems running packages from unstable under stable. I ran Evolution, Galeon, Dillo, Sylpheed, and a multitude of other packages from unstable just fine, but when I installed AbiWord (a really nice, lean, mean, superfast word processor, by the way) it failed to run right. I upgraded to unstable, and then it worked perfectly.

OK, let’s talk some tricks.

Want to upgrade your distribution after a new version comes out, or upgrade from stable to testing or unstable? Easy. Type this:

apt-get update ; apt-get dist-upgrade

Then Debian will go download the pieces it needs to upgrade itself.

Want to keep your system up to date with any little changes (security patches, whatever) that may have happened recently? Type this:

apt-get update ; apt-get upgrade

So Debian lets you keep a current and presumably secure installation very easily. If you run that line regularly, you can rest assured that if your system is insecure, it’s not Debian’s fault but rather a misconfiguration on your part.

Want to try out some new piece of software? Forget having to hunt down RPMs or keep track of your distribution CD. Check availability with this command sequence:

apt-get update ; apt-cache pkgnames [name of program]

Found it? Excellent. Install it with this command:

apt-get install [name of program]

And if it wasn’t as great as you heard, you can uninstall it with this command:

apt-get remove [name of program]

System acting goofy? This’ll cure much that ails you:

apt-get clean ; apt-get update ; apt-get check

So from a system administration standpoint, Debian is great. Debian developers often try to justify the difficulty of installation by saying you only have to run it once, and to a degree, they’re right.

Compiling a kernel under Debian

I found a nice document detailing customizing your kernel under Debian. The standard method works under Debian, of course, but it’s cleaner to do it within the confines of your package manager–then it doesn’t go stomping on files you modified. Plus it’s actually a little easier to let Debian handle some of the details.

Here are the notes I took while using the document.

With additions:
Use kernel-source-2.4.17

export CFLAGS=”-O3 -mcpu=i686 -march=i386 -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -malign-functions=4″
export CXXFLAGS=”-O3 -mcpu=i686 -march=i386 -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -malign-functions=4″

Using -march=i686 is known to cause instability and not improve performance by any noticeable amount. The kernel mostly ignores these settings but I set them anyway. You can alternatively set them in the file /etc/profile. If you ever find yourself compiling apps from source, you want these options set so they’ll perform optimally.

A correction:
Debian tar doesn’t seem to support the -I switch for bzip2. So I extracted the archive with the following:
bunzip2 -k -c kernel-source-2.4.17.tar.bz2 | tar -xf –

the -k switch tells bzip2 to keep the original file intact, while -c tells it to extract to stdout. The | redirects stdout to the specified program, in this case, tar. -xf tells it to extract the file.

I got an error on make xconfig:

make: wish: command not found.

So I headed off to www.debian.org/distrib/packages. At the bottom of the page, there’s a form where you can type a filename and it’ll tell you what package it comes from. Type in “wish,” hit enter, and I get a long list, including /usr/bin/wish8.3 in a package named libs/tk8.3. Sounds promising. So I do an apt-get install tk8.3 and I’m in business. Type make xconfig again, and we’re set. This page is also a really good way to hunt down packages if you don’t know exactly how Debian named it.

Options I chose for kernel compilation:

Code maturity level options: prompt for development and/or incomplete code/drivers. I answered Yes, so I’d get modern filesystem support.
Loadable module support: I answered yes to all. I’ve read that disabling modules and compiling everything directly into the kernel can improve performance but I’m wary of that. If the kernel’s too big, the system won’t boot. And the idea of modules is to keep only what you need in memory. So I suppose there are instances where a no-modules kernel could increase performance, but there are certainly instances where it would hurt. I chose to be conservative.
Processor type and features: I changed a couple of the defaults. Double-check the processor family option; in my experience it’s usually but not always correct. Enable MTRR support unless you’re using a 486, Pentium, or AMD K5 CPU. All other reasonably modern CPUs, including AMD, Cyrix, Intel, and WinChip, support MTRRs for increased GUI performance. Since the PC I’m using only has one CPU, I disable SMP support. Then I enable local APIC and IO-APIC support on uniprocessors.
General setup: I accepted the defaults, because aggressive use of APM makes me really nervous. Under Windows, APM always does me more harm than good.
MTD: Since I don’t use any flash memory devices, I accepted the defaults of No.
Parallel port support: Curiously, this was disabled by default. This PC has a parallel port but I only use network printers, so I left it disabled to save a little memory.
Plug and play configuration: I said no to ISA plug and play support, since this machine is a laptop and won’t have any ISA PnP cards. On modern PCs that have no ISA slots, say N.
Block devices: The defaults are usually sufficient, but some configurations need RAM disk support and initrd support turned on. If you’re going to mess around with ISO images, you’ll probably want to turn on loopback device support.
Multi-device support: I’ve never seen a laptop with RAID, so the default of disabling it all works great for me.
Networking options: The defaults are fine for most uses. If you’re going to make a router or firewall out of your PC, enable Netfilter.
Telephony support: I disabled it.
ATA/IDE/MFM/RLL support: Disable it if you have an all-SCSI system. I don’t. Turn on SCSI emulation support if you use a CD-R or CD-RW. Under IDE chipset support/bugfixes, disable the chipsets your PC doesn’t have. This laptop has an Intel chipset, so all I had enabled were Generic PCI IDE chipset support, Sharing PCI IDE Interrupts support, Generic PCI bus-master support, Use PCI DMA by default when available, Intel PIIXn chipset support, PIIXn tuning support.
SCSI support: I have an all-IDE system (unfortunately), so I disabled it. Note that SCSI emulation for a CD-R counts as a SCSI device, as does a parallel port Zip drive. Since I have neither, I’m safe disabling it to save some memory and speed up boot time slightly.
IEEE 1394 (Firewire support): I disabled it since I have no Firewire ports.
I2O device support: I disabled it.
Network device support: This can be tricky. I turned off SLIP and PPP since I don’t use them. You may need PPP. I turned off ARCnet support, which you’ll probably do as well since ARCnet is very rare. I have a 100-megabit 3Com 3c556 NIC in this laptop, so I went into Ethernet 10 or 100 Mbit, drilled down to 3COM cards, and said yes to 3c590/3c900 series, since that’s the driver the 3c556 uses. I turned off the others. I like to compile support for the machine’s NIC straight into the kernel when I can, since it speeds up network configuration at boot time. On servers, I’ve been known to compile support for every type of NIC I own into the kernel, so that if I ever have to change NICs, it’ll come back up automatically without any configuration from me. I turned off wireless, token-ring, PCMCIA, ATM, amateur radio, infrared, and ISDN support.
Old CD-ROM drivers: You can probably turn this off, unless you know you have an old proprietary 1X or 2X CD-ROM drive. These were the drives that generally plugged straight into an ISA sound card, and they were very common on 486s. I sold tons of these things in 1994; I’m pretty sure that by the time I was selling PCs again in the summer of 1995, everything I was selling had an IDE drive in it.
Input core support: I don’t use USB input devices, so I turned it off.
Character devices: Near the bottom, after Ftape support, there are options for specific chipsets. You can find out what chipset you have by typing the command lspci in a shell. (You have to be root to do this–use the su command if you’re logged in as yourself, as you should be.) This laptop has an Intel 440BX chipset, so I turned off the VIA, AMD, SiS and ALI support.
Multimedia devices: Disable video for Linux unless you have a capture card. Most will disable Radio adapters as well.
File systems: I enable Ext3 and ReiserFS, along with DOS FAT and VFAT (as modules), ISO 9660 and Joliet, NTFS read-only (as module). Under network file systems, I enable SMB since I (unfortunately) work in Windows environments. I disable NFS since we have no NFS servers.
Console drivers: The defaults work for me.
Sound: Since I have onboard sound, I enable sound support and pick my chipset, in this case, ESS Maestro3. I disable all others.
USB support: I have USB ports but don’t use them. I left it enabled just in case, but I’m not sure why.
Bluetooth: I don’t use it, so I disabled it.
Kernel Hacking: I disabled Kernel debugging, the default.
Whew! Hit Save and Exit. Exit X to save some system resources while compiling and installing.

The end result was an up-to-date kernel (2.4.17) that was about 200K smaller than the stock 2.2.19 kernel and boots to a login prompt in 18 seconds flat, as opposed to 45 seconds before. Much of the improvement is due to the 3c590 driver loading faster as part of the kernel rather than as a module, and the kernel no longer searching for phantom SCSI devices. But Charlie Sebold told me it’s his experience that recent 2.4.x kernels boot a lot faster than earlier kernels.

It’s not perfect–I don’t have sound completely working yet–but I found some clues. I’m not overly concerned about sound support though. The system beeps at me when I have mail, and for work purposes, that’s all the sound I need. I don’t see any point in turning my PC into a multimedia tribute to Billy Joel or Star Wars or Quake III.

Desktop Linux and the truth about forking

Desktop Linux! I wanna talk a little more about how Linux runs on a Micron Transport LT. I chose Debian 2.2r3, the “Potato” release, because Debian installs almost no extras. I like that. What you need to know to run Linux on a Micron LT: the 3Com miniPCI NIC uses the 3C59x kernel module. The video chipset uses the ATI Mach64 X server (in XFree86 3.36; if you upgrade to 4.1 you’ll use plain old ATI). Older Debian releases gave this laptop trouble, but 2.2r3 runs fine.
I immediately updated parts of it to Debian Unstable, because I wanted to run Galeon and Nautilus and Evolution. I haven’t played with any GNOME apps in a long time. A couple of years ago when I did it, I wasn’t impressed. KDE was much more polished. I didn’t see any point in GNOME; I wished they’d just pour their efforts into making KDE better. I still wish that, and today KDE is still more polished as a whole, but GNOME has lots of cool apps. Nautilus has the most polish of any non-Mac app I’ve ever seen, and if other Linux apps rip off some of its code, Microsoft’s going to have problems. It’s not gaudy and overboard like Mac OS X is; it’s just plain elegant.

Galeon is the best Web browser I’ve ever seen. Use its tabs feature (go to File, New Tab) and see for yourself. It’s small and fast like Opera, compatible like Netscape, and has features I haven’t seen anywhere else. It also puts features like freezing GIF animation and disabling Java/JavaScript out where they belong: In a menu, easily accessible. And you can turn them off permanently, not just at that moment.

Evolution is a lot like Outlook. Its icons look a little nicer–not as nice as Nautilus, but nice–and its equivalent of Outlook Today displays news headlines and weather. Nice touch. And you can tell it what cities interest you and what publications’ headlines you want. As a mail reader, it’s very much like Outlook. I can’t tell you much about its PIM features, because I don’t use those heavily in Outlook either.

The first time I showed it to an Outlook user at work, her reaction was, “And when are we switching to that?”

If you need a newsreader, Pan does virtually everything Forte Agent or Microplanet Gravity will do, plus a few tricks they won’t. It’s slick, small, and free too.

In short, if I wanted to build–as those hip young whippersnappers say–a pimp-ass Internet computer, this would be it. Those apps, plus the Pan newsreader, give you better functionality than you’ll get for free on Windows or a Mac. For that matter, you could buy $400 worth of software on another platform and not get as much functionality.

Linux development explained. There seems to be some confusion over Linux, and the kernel forking, and all this other stuff. Here’s the real dope.

First off, the kernel has always had forks. Linus Torvalds has his branch, which at certain points in history is the official one. When Torvalds has a branch, Alan Cox almost always has his own branch. Even when Cox’s branch isn’t the official one, many Linux distributions derive their kernels from Cox’s branch. (They generally don’t use the official one either.) Now, Cox and Torvalds had a widely publicized spat over the virtual memory subsystem recently. For a while, the official branch and the -ac branch had different VMs. Words were exchanged, and misinterpreted. Both agreed the original 2.4 VM was broken. Cox tried to fix it. Torvalds replaced it with something else. Cox called Torvalds’ approach the unofficial kernel 2.5. But Torvalds won out in the end–the new VM worked well.

Now you can expect to see some other sub-branches. Noted kernel hackers like Andrea Archangeli occasionally do a release. Now that Marcelo Tosatti is maintaining the official 2.4 tree, you might even see a -ac release again occasionally. More likely, Cox and Torvalds will pour their efforts into 2.5, which should be considered alpha-quality code. Some people believe there will be no Linux 2.6; that 2.5 will eventually become Linux 3.0. It’s hard to know. But 2.5 is where the new and wonderful and experimental bits will go.

There’s more forking than just that going on though. The 2.0 and 2.2 kernels are still being maintained, largely for security reasons. But not long ago, someone even released a bugfix for an ancient 0.-something kernel. That way you can still keep your copy of Red Hat 5.2 secure and not risk breaking any low-level kernel module device drivers you might be loading (to support proprietary, closed hardware, for example). Kernels are generally upward compatible, but you don’t want to risk anything on a production server, and the kernel maintainers recognize and respect that.

As far as the end user is concerned, the kernel doesn’t do much. What 2.4 gave end users was better firewalling code and more filesystems and hopefully slightly better performance. As far as compatibility goes, the difference between an official kernel and an -ac kernel and an -aa kernel is minor. There’s more difference between Windows NT 4.0 SP2 and SP3 than there is between anyone’s Linux 2.4 kernel, and, for that matter, between 2.4 and any (as of Nov. 2001) 2.5 kernel. No one worries about Windows fragmenting, and when something Microsoft does breaks a some application, no one notices.

So recent events are much ado about nothing. The kernel will fragment, refragment, and reunite, just as it has always done, and eventually the best code will win. Maybe at some point a permanent fracture will happen, as happened in the BSD world. That won’t be an armageddon, even though Jesse Berst wants you to think it will be (he doesn’t have anything else to write about, after all, and he can’t be bothered with researching something non-Microsoft). OpenBSD and NetBSD are specialized distributions, and they know it. OpenBSD tries to be the most secure OS on the planet, period. Everything else is secondary. NetBSD tries to be the most portable OS on the planet, and everything else is secondary. If for some reason you need a Unix to run on an old router that’s no longer useful as a router and you’d like to turn it into a more general-purpose computer, NetBSD will probably run on it.

Linux will fragment if and when there is a need for a specialized fragment. And we’ll all be the better for it. Until someone comes up with a compelling reason to do so, history will just continue to repeat itself.

Time to talk about big, manly computers

Enough of this other stuff. I actually felt like messing around with computers yesterday. I read about Eric Raymond’s new PC (IBM was nice enough to finance building an obnoxious Linux box for Mr Raymond and Linus Torvalds), which is, in short, a dual Athlon-1200 setup with two big SCSI drives. Unfortunately, he neglected to mention how much memory he put in it. I’m assuming he splurged and got a gig or two. His comment? “I tried hard to gold-plate as much of the system as possible and load on all the extras and accessories I could, and was nevertheless unable to raise the total parts bill over $7,000.”
When they made the machine more reasonable (pulling the exotic tape backup drive and 21-inch monitor and other niceties), the system still cost $4,200. One participants’ comment? “People pay more than that for crap computers all the time.” Yup. I know one guy at work who had about $10,000 left in his budget at the end of July, so he decided he needed a new Macintosh. He spent every dime of it and didn’t get half the computer Raymond described.

The true test, of course, was compiling the Linux kernel. How long did it take? Two minutes, 21 seconds. I don’t think I have a computer that can compile it in under 10 minutes. Needless to say, I’m extremely jealous.

I had lunch with one of the seminarians assigned to my church (actually, seeing as it was at 3:30, I’m not sure what you would call that meal. Well, since people tend to argue whether the afternoon meal is lunch or dinner, and whether the evening meal is dinner or supper, I guess the 3:30 meal must be dinner). He mentioned that Best Bait-n-Switch had 256-meg Kingston DIMMs on sale for $25 after rebate, so we went. I picked one up.

With that, I had enough stuff to build a PC to replace several of the boxes I have laying around. Compare my setup to Raymond’s new setup:

CPU: AMD K6-2, 350 MHz
Mobo: AOpen AX59Pro
RAM: 256 MB Kingston
NIC: Generic cheapie Macronix (DEC Tulip derivative)
SCSI adapter: Initio 9090U (it came bundled with my CD-R way back when)
Hard drives: 850 MB Seagate IDE, 2 GB Quantum SCSI
CD-ROM: Generic, flaky 24X ATAPI
Video: STB Velocity 128 (nVidia Riva 128)
Case: InWin ATX desktop, no idea the model#, $37 at Directron a few months back

Yep. Pathetic. For whatever reason the machine wouldn’t boot off the Sorcerer CD, so I ended up installing Mandrake 7 on it (I wanted something reasonably modern that didn’t use the infamous GCC 2.96 compiler). It’s going to be an experimental mail server, so it doesn’t have to be fabulous.

Getting Courier-IMAP proved difficult. Someone at Inter7.com decided he didn’t like PacBell, and Southwestern Bell by association, so he blocks access from their networks. How nice of him. I understand not liking the companies (I hate Southwestern Bell as much as anyone), but punishing their customers isn’t going to accomplish anything. I’m stuck with SWBell because I don’t want to pay for basic cable so I can get a cable modem. If I get DSL from anyone else, then I’m using Southwestern Bell plus someone else, so they can blame each other. And who knows? If I connected from someone else who’s also using SWBell’s network, would I be blocked?

He posted his complaints to PacBell, and I have to wonder if part of the reason PacBell ignores him is because of his liberal use of a phrase that contains the word “mother” and implies incest…

At any rate, there’s an easy way to get past rude people who are blocking your ISP. Use someone else’s network. Go to www.anonymizer.com, then punch in the forbidden web page. Now I’m not using Southwestern Bell’s network, but rather, Anonymizer’s network, which is then forwarding the information I requested.

Unfortunately I didn’t get the mailserver built, as Courier-IMAP is even harder to get running than it is to download, but it was kind of fun to mess around with Linux again.

If you’re interested in what I was doing, here’s the article I followed.
Hey, it’s playoffs time. And ESPN is highlighting 1986, which as far as I’m concerned, is the second-best postseason ever (no one can top my Royals’ magical 1985, of course). ESPN’s doing a “voices of 1986,” but I noticed the voice I most want to hear isn’t up there yet. They’d better not forget him. I’ll never forget the photo of young Bosox closer Calvin Schiraldi with his face buried in a towel after Game 6. Hobbling first baseman Bill Buckner was the goat, but Schiraldi took it hard.

I actually met Schiraldi three years later. He was pitching for the Cubs by then, trying to put his career back together in spite of manager Don “Gerbil” Zimmer’s best efforts to prevent it. Nice guy. All people remember now is an unreliable relief pitcher (the specifics: a 13.50 ERA in the World Series, thanks in part to a home run he gave up to Ray Knight and the three consecutive singles he gave up preceding Buckner’s error) and they forget his 1.41 ERA in the regular season, followed by his 1.50 ERA in the playoffs. I remember a tired, overworked pitcher who gave everything he had and in the end just had nothing left. Boston had four pitchers worth having that year: Bruce Hurst, the incomparable Roger Clemens, “Oil Can” Boyd, and Schiraldi. In the postseason, those four men pitched until their arms fell off, and Boyd and Schiraldi were never quite the same after that. Hurst went on to have a respectable career; Clemens of course is still pitching and is now known as one of the biggest jerks in the game. These days, Schiraldi’s a high school teacher and coach in Texas.

I went looking for stuff on Schiraldi and I found this short story: The Girl who Hated Calvin Schiraldi. Obviously I don’t see it her way.

I’m posting this from Linux because Windows lost my last post

I wrote up a post in advance, then against my better judgment I sent in a boy to do a man’s work. Windows crashed on me. Granted, it doesn’t happen too terribly often, but when you lose work, that’s not much consolation.
I’m writing this from my Sorcerer-built Linux box, which I’ve christened Exodus. I don’t normally name PCs, but Exodus seems like an appropriate name for the machine that’ll help me leave Windows behind. (I’ll probably keep a Windows box around since I can make some fast money writing about Windows, but for real work, I think this Linux box is going see some heavy duty.)

I compiled Kmail; it’s adequate for my e-mail needs. I need IMAP, the ability to easily handle attachments, and the ability to cut and paste to and from my browser. So Kmail’s the ideal candidate, if it can do these things without crashing.

Add KDE’s Advanced Editor, with its ability to reformat text a la Notetab, and I’ve got everything I need to maintain this site. That’s nice.

I’m tired. I think I’ve got an appointment with my pillow, and this steel-slab buckling-spring IBM keyboard doesn’t look like a very comfortable substitute. I’m outta here.