Friday, September 19, 2008

The Timeless Way of Building

When I was in college I rode my dad's old Schwinn cruiser. It had a steel frame, balloon tires, coaster brakes, and a two-speed hub on the rear wheel (as opposed to external gears and a derailer). If you've ever used a bike through a midwestern winter while storing it outside (student apartments = no bikes inside) you know why these are good features. In the early spring there are always lots of tough-looking bikes on campus with their wheels bent by winter storms, rusted to oblivion, brakes and shifters all out of sorts. The cruiser stood strong. I was one of the few that could ride all winter.

Other important virtues included the curvy, black frame, which was really stylish, and the low height of the top tube, which allowed me to perform quick (and stylish) dismounts while transferring my rolling speed into walking speed. These dismounts were very useful for sniping parking spots at crowded campus racks. All told, I looked so damn good riding this bike that the frat boys had to make fun of me. No quick-release junk meant I didn't have to worry as much about theft (the quick-release seat is the most laughably stupid bike feature I've ever seen).

There was a bike I frequently saw on the racks outside Everitt Lab that had many of the same qualities, but not the curvy frame. It had thick, straight bars and a bright yellow and black paint job. I always thought of it as the cruiser's modern twin. On the front was a big Schwinn badge and on the top tube, in stencil font, "Heavy Duti".

Today I took the L to work and saw the same kind of bike chained up in the Clinton station. Of course, I thought of this bike I saw in college and wondered when they were made. It turns out Schwinn has made some variant of this bike at least as far back as the 60s.

Now cruisers are cool again, but with aluminum frames, derailers, rim brakes and quick-release wheels what's the point? Now it requires all the maintenance and care of a road bike but it's slow. But the Heavy Duti, from what I can tell, is still built to be an urban tank.

Now that's not quite the right formula for someone like me. I like to go on long rides out of the city and my road bike is great for that. I don't have space for two bikes, so I need one that can do everything. My current bike isn't the right formula either. Its aluminum frame and carbon fork are light, but the weight of my body and the stuff I carry overwhelms the frame weight. Meanwhile aluminum and carbon fiber have really awful failure modes. I wish I'd understood those things back when I bought my bike. Also, I wish I'd realized that I wasn't actually going to race it.

But because I went in knowing basically nothing about cycling I didn't know what to think. I got the lightest, most race-oriented bike I could afford. Which brings me back to the title of this post. The Timeless Way of Building, by Christopher Alexander, is one of the coolest books I've read. Because the author realizes just this problem, that people have become so overspecialized in their knowledge and skills that they've lost the ability to make their homes, neighborhoods and cities into the kinds of places that really fit their needs. Instead they serve the goals of experts in the field. He is an architect and mostly talks about his ideas in terms of building, but he and many others recognize that his ideas apply in just about any field.

They've been used especially in computer programming, and have also been misused. He argues against modularity, and I can see from his examples of the failures of modular buildings the same failures in attempts at modular programming: a lot of times the best part you can find just isn't quite right for the problem you're trying to solve. But some people have taken the idea of "software patterns" (from Alexander's "pattern languages") and used them to justify the worst in object-oriented modular excess. In order to avoid rewriting several 10-line functions (or even to avoid the possibility of having to do so in the future) they'll invent byzantine inheritance structures. Force dissimilar objects to have the same interfaces. If software patterns are really to follow pattern languages, to think in Perl terms, we need less CPAN and more PerlMonks.

I guess on a larger scale than programming practices you could say that tyranny of experts is the big problem with Windows Vista. It's the most advanced operating system ever made in many ways that only really matter to programmers at Microsoft. Linux-based OSes, of course, fall into this trap big-time, although Linux can mean almost anything, and Linux-based desktop OS projects have a different conception of their users than Apple or MS. Even so, all the big desktops are pushing compositing window managers with 3d acceleration. The compositing thing is a nicer abstraction for application programmers who in an ideal world could just treat their windows as canvases and not worry about redraws, but I'm pretty sure Plan 9 had that. The 3d-accelerated junk is, well, junk. In Microsoft's case, they tried so hard to make obviously-transparent window decorations that they made the window with keyboard focus really hard to distinguish from the other windows (particularly bad on multi-monitor systems). Hello! That's pretty much the only real use of window decorations; it's also the sort of thing that 3d window managers promise but don't deliver: that the illusion of depth will allow you to intuitively understand layering. Aero Glass looks like it was designed by people trying to make the coolest decorations, not people trying to come up with decorations for the most useful windowing system. By people that spend all day staring at the decorations instead of working in a system with them. I bet Ubuntu's and MacOS's defaults are just as bad, but I haven't used either enough to know.

Windows actually got worse last time it changed, too. Windows 95 gave you a pretty simple way to get a practically limitless array of color schemes, including several that were pre-selected for not being totally garish. Some of these presets illustrated why the flexibility was useful: high-contrast schemes in dark and light varieties, large- and small-text schemes, schemes for morning and night. With XP's "bluecurve" styling they cut it back to three choices, none catering to these practical use cases. The experts have chosen your colors for you, and while none of them are actively bad, none of them suit my needs as well as an old-school ugly theme with a really bright color for the foreground window border.

Meanwhile, FVWM, with its ugly old MWM-style window decorations, knocks it out of the park by default. There's no mistaking the window with the hot-pink border for a background window. But you can change it to anything you want (including nothing at all) if you're not afraid of a text editor. The flexibility makes my brain bleed. It's not as slick as the Windows 95 themer, but it allows me to build my ideal UI based on my experience. It couldn't be that slick because there are just too many choices to list in a GUI.

And that brings us back to do, do, do, do, do! Ok, I'm done!

No comments: