Friday, September 26, 2008

I'm Late, I'm Late for a Very Important Debate

I'm a young guy. I probably saw at least some of Bill Clinton and Bob Dole's debates in 1996, but don't remember it. The only Presidential debates I have to compare tonights to are the previous to, and those two had obvious problems. George W. Bush isn't a very good debater, but he's a tough person to be in an argument with. I'm sure everyone has sparred with people like that. They won't make many points, but they'll sure distract you from making yours. The level of discourse in those debates was pretty bad, and none of the candidates involved showed themselves very well in my mind.

So it isn't saying much to say that tonight's debate was the best-looking Presidential debate I've seen. Campaigns are highly controlled and scripted, and anything surprising coming out in a debate would be considered a mistake for either debater. Other than McCain's spending freeze comment, which Obama effectively dismissed, I didn't hear anything new, and I don't follow the minutiae of political campaigns (I'd lose my mind). The spending freeze comment wasn't unpredictable, even, given his view that the way government spends money is a moral issue (a lot could be said about this, but not here). Both candidates kept to the script and neither pushed the other. So with no new material and no attempts at debates of substance there were plenty of attacks. Plenty of attempts to take previous statements out of context or to portray an opponent's position as unreasonable, unwise, dangerous.

The thing that made this debate stand up over the last couple rounds of them is that both of these candidates can deliver a zinger without smirking. Both can and do make attacks without dwelling on them excessively, and they don't take risks by improvising attacks. They punch but keep their gloves on and their hands up. Early on McCain twice referred to the "fiscal" crisis; the subtext is that it's a mere issue of balance keeping, the result of isolated mistakes and not of systemic problems. That's a phrasing that a more aggressive candidate might have attacked specifically (I can see Gore or Kerry dwelling on something like that), but Obama went back to the old "fundamentally sound" comment and didn't connect it to the language he'd just heard. As a result they cover a lot of ground, even if it is ground well-covered. At the very least, I don't think anyone's threatening to move to Canada over the idea of either of these two holding the presidency.

So, of course, the next debate is between Sarah Palin and Joe Biden. I don't expect either to be so cautious or so civil. Palin just held her first mini-press conference yesterday, and didn't go beyond some really general statements about 9/11 (to be fair, she was outside ground-zero and asked questions about it). The worst case is that she'll debate like Bush, with hefty doses of obstruction and pettiness. The best case is probably that she's being coached to debate like Bush, but is sharper. Either way, I don't see Biden responding to such tactics with the plodding sobriety of Kerry or Gore. Mud will fly. I'm bringing popcorn and beer.

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!

Sunday, September 14, 2008

How am I driving?

After writing the last post I was thinking about why I write this blog. I originally intended it to be a place to post music and stuff, but that hasn't really happened so much, mostly because when I'm making music I don't like having to stand over my computer trying to make it understand (whether through recordings or otherwise).

What I wind up doing a lot of is writing about computer stuff I encounter all the time, and what it means in a larger context, or I feel about the whole enterprise. Even though most of y'all reading this aren't programmers according to your college degrees many of you write programs and all of you use computers (many great programmers don't have degrees in a related field; this by necessity includes all computing pioneers). So I like to think about what computers do, and what we think they do but they don't.

I think these questions apply to everyone and I think they can be discussed by everyone. Probably not everyone really cares that much, and that's cool. I'm just saying it's not above anyone. Because I have some training and experience in computing I know a fair amount of its history and current happenings. I like to try to share them and de-mystify them, but without turning it into a tutorial that would be boring for someone like me to read (I usually post things that I wouldn't have thought of a week before). I just realized in my last post that I tried to explain HTML's hierarchical nature by referring to Wheel of Fortune, the Lolcat Bible, and a Unix shell command that's a somewhat common signature on geeky message boards; I also assumed knowledge of common old-school HTML tags. Maybe I just should have said, "You can't do Venn Diagrams."

Comments? I probably won't be offended by anything you might say...

Intersections of human and computer languages in our daily lives

One of the programs I'm writing at work has to glean some very simple information from general HTML documents (that should be general enough not to get me in any trouble, on the off chance that anyone ever reads this stuff anyway). The original idea, suggested by the guy that came up with the design for the larger project that this is part of, was to find a library to represent the data as a tree structure, and search through the tree for what I needed.

I want to be really clear what this all means. HTML is commonly thought of as a Markup Language, a way to communicate to a computer some useful facts about a body of text. In HTML, the markup, that is, the elements that aren't text data but are metadata, come in the form of tags. These tags can enclose text. Some of the tags lay out the structure of the document (i.e. <h1>, for a top-level section heading) or give some other semantic information about the enclosed text (i.e. <samp>, for sample output from a computer program). Other tags tell how the author wants the text to be presented. <em>, for text that should be emphasized, and <i> for text that should be italicized; usually a web browser presents these the same way, but they mean different things. The Internet Police don't want you using <i> anymore, and HTML doesn't have tags that cover all the reasons that an author might specifically want something italicized, so people (like the people that wrote Blogger) write stupid shit like <span style="font-style:italic;">.

That's not the whole story on italics, even. People that want to write really “good” web pages will come up with classes of text they always want italicized (say, names of dinosaurs, or of planets), mark them up as instances of these classes (like, Everyone bitched and moaned when <span class="planet-name">Pluto</span> was banished from the Brotherhood of Planets, but where were all they when the majestic <span class="dino-name">Brontosaurus</span> had its name reduced to the utterly unpoetic <span class="dino-name">Apatosaurus</span>?), and define a rule in a stylesheet that text belonging to those classes should be italicized (I don't remember how to do this, it's been a while). And then anyone that wanted to find all the planet and dinosaur names in your document could do so easily by writing a simple program looking for these classes. This last part is the promise of the Semantic Web: that the content of the web will be understandable by humans and computers alike.

The problem, though, is that HTML marks up text. That's not exactly true. I mentioned earlier that HTML is commonly thought of as a markup language; it's technically a hierarchical container language. That's because sections of text defined by tags are only allowed to overlap heirarchically. That is, if you were writing a “Before and After” puzzle for Geek Wheel of Fortune (in which you can use vowels for free but have to buy shell control characters) you couldn't illustrate the premise like <i>If you duz good, you can has a cookie from teh Life Tree in teh garden of teh ceiling <b>cat</i> /dev/mem | strings | grep -i llama</b>. So HTML contains text, hierarchically. Language is not really hierarchical. You can sort of make it appear that way by diagramming sentences, but even that doesn't really represent all the relationships between words in a sentence. It's an awfully reductionist way of looking at language that doesn't do justice to its subtleties, nor to how it evolves. So HTML does a pretty good job of organizing the things that can be organized hierarchically, and leaves the rest to the human ability to process language. Otherwise we'd have this: <p><sentence type="command"><subject implied="yes">you</subject><verb>see</verb><object direct="yes"><noun id="1">Jane</noun><verb performer="1">run</verb></object></sentence><sentence><verb id="2">run</verb><subject>Jane</subject><restate id="2" /></sentence></p>. And if that hurts your head, view the source of it and see the shit I had to write to express an HTML-like language in HTML. I need beer.

<sentence><subject>Al</subject><verb>drink</verb><object with-article="indefinite" plural="yes">beer</object></sentence>

My point is that as long as our Brontosaur-loving friend writes his rants in a natural human language computers will never understand his pleas. They'll go right on renaming dinosaurs, reclassifying planets, and destroying the game of baseball. And that he'll never get anything written in a computer-friendly language, especially if he has to spell out all the relationships between the words and the concepts they refer to, which he will, because computers aren't any good at figuring them out (there are attempts to make computer-friendly language models that suck much less than my token attempt; one is predictably named Babel, and it doesn't appear to represent non-hierarchical word representations at all). His clever use of stylesheets and classes comes out to little more than a very indirect way to say <i> (yes, I know there are theoretically advantages in presentation flexibility and maintainability; I submit that they just about never matter in the case where you're making up your own classes).

Now there's XML. XML is a container language similar to HTML, aimed at representing hierarchical data. My language-modeling language up there is basically XML, though I'd need to flesh out a schema (a definition of the possible elements and how they can relate) for the data to be usable in computer programs. Because I used a lot of well-known grammatical terms (and probably misused some) a human could figure out much of the schema just from reading those simple examples. There seems to be a bit of an XML dream, related to the promise of the semantic web. People get all excited when they see the flexibility of XML and think that it could model all information some day, when computers have the capacity. But it's not that simple. Can the computer program deal with the ambiguity of the same information arriving in different forms and from different sources? Only if the programmer specifically knows about the ambiguity and writes code to handle it. So in reality XML is just used as a way to pass arbitrary hierarchical data around the Internet, much like ASCII is used to pass sequential data around in Unix programs, especially shells. Both present plenty of flexibility and transparency to make up for their inefficiency compared to more specialized data formats, but neither can describe the universe. Only Nil can do that (also see here for an example of a Nil paradox).

So as far as my little program went, I tried to use the hierarchy of the HTML document to interpret its contents (using Perl's HTML::TreeBuilder). It didn't work very well. An HTML document expressing the same information can be structured in a staggering number of different ways. But in order to make sense to its readers it has to present its text in a natural order. So it turned out to be fairly easy to put together a much more robust version of the program by scanning through it with HTML::Parser. And it's faster and uses less memory that way, too (I don't expect that the performance difference will matter, but it's a good example of an optimization coming from thinking about a problem in a better way). Instead of viewing the documents as structures of containers holding text, I viewed them as text with some helpful tags giving hints to their structure. Human sequential understanding, 1; computer hierarchical understanding, 0.

Monday, September 8, 2008

Sunlight and Time

A recent Slashdot story's discussion got way off track (you don't say!) and people started arguing about the merits of daylight saving time. As a cyclist and runner I'm often pretty consumed with not getting killed on the road. So...

Spring Forward:

Next we compare the total of traffic fatalities for the Monday immediately following the DST shift with the pooled frequency of accidents for the previous and following Mondays. The spring DST shift (where one hour of sleep is lost) shows the expected increase in accidents with relative risk (RR) of 1.17 [95% CI=1.07/1.29, p2(1)=10.83, p < 0.001]. This 17 percent increase is larger than that observed in previous studies. The same analysis conducted for the fall DST shift, however, produces an insignificant reduction in traffic deaths [RR=0.97, 95% CI=0.89/1.07, p2(1)=0.29, ns.].

And Fall Back:

However, recent research indicates that pedestrian fatalities from cars soar at 6:00 p.m. during the weeks after clocks are set back in the fall. Walkers are three times as likely to be hit and killed by cars right after the switch than in the month before DST ends. Researchers from Carnegie Mellon University, who found a 186 percent jump in the risk of being killed by a car for every mile walked, speculate that drivers go through an adjustment period when dusk arrives earlier. Although the risk drops in the morning, because there are fewer pedestrians at 6:00 a.m., the lives saved in the morning don’t offset those lost in the evening.

So overall traffic accidents increase after the spring switch because the cagers are asleep, and pedestrian fatalities increase after the fall switch because the gradual shortening of daylight is interrupted, plunging their commute suddenly into darkness. I think I'd rather we not do any of this switching. Since we're now on DST for almost two-thirds of the year, why not use it all the time?

The funny thing is that people in my generation seem to waste morning sunlight in bed and keep our lights on late into the night. I'm certainly guilty of it now, though that hasn't always been true. In middle school I practiced clarinet early in the morning, before before-school band rehearsals. One summer I wrote music before morning cross-country practice. In high school I woke up early one winter, prompted by Jason Zencka and a Thoreau quotation. I think most of those days I went running. Once I hit college, though, I never managed to get my ass out of bed in time to do much more than take a shower and shovel down breakfast (if that) before class. That has certainly held true since graduation.

When I moved to my current apartment in June I took the opportunity to shake up my routine a bit. I waste less time on the Internet than I did before, and have been able to read more books. I still waste too much time on the Internet, and most of it is late at night. I think I'm going to try to get to bed earlier, wake up earlier, and use the morning sunlight to run. And hopefully I can use this shake-up to really cut time-wastage. We'll see.

Saturday, September 6, 2008

Shireland?

Shireland!

Beyond the garish web design (this blog is just as garish, really, in a different way), the annoying ads, and that you have to click through so much crap to read anything, an interesting read.

Dear Costa Rican Guy,

I am not a hippie.

I forgot to cut my hair for a year, but that's no ...

OH RIGHT, my distaste for Lincoln Park has again compounded. Lincoln-Park-the-neighborhood, that is, which contains De Paul University's main campus, about a third of Lincoln-Park-the-park (which is about four miles long north-to-south), the zoo which is in that part of the park, and lots of other stuff. I have told you nothing about the place, though.

I've started reading Christopher Alexander's The Timeless Way of Building and will probably go on to read A Pattern Language (mostly to see if it can help me become less of a reductionist in my computer programming, but that's a story for another day). As far as I've read he's discussed how places cannot be separated from the patterns of events that occur there, and how physical elements of a place are really patterns of relationships.

One pattern that repeats itself in Lincoln Park is the bar devoted to Big Ten college sports. Related to this, during football season you'll see packs of young people wearing Ohio State and Michigan jerseys walking in sidewalk blockage-maximizing formations taunting each other. I'm not sure why this is such a thing in Lincoln Park; is it like that near Northwestern? U of C? I don't think it is around Loyola or UIC.

Supposedly not long ago Lincoln Park was, outside of the campus, a poor neighborhood. It's pretty swank at the moment. So the typical juke-n-puke bars are decorated like Disney fascimilies of Irish pubs or other little neighborhood joints. The guys at Forgotten Chicago call this suburbanification, but I think that's just heaping more blame on the archetypal suburb for the banality of hyper-specialization, which is most prevalent in wealthy areas, which happened to be largely suburban in the late 20th Century in America, but didn't have to be. It looks like suburban styles infiltrating gentrifying city areas, but that's not quite accurate. Chains that grew up in the city aren't any less suffocating (Starbucks started near (historic!) Pike Place Market in Seattle, and even plays the same music at all its locations, except for the drive-through only ones; at one of these distinctly suburban locations the workers chose Japanese heavy metal on the day when all the other stores were trading hype with Paul McCartney's then-new album). For Chambanans, think It's Brothers!, or really any of the new Green Street construction. Say what you will about the Daniel Street bars, they are not ashamed to show themselves as the vulgar, hulking dives they are. When they go down... well, I won't say anything rash about civilization dying, because human civilization is pretty robust to losses of dignity. But it will be sad. Yes, I'd be sad if Kam's closed, even though I never set foot in the place (I never set foot in most of the Green Street stores that were replaced by upscale chain retail; I don't buy stuff when I can avoid it, so it's no surprise perhaps that businesses that survive appeal to people that aren't like me at all).

Short version: I went out to the batting cages last night to blow off some steam, then met some co-workers at a bar in Lincoln Park afterwards, and now I have more steam than before. More to this that I choose to self-censor. Inquire within if ya must.

Monday, September 1, 2008

"... the police were authorized to look for ... maps of St. Paul ..."

Go Team... Something...

And the full quote that I took apart for the title:

A copy of a warrant at one house said the police were authorized to look for a laundry list of items, including fire bombs, Molotov cocktails, brake fluid, photographs and maps of St. Paul, paint, computers and camera equipment, and documents and other communications.


Photographs and maps of St. Paul.

People say we're living in something called the "Information Age". That doesn't mean that technology, liberty, and free flow of information change anything about our physical relationship with the world (the blogger linked was surprised to hear this; amusing), but it does mean that people have and can get information much more easily than ever before. Also misinformation and non-information, but I don't think those things are as important. It means that having maps and photos is pretty irrelevant. Public information about where stuff is and what it looks like is public with the force of two of our scariest big companies. Private information about whatever crazy shit you're planning can be hidden, at least for a while (it's harder and not as well funded as making information public). Ultimately raiding people's houses like this will be not only an abuse of police power but completely pointless. The reaction from governments has largely been to turn up the heat; as searches become harder to perform remove restrictions and expand police power. Try to outlaw encryption or force people to give up their passphrases (as I understand it there's a question whether computer files can be treated like physical property that can be seized or whether giving up your keys is testifying against yourself, which can't be forced). Ultimately trying to find the information will be futile anyway.

So quit the bullshit and do security right. Not that the geek Cult of Schneier is totally rational, but he cares about results over theatre (yeah, the feeling of security is important, too, but people can be educated about the realities, and they increasingly can get the information necessary to see through the illusions), and cares about living in a free society.