nerd post

Posted by David on May 11th, 2009

I saw the new Star Trek movie.  I can’t remember what’s in the promotional material and I’d be bad at filtering through that anyway so, if you care about that kind of thing, look out: oh noes spoilers.

So.  I thought the movie was merely ok instead of super great, and my problems come in three classes.  The first and most expected is the direction.  Mr. Abrams’ style is different from the usual stiff, thinky Star Trek we’ve seen in the past, and I’m ok with that.  I have come to terms with the idea of Star Trek looking like Mission Impossible 3.  What made me cringe was when it looked more like Mission Impossible 2.  There was one scene in particular where young Kirk was crashing a Corvette, andt it looked like he should have come flipping out of the car guns akimbo to complete the scene.  That was unnecessary.  Also unnecessary was the overuse of shaky-cam.  Some shakiness can be used to great effect to create a sense of chaos, but its use in every single action scene managed to destroy both the vastness of space and the submarine-like closeness of the ship.  A good slow sweep through an explosion or two would have a nice contrast.

Secondly, there’s the whole younger timeline bit.  This movie has to tread a thin line between appealing to nerds like me, who have seen that TV episode where Kirk shoots a guy in a rubber lizard suit with a makeshift cannon, and the new fans, who maybe haven’t even seen the movie with the whales in it, but there were just too many times where a character would show that their younger self has the same flaws and quirks as their eventual older selves, and it did nothing to build the character or advance the story.  They were brief nods to people like me who could catch the reference, and while it was funny at first to see young, good-looking actors playing the familiar roles of Kirk and Spock and Bones, sniping and rolling eyes and saying all the right phrases, it got a little too Muppet Babies after a while.  Just let the relationships, which are really pretty straightforward, build naturally.

And then there’s the plot.  My gripe here is that it’s a Cliff’s Notes Khan.  Part of what made The Wrath of Khan so powerful is that it’s Moby Dick—it doesn’t matter that you never read it; it’s still a universally understood theme—with a twist.  Kirk is the instinctive force of Nature, ignorant of the effects of his actions; but his essential drive is intellect and not the mindless hunger of the white whale, creating instead a movie with two Ahabs.  The Romulan Captain Nemo is a really shitty Ahab.  There was never any real menace to his presence.  He wasn’t a relentless, pursuing force, but instead more like one of those space anomalies you’d find in Voyager.  The movie became about building a relationship between Kirk and Spock, a relationship that half the audience already knew and the other half could figure out in fifteen minutes: Kirk is constantly looking for Spock’s human side and Spock is strugging to hide it, and McCoy is miserable about everything.  It’s a drama without a villain.

It sure was pretty, though.  I hope it can set up a really nice sequel.

Garden report

Posted by David on Apr 25th, 2009

Q: What the hell am I going to do with all that cilantro?
A: Nothing, it died

I’m starting to see the shortcomings of trying to grow plants on a covered balcony that only gets full sun for about half the day.  The cilantro didn’t make it, but everything else seems to be doing ok.  I planted some flat-leaf parsley in its place, since I use more parsley anyway, and that’s going confusingly.  Pretty much all of the original leaves died after planting it, but there’s a lot of new growth.  I don’t know how that’s going to go.  The curly parsley is still going strong.  I gave the mint a big, flat pot so it can go all ground-covery, and it’s growing great.

I planted some basil that’s doing pretty well, and the tomatoes are growing slowly but steadily.  I don’t think the peppers are going to make it.  Thyme and rosemary are doing great.  And then there’s the garlic.  I cut off some of the scapes once to make some delicious pesto, and dang but they grew back mighty quick.  In light of this I think I’m instead going to try to just keep growing scapes.  I can buy garlic bulbs at the supermarket, and scapes are something delightful that I can’t get anywhere else.  Yay garlic.  I guess I’ll have to find some more ways to cook with it.

How does your garden grow?

Posted by David on Mar 15th, 2009

I haven’t given much thought to St. Patrick’s Day yet this year.  Tuesday is kind of an awkward date for it.  I guess for some last Saturday made the most sense for the Irish stereotype celebrations, but I don’t know.  It seems like pushing things that early could be bad luck.  I’ve got all of the ingredients for the traditional Irish-American meal, so I figure I’ll just toss those in a crock pot on Tuesday and watch The Quiet Man.

I wasn’t wearing the green this Saturday, but I did start drinking at noon.  A friend from high school made a trip to the A this Saturday, which began with tapas and sangria for lunch and ended with me going home with an IKEA bookshelf and the new Lily Allen CD.  There was some other stuff in there too, I think.

As for the rest of the weekend, I think I’ve hit the point where my misplaced ambition as far as plants has gone far enough.  Last year I did pretty well with growing basil and oregano, I did ok enough with a mint sprig I bought from the grocery store and got to take root, and the garlic that I planted way too early, aiming for this year (it didn’t occur to me that first freeze in Georgia doesn’t mean it’s going to stay frozen) grew some scapes that made a nice extra touch in the stuffed squash I made for Thanksgiving.  So I’ve proven that I can grow some things that can be used to delicious effect, and obviously that means I should completely overdo it this time around.  I now have parsley, rosemary, thyme (no sage, at least not yet), cilantro, the mint from last year, some oregano cuttings from the old plant that I’m hoping will root, some basil, tomato and serano peppers planted from seed (not sure if the basil is going to work, I’ll just buy another plant if not), a couple of decorative plants that are supposed to do ok inside in low light, and some more garlic.  I don’t know what’s going to come of all of this, but I bet it’s going to taste fantastic.

Gently used year’s resolutions

Posted by David on Feb 7th, 2009

New year’s resolutions are probably as old as the idea of a new year itself.  People are awful at being alive, and the transition to a new year is a perfect time to create the sense of a fresh slate, a new beginning with new goals and eventually old disappointments.  I, too, am bad at being alive, and I decided to be fashionably late in my resolve.

So many resolutions are negative things, attempts to end old bad habits: don’t watch so much TV, quit freebasing cocaine, stop kicking the dog.  I’m going to try to be positive in mine.

Get in shape

Specifically, I’d like to get back to where I was about a year ago, and maybe do some pushups once in a while this time around.  Maybe that’s kind of a negative resolution, but I have a plan for action.  I’ve already started riding my bike into work again, so I need to keep at that.  Wii Fit might have a place in this plan, but I wouldn’t count on it.

Read more

I enjoy reading books but I don’t read very much.  I would like to change that.  This one is mainly a problem of starting a habit.  I need to set aside some regular time to just chillax and read a couple of chapters.  I’ve started with Grapes of Wrath, which seems appropriate to the times.  I’m open to suggestions for what to read when I’m done with it.

Learn a new language

Like reading, this one is a matter of forming a new habit.  I tried this for a while last year with Mandarin, and at least got a sort of beginner restaurant Chinese into my head, but my studies were irregular and eventually abandoned.

Find time for hobby programming

Again, what I need to do is do something productive with my free time.  One of the awful things about my time at Autovin was stagnation.  I wasn’t learning anything new, and I wasn’t doing anything that I’d want to use in another job.  This hasn’t been a problem anymore, but there are some things that I’m really bad at.  I have ideas for some learning adventures with web programming and GUI design.  They’re probably too ambitious to ever be completed, but I at least need to take a shot and try to learn something.

Listen to more music

A quick glance at the music collection shows I bought about a dozen new albums in 2008.  It doesn’t seem like very much.  Wading through the sounds of yesteryear is ok, but I need to try out the sounds of today, too.

Eat better food

Not necessarily healthier food, just better.  No more of that pre-grated Parmesan cheese; the real stuff is so much more delicious, and the extra work of grating is definitely worth it.  Less fast food, and no more eating at any of those bland but sort-of convenient chains near the office.

Drink better

As with food, I’m looking to improve the little experiences of my life.  If I’m drinking a beer or a wine, I should take to care about what it is and how it tastes.  And I should experiment more with cocktails.  For classic mixed drinks half the fun is figuring out the history of the drink, how it was originally made and how it might be improved, and, like cooking, history is a guide rather than an aspiration.  Unlike cooking, mixing spirits often takes relatively little effort, making the cost of experimentation low.  If something turns out bad, just pour it down the drain and try something else.  All of us can get drunk on the shoulders of giants.

So here’s to a new year and new ambition.

Move by a thousand cuts

Posted by David on Dec 11th, 2008

I am moving.  I work way out in a different suburb now, and Gwinnett lacks the public transportation I depended upon to avoid driving a similar distance to Alpharetta.  Also, my current apartment is awful and I am sick of it.  I am tired of stepping in dog shit in the mornings, of hearing each nuance of my neighbors’ getting crunk, of ignoring the burnt out husk of one of the buildings, the occasional gunshot, the broken alarm in that Georgia Power truck that starts beeping whenever the temperature drops, the ham-handed attempts at gentrification that are clogging the streets with the accoutrements of construction and killing any character that decrepit shopping center on the corner may have once had, and I am tired of ignoring the general atmosphere of apathy and futility.  I need a change.

I’m doing things a little differently this time around.  Instead of renting a U-Haul and bribing some friends with lunch and a case of PBR, I’m hiring people that do this sort of thing for a living.  Moving is awful, and I never again want to drag that washer and dryer up or down any flights of stairs.  I can just do the American thing and throw money at the problem to make it go away, but, unfortunately, there’s more to my bright idea.  Starting with the premises that a) acquiring boxes is a major hassle, and the easy route of buying boxes from the movers that will be used once is wasteful; b) I’m already traveling every morning in the general direction of the new apartment; c) I have a week between getting the keys to the new place and the date reserved with the movers, and d) car can hold things and move them between points, I came to the conclusion that I could just use whatever containers I had on hand—a handful of boxes saved from the last move, recycling bins, stolen milk crates, a bucket—to move everything that isn’t furniture in the week leading up the big move.  I could drop everything off in the morning, empty the boxes and containers into a corner somewhere and bring the empties back at night.  I neglected a couple of things: a) I own several heavy things that are not furniture and b) I drive a compact car.

I’m moving to Suwanee, more or less at the point where Gwinnett, Fulton and Forsyth counties all meet.  It’s farther north than Discover Mills but not as far as you have to drive to see an Imax move that isn’t about birds.  I haven’t yet come to terms with living this far out in exburbia, but it seems to have a lot going for it.   I’ll be close enough to work that I can bike again, there are little pockets of places to go and things to do even if not a whole city’s worth, and most surprising, there’s a lot bikers in the area.  This part of Gwinnett county has bike trails and bike lanes and yuppies fearlessly riding carbon fiber down busy streets.  Maybe it’s be an ok place to be.  I got the keys on Monday.

I won’t be able to move everything I originally wanted by this Saturday, but it’s been going a lot better than the revised, somewhat panicked estimate I made once I figured out how many boxes of stuff I could move at a time.  All of the heavy books are moved, and I’ll at least have all of the furniture cleared off before the weekend, along with most everything else except for a closet or two and probably the bathroom.  I’m waiting for the shelves and tables and cetera before I try to figure out where to place anything in the new apartment, and so far it looks like the kitchen is going to the biggest problem.  The new kitchen, though a little smaller, is also more open and has more usable counter space, so it’s really an upgrade in that I’ll be able to cook without struggling to find room for a cutting board and maybe I won’t break as many things when not rushing around in a claustrophobic alcove.  But I lost some cabinet space.  I’ll have to be more creative about storage.

My first neighborly encounter was with a lady who wears too much perfume and owns a little yappy dog that peed on my car.  She lives in the apartment next to mine, and while I was bumping and clumping around dragging the first wave of heavy boxes up the stairs, Mr. Yappy spent much of time barking at the door, challenging my presence and all the noises of moving stuff.  Once I stepped inside and closed the door, I couldn’t hear a thing.  Maybe this new place won’t be so bad.

Software is awful

Posted by David on Dec 5th, 2008

I used the Wordpress-native XML format to import the nanoblogger data.  WXR is basically just RSS with some extra tags, nanoblogger can create RSS on its own, and for the extra tags I thought that Python would be a good idea.  Python is nice in that it lets you write something quick and sloppy without actually looking too sloppy (I’m looking at you, perl), and it’s supposed to be to handle XML pretty well.  Maybe it can, but I certainly haven’t figured out how.

There are basically two ways to parse XML: the SAX method, a low-level, procedural technique that requres a maze of callback functions to examine the document as it’s parsed, and DOM, an object-oriented method that works with a completely parsed document.  Along with the XML format itself, the W3C also created the Document Object Model, a standard for accessing and manipulating a parsed XML tree, and like most W3C standards, DOM is awful.  It caters to the lowest common denominator of languages (C), and most XML parsers try to implement DOM with standards-compliance in mind, turning what should be a high-level language into an awful, procedural mess.

XML’s verbosity becomes even more boggling once parsed.  For an example, let’s take a look at a simple XML document.

<?xml version="1.0"?>
<root>
   <item>The text you actually want with maybe some <![CDATA[cdata segments]]> in it</item>
</root>

Let’s say you’re starting at the root node of the document, <root>.  What you’d want is a way to get to the text in the <item> child of <root>.  The CDATA part doesn’t matter—it has the same semantics as plain text; CDATA just changes the quoting rules, and the content of <item> is in effect everything that’s there with the <![CDATA[]]> stripped out.  But that’s not what you get.  In DOM terms, <root> contains three nodes: a text node with the linebreak and spaces between <root> and <item>, the actual <item> element, and another text node with the last linebreak before the closing </root>.  <item> also contains three elements: the text leading up to the CDATA section, the CDATA node, and then the text after it.  Given a strict DOM implementation in Python, the most python-y way that easily comes to mind for getting to the text would be something like:

reduce(lambda x, y: x + y.nodeValue, [''] + doc.documentElement.childNodes[1].childNodes)

That, of course, depends on the particulars of all that whitespace we don’t care about.  Now suppose <doc> contains several <item> elements, and perhaps some elements of other types.  You might try to make yourself a list of <item>s using something like

[node for node in doc.documentElement.childNodes if node.nodeName == 'item']

and even now we’re getting sloppy.  nodeName isn’t exactly the same as tagName; nodeName might pick up an unwisely named processing instruction, so we really ought to add a check that node is an Element, and we haven’t even started looking at namespaces.  Xpath offers a query language for getting at particular nodes with particular names and properties, but xpath will just return a NodeList object and leave you back at the beginning as far as getting to the content.

If you don’t see anything wrong with this article so far, you might want to stop reading now.  I am mad at you.

Python comes with a DOM implementation, xml.dom.minidom, for DOM Level 1, and it includes a specification for DOM Level 2—which is basically the same thing as far as node selection—that others can implement.  Pyxml provides DOM Level 2, and both it and minidom are fairly faithful implementations of the W3C standards.  XML in these systems is not an easily manipulated tree, but instead a forest of corner cases and finger-bending verbosity.  This is XML in Python.  Even freaking Javascript handles it better than this.

The best alternative I’ve been able to find is amara, Uche Ogbuji’s attempt to interpret XML in a python-friendly way.  It’s actually pretty nice.  For the document above, I could access the item node (again using “doc” as the parsed document object) using doc.root.item.  For a document with more than one <item>, the same code selects the first <item> node but can also be used as an array or an iterator.  As for the content, the node object implements __str__ sensibly, so just using the in a context that expects a string will provide the text content, CDATA and all.  It just about makes XML make some sense.

Compared to the trials of pyxml or the similarly low-level libxml2 bindings, my problems with amara seem almost trivial.  The first concerns namespaces, an issue that seems doomed to be awful in any implementation.  Google for “xpath default namespace” if you want some fun bedtime reading.  Amara ignores namespaces if you ignore them, which, since you can’t include a colon in a python property, usually works for the best.  The namespace URI is available as a property of the node objects, and, as an added bonus, the amara parser will load the document’s namespace prefixes for use in xpath expressions and serialization.  It also provides a means of specifying a set of namespace prefixes when parsing the document, but I’m not sure where these are actually used.  The extra prefixes seem to be available for xpath, but not for the names used when creating new elements, and serialization will still use whatever was in the original document unless overridden in the serialization function call.  So I guess my complaint here is that the API could stand some better documentation.  And prefixes in element creation would be nice, or at least nicer if it turns out they’re there and I just don’t understand how to use it.

A bigger complaint I have with amara concerns how it handles one of the nastier quirks of Python.  In Python there are two types of strings: the regular kind, and the unicode kind.  Usually this difference isn’t a problem; 'string' and u'string' seem like they would be the same thing, and usually they are.  Python’s idea of objects and types uses a concept known as “duck typing” (if it looks like a duck, and it walks like a duck…), which just means that object types don’t matter as much as the methods they implement.  For example, the str and unicode objects both implement the join() method, so an object of either type can be used in a context that expects join().  The problem with amara is that it requires every string—new element names, attribute names, node and attribute contents—to be a unicode type.  The especially annoying problem with amara is that it doesn’t fail to create nodes using regular strings, but it does fail to serialize nodes using regular strings.

What I really want out of python is about what amara is doing, something that can turn tag names into object names, convert attributes to and from the python dictionary type, and generally hide most of the nastier parts of XML while still exposing enough of it when needed, like the cdataSectionElements parameter in the serializer that I needed in order to make Wordpress not freak out when given unquoted post contents.  But I’d like something that behaves more intuitively for all cases, and, in a language that claims to be pretty alright for XML processing, I’d like XML methods better suited to the language itself built into the standard library.

Try it all over again

Posted by David on Dec 4th, 2008

It’s been a couple of years now, so I figured it was time for another change.

Until fairly recently, I ran this site from my own computer, usually the worst computer I had that could still boot, since anything better was being used for something else.  Besides the administrative headaches the MP part of LAMP was problematic for a machine with limited resources that had a tedency to overheat and crash.  Nanoblogger was an attractive choice when I moved back to HTTP, since it did all of the processing while publishing instead of serving.  Instead of a database it had a directory full of text files, and it created a new set of static HTML pages every time I wrote something.  I didn’t have to worry about overhead or any of the testing and debugging that comes with a web programming language.  There was no run-time to fail; either nanoblogger output new pages every time or it didn’t.

The main downside to nanoblogger is that it makes publishing slow.  Especially with the number of pages I was trying to squeeze through it, any particular blog post would take five or ten minutes to generate, whereas a dynamic content management system could have quickly inserted a few records into a database and regenerated the pages on the fly.  Nanoblogger didn’t react well to changes in categories or pages older than the newest 10, and rebuilding the whole site after some such major change took hours.  The other main downside to nanoblogger is that it’s not very well designed or maintained.  It has a plugin system of sorts, but it’s hard to use (bash isn’t the best language for doing anything interesting, for one), and there isn’t enough of a community to build an interesting library of nanoblogger extensions.  Nanoblogger is an interesting idea, but in practice it’s inconvenient and inflexible.

I don’t need to worry anymore about database administration or processing overhead because I pay someone else to worry about all that, and the hosting comes with a wordpress installer, so I figured I’d give it a shot.  I don’t know if it’s the best or easiest, but it seems to have enough of a community that I don’t need to care.

As for that community, one big snag I hit in the transition was in the choice of theme.  This version of Wordpress comes with two themes: the way it looked a couple of versions ago, which had the same sort of plain, slapped-together look I had with nanoblogger, but with different colors, and the way things look now, which uses a blue background behind a narrow white column of text.  The Wordpress default is part of the popular “fixed width” paradigm, which basically means that a web developer made some incorrect assumptions about the dimensions of your browser window.  Remember those pages back when companies were just starting to think they could make money off the Web, back when everyone had a geocities account; those pages that would say things like “Best viewed in Netscape 3.0 at 800×600”?  Remember how annoying that was twelve freaking years ago?  We’re doing the same thing all over again, it just takes an extra file to say it.

I don’t have a high opinion of CSS.  I understand why it exists and why we should use it, but I don’t think that separating layout from content can be done in something as unrestricted as HTML.  No one writes CSS for all HTML: it can’t be done.  You might be able to do something with fonts and colors, but what about all those <div>’s where your tables used to be, or the <span>’s that you used instead of <font>?  The average stylesheet only makes sense when paired with a particular template.  We haven’t improved anything, just changed the vocabulary and made the layout more difficult as tags turn into id and class selectors that never quite work the way they used to.  But CSS is what we’re stuck with.  I can understand when people take shortcuts to get something working instead of making it conform to what might be correct today, but seriously, we shouldn’t be specifying a width for the entire page in pixels anymore.  It’s like a single newspaper column all the way down the page, and I don’t even get to read Garfield at the end.

The theme I settled on was Zen in Grey, which I chose because it’s variable width and I think it looks mostly ok.  The CSS came broken, since the author apparently doesn’t use the calendar that was turned on by default, but a few extra paddings and marginses at least made all the boxes not overlap.  I don’t know how correct it is and I don’t really care.  I like this theme better than the other options I’ve seen, but I’m not terribly attached to it.  If anyone out there has the motivation to do something better, send me some files.  I’ll buy you lunch or something.

I don’t even know what I want out of a computer anymore.

Outside of my job, the things I want a computer to do are about the same things anyone wants a computer to do:

  • Surf the information superhighway
  • Read and write email
  • Store recipes
  • Play some wicked tunes

Since about 1998 or so I’ve used Linux at home, the reason then and still being that I like to tinker. Windows is pretty alright for the things I want to do but often confining, and I’ve never quite been able to wrap my head around Mac OS. My attempts at using Mac OS, even without the xtreme popup rad-mode dock, have usually ended in confusion over some detail or another, and I still haven’t forgiven Apple for Quicktime.

As far as my computer habits today, the difference I’m finding is that while I still like to tinker, I’d rather not have to. I’d like for everything to work right out of the box, but I know that this will never fit my skewed view of the world, so I’d instead like everything to work after the box, some brief configuration and a handful of extra programs. My choice of web browser dates back to the Netscape wars with reasons long since irrelevant, but I now find the Web unusable without Adblock and a browser that makes such extensibility possible. I use Thunderbird mostly because it’s slightly less awful than the alternatives and less likely to do something unexpected. My music player, Amarok, is really the only choice that binds me to Linux. Could I find something in Windows to fill the gap? Probably, but it was painful enough finding a good player in Linux that doesn’t choke on a collection of my size and understands that some albums have more than one artist. I stick with Linux partly because of its philosophy of customizability–easy access to keyboard shortcuts, “sloppy” focus, finely tunable keymap options that present the full range of human expression, or in my case at least the full range of New Yorker English and the occasional dash or two–but mostly because of the environment it provides for when I program as a hobby instead of as an occupation. Windows provides some very nice tools, some them now even free, for building a Windows application, but it doesn’t make it easy to tinker.

What I don’t like about Linux is that it’s always a step or few behind environments that don’t require tinkering. The particulars of hardware support is always the worst. For example, I have a USB hard drive, and in order to save power and wear it will spin down after ten minutes or so of inactivity. It takes about five seconds or so to spin back up, and it used to be that Linux would wait about two of those seconds and then decide something must be wrong: even if you do end up reading from the device at some point, it’s probably a bad idea to write to it so let’s just turn the whole thing off before you do something dangerous. There was a way around this. I added a file to /etc/udev/rules.d that, when it saw the plugin event from this drive’s particular set of identifiers, would write some text to a file somewhere in /sys that would instruct Linux to chill out and maintain if it can’t read the device right away. This extra step became unnecessary a few upgrades ago, but still: this was a release version of a popular Linux distribution, and it failed in an annoying way that would never be seen in Windows or Mac OS. My annoyances today seem mostly to stem from the differences in GNOME and KDE, an ancient and boring fight between graphical toolkits that I only care about now because I use one for my music player and the other for everything else. Amarok wants to be able to watch for discs in the CD-ROM drive and iPod plugins, and if it happens to catch on to those things before GNOME, which is fortunately rare, it usually makes a mess. Linux has gotten a lot better over the years, but what’s most frustrating is that while it’s grown into something that feels much more like a real desktop operating system than it did back in the 90’s, it’s always fallen a little short of the mark.

The first Linux distribution I used was Redhat 5. I briefly used Slackware before switching to Debian by the time I went off to college, I experimented with Gentoo for a while after that, and I eventually became fed up with distributions in general and joined two other Tech students in creating Peachtree Linux (not affiliated with Sage Software or the Peachtree Accounting suite). After Peachtree’s demise I switched to Fedora because everyone else was using it. Fedora, by way of Redhat, has been a long constant in the Linux world, and I no longer cared enough about whatever objections I’d had to it before. Recently I realized that maybe there are other choices out there, and maybe I ought to take a look around and forge my own path. I ended up finding a lot more maybes.

What I want is a Linux distribution that provides a desktop environment where manual configuration of just about anything–network, display, sound cards, USB devices–is considered an exceptional event, preferably a distribution where these exceptions can be handled by simple graphical tools instead of a need to poke through a hundred text files in a hundred different formats. I’d like a distribution that can adequately walk that thin line between cool new features and stability. Additionally, I need to consider whether a distribution can handle the fourth task in that list above. Due to a mess of patent licensing and other legal concerns, distributions that are out to make a buck tend not to provide support for mp3s or several video codecs. So I need a distribution that can either turn a blind eye to this point of law or has a community that does, something like Livna, in order to easily play mp3s.

Debian might fit most of the bill, but I doubt it. Their “stable” release is famous for being hilariously out-of-date, and “testing,” a compromise created about eight years ago between the slow-moving stable and the unfiltered, buggy battle of the unstable distribution, is still a briar patch of surprises and daily changes. Also, while Debian is famous for creating their community-oriented model, opening to their users an unfathomable expanse of software choices, they lack the centralization or drive necessary to make the coherent environment I’m looking for. Gentoo is just a Debian that’s made some bad decisions and where an update means spending a week rebuilding the system from scratch. Ubuntu is a derivative of Debian, but built in such a way as to take advantage of the huge pool of community contributions but offer a friendlier environment on top of it. I don’t trust Suse or Mandriva (didn’t one of them go bankrupt?) to have grown past the mistakes I remember struggling with at Emperor, and I don’t think either is in a position to offer anything interesting. And then there’s Fedora. I’d like to like Fedora. Fedora’s problem is that every release contains some new thing that’s kind of cool and some new thing that’s horribly broken.

Fedora 9 switched from Redhat’s system-config-network, a tool that’s brought me joy and pain through the years on its own, to GNOME’s network configuration tool, NetworkManager. That all seems well and good, switch from the Redhat-specific things to the the new, generic things, but they left system-config-network running. I don’t know why and don’t really care–my guess is that NetworkManager doesn’t work in all situations and they left the old tool around to pick up the slack,–but the result is that, after whatever exciting races the two tools run at boot time, I get a DHCP lease about 95% of the time; the hostname isn’t set at all, even though I set it during the install, unless I add it to some text file somewhere, and I have about a 5% chance of being able to lookup names local to the LAN (like the name of the NAS box I need in order to get to the mp3s I can’t play). Fedora 8 brought pulseaudio, which appears to be an attempt to reinvent esound in a way that crashes even more frequently. As a bonus, after installing the compatibility layer that makes sound work on Youtube again, Flash becomes extra unstable and will bring the browser itself more often than not. Perhaps pulseaudio is meant as a madeleine to bring back memories of those halcyon days of Netscape 4. Sound in Linux is complicated. A lot of people made some bad decisions; I think the Fedora maintainers are among them. Fedora 7…I don’t know, I’m sure it had something wrong with it. Fedora 6 seemed ok.

But Fedora, or rather Redhat, has done a lot of things that I think are really kind of cool. Rpm, despite its flaws and godawful spec file format, is really the best package manager I’ve seen. It has an automatic dependency creation and resolution system that puts the hand-crafted three-level ridiculousness of Debian and its ilk to shame, and it was the first to figure out that it isn’t feasible to use a flat text file to store the kind of package data needed in any general purpose distribution. One Redhat-specific addition that I find pretty neat is the way it handles debugging symbols. While Redhat/Fedora packages are shipped without debugging symbols, as is the way of such things, it also has the option of installing unstripped programs and libraries in /usr/lib/debug. The Redhat-packaged gdb knows to read these files and can even tell you which debug library packages you’re missing for a particular program. It makes tinkering available and easy. I wish the rest of the distribution had that kind of thought put into it.

I’ve viewed Ubuntu as some kind of a hipster joke for most of its existence. When it came out I didn’t want an extra user-friendly desktop, I didn’t want something based on Debian, and I certainly didn’t want something with ads that looked like American Apparel joins the Peace Corps. With this distro-existential crisis I’ve been having I decided to cast off my prejudices and install Horny Hedgehog, or whatever the H release is called. There were a few minor things that annoyed me right off the bat, mainly the choice to make the trash can a tiny icon in the taskbar instead of a big one on the desktop, and the hoops I had to go through to prevent anything from happening when I plugged in my mp3 player when all I want in to get to it in Amarok, but overall the Desktop is pretty nice. Missing packages are available at the click of a button in situations where things go wrong (mp3 codecs, flash plugin), and I actually found myself getting annoyed when I had to change things outside of the available tools (like the music player plugin thing), getting annoyed at times where before I wouldn’t have thought it unusual to open a text file in one window and a dense manual in another and fix it by hand. It has a kind of cool feature where if you type an unavailable command in a terminal, it’ll tell you what package to install and what command you need to run to install it. And it’s removed the idea of a root user, instead making administrator functions available by prompting for the user password anytime an escalation in privilege is needed (or just silently doing it for people who know what to add to which file), something I think desktop-oriented systems should have done long ago.

As time wore on, it became increasingly obvious that Ubuntu’s main contribution is to offer a theme that turns everything brown. I guess that theme was really the first thing that irked me. I get it, founder dude’s from Africa, some of Africa is the color of dirt; please make everything not ugly again. H is a “long-term support” release, which apparently means that it’s still full of buggy software, but those bugs will be updated over the course of thirty-six instead of eighteen months. The bug that pissed me off the most was one involving the keyboard. I like to remap Caps Lock to act as an extra Ctrl key, because I hit Ctrl a lot, I don’t want carpal tunnel and I think Caps Lock is useless. This Ctrl key position is seen a lot on old Unix workstations, and it’s easy to set this layout in the GNOME keyboard preferences. The problem in Ubuntu is that once I did this, while the Caps Lock was Ctrling like it should, it was also toggling the Caps Lock LED. The bug was fixed in the new short-term support release, but I don’t know if the change ever made it back to H; I just figured out what to put in which text file and moved on. One problem I haven’t yet figured out is the little gray rectangle the sometimes appears in the top left corner of the screen. It looks like the corner of a window that’s been accidentally moved off-screen, and it’s becomes most visbile and distracting when I try to watch a video full-screen and the little rectangle stays in the foreground. It goes away when I close Firefox, and it’s something I never saw in Fedora. On the plus side for Firefox, flash isn’t so crashy anymore despite it still running through pulseaudio, but it looks like that’s because Adobe released Flash 10 while I was making this switch, so it’s probably fixed in Fedora by now, too.

So in all Ubuntu works mostly like I’d expect it to, but it’s especially noticeable when it doesn’t, and from browsing the forums and bug reports it looks like users and developers alike lack either the knowledge or motivation to do anything beyond making every program match their shit-ugly brown coffee stain theme. Sigh. At least some of the folks at FedoraHat know what they’re doing and maybe even get paid for it. I just don’t know. Fedora 10 is coming out in a couple of weeks. Maybe that one will be ok.

Crying batman eagle Georgia voter

I don’t want to get too opiniony here today, because everyone’s had about enough of that. Barack Obama announced his candidacy on February 10th, 2007, John McCain on the 25th of the following April. Nearly two years. Two years this election has been in headlines, filled the airwaves, been a backdrop during financial collapse, ongoing wars in the Middle East and new unrest in Central Asia, earthquakes and floods and hurricanes. Two years. This is it. And whatever happens tonight, we’re watching history.

Georgia has been early-voting since late September, but that whole idea never appealed to me. It feels like cheating. The law is clear: after the Sabbath following the bringing in of the harvest, it’s time to hitch up the wagon and make a trip into a town to cast your vote on the first Tuesday following the first Monday of November; thus it is our solemn duty as citizens of this great country to suffer through all of the campaigns’ final surprises, thrusts and dying gasps until it comes time to appoint our Electors on Election Day. Plus there were like two million people trying to early vote. It was nuts; wait times averaged about three hours. If I’m going to have to wait three hours I’m doing it the patriotic way.

Today began as most days do on mornings after I’ve set my alarm for an earlier time: I woke up around 8 with the realization that I didn’t actually turn the alarms on and rushed through a panicked blur of clothes and toothpaste and hot water and orange juice. The annoyingly re-dated Daylight Saving Time switch helped out today, though, since 7 still feels like 8, and, while I couldn’t get in line before the polls opened, I at least wasn’t starting terribly behind. Grab a book, get a coffee from the Citgo and off I go to exercise my rights as an American citizen.

There have been a handful of elections since I moved to Sandy Springs–the 2006 midterm elections, the presidential primaries this year, the statewide primaries and a handful of local things–and it seems like my polling location changes every single time, swapping between the High Point Elementary and Ridgeview Middle schools. I really don’t know why, maybe something to do with expected turnout and how fine-grained a particular precinct needs to be for a particular set of ballot questions. It’s confusing. Poll workers periodically walked up and down the lines today reminding us that the state of Georgia really can require photo ID to vote this time around–the law got a shout-out in Crawford v. Marion County Election Board and everything–and trying to explain who should be in this line and who should be a in a different line at the middle school down the road. Your voter information card is a lie, the web site might not be accurate; through all the last-minute registrations and address changes and other complications, it all came down to which side of a two-lane residential road you live on, and just pray that the computer at the front of the line agrees. I only saw one person cut to the front of the line having earned his credit waiting for a couple of hours in the other one, so I guess you could say it went smoothly for the time I was there.

For myself, voting didn’t take too terribly long. I found an illegal parking spot a couple of blocks from school at about 7:30, and I was out of there by 9. Everyone was prepared for a long wait–I had my book and tiny radio tuned to NPR, some people had chairs, a lady in front of me was reading Twilight, but we didn’t need our little comforts for long.

One thing I noticed while waiting was that the poll workers seemed younger than usual. There were the usual octogenarians tapping away at the awkward registration roll computers, but there were also a bunch of people there in their twenties or younger. Georgia’s current system in this world of tomorrow is to have voters fill out a card with name and address by hand, take that to someone checking IDs, take the freshly initialed card through another series of lines to someone who looks up the registration and formats a smart card, and then take the card to a touch-screen Premier Election Solutions (né Diebold) voting machine. The ballot was eleven screens long–president, senator, John Lewis running unopposed again, county surveyor (“As there are very few duties for the county surveyor, i will serve to best of my abilities when required to perform my duties.”), a whole mess of mostly unopposed, incumbent judges, a handful of state amendments and some homestead exemption referendums. I tapped away for a bit, hit the “Cast Vote” button and traded the ejected card for a peach sticker. And that was it. I voted.

And now, in the immortal words of the fourteenth president of this great nation, “There’s nothing left but to get drunk.” Barring some kind of 2000-style fiasco, by tomorrow, or maybe even a little later tonight, we’ll have elected the forty-fourth leader of this diverse and fertile land so blessed by Providence. Let’s hope he’s a good one.

Media in the World of Tomorrow

Posted by David on Nov 2nd, 2008

On December 31, 2006 February 17th, 2009, all full power analog television broadcast licenses in the United States will expire per Title III of the Deficit Reduction Act of 2005 (47 USC 309), ending analog television broadcast and completing the transition to digital TV. The goal of this change is to reclaim the VHF TV spectrum, and because digital TV is way more rad than that analog NTSC junk. Cable and satellite TV subscribers are unaffected by this change and are most likely already receiving digital signals anyhow.

I don’t have cable or satellite. Apart from the presidential debates I’ve been masochistally consuming this year, about the only TV I watch is that show with the angry jerk doctor, so I haven’t felt any need to pay for it. And since the median year of the movies I have on DVD is around 1980 or so, I haven’t found any pressing need to buy a new television set. I am one of the dwindling group of people affected by the switch, one of the people using rabbit ears and an analog television, so I need to buy a converter box if I want to watch TV after February. And that’s what I did.

Part of that most recent act to mandate the digital switch was a program to provide $40 coupons, up to two per household, toward the purchase of a digital converter box (www.dtv2009.gov). Mine came in the mail on Friday, so I walked over to that new Target sitting atop the apartment complex down the street that was demolished in an effort to rejuvinate The Prado, and I purchased a converter. Target had three brands ranging in price from $50 to $60, and I couldn’t see any difference among them other than that one of the $60 models had a plug for a smart antenna, which I don’t have. Cheapest one available, then.

The coupon I had was issued by the United States Department of Commerce, and it came as a red magstripe card, looking much like the logo for the dtv2009 site. Of course, no one at Target knew what to do with it. This card didn’t go through the Visa or Diner’s Club or whatever network like other discount cards might, and it didn’t have a barcode to scan like a manufacturer’s coupon. It took three people poking buttons and scanning things to figure it out, but I was able to buy a converter box for $10 + tax so that I can join the future and contribute my fair share to the deficit.

So now I just have to figure out how to use the thing. I have trouble picking up analog channels. With the exception of some religious stations and Telemundo, most transmitters in the area are south of me, and my apartment faces north. I can pick up Fox for some reason, but that’s about it, and even that one station is a struggle. I have fiddle with the dipoles and get out some Reynolds Wrap and try to find that one tiny spot on the gain knob like I’m adjusting the hot water in the shower. But through all of this I have instant feedback: if I did something right, the picture gets better, and if not the picture gets worse. Things are a bit different with the digital converter box. Since the picture now depends on the digital tuner synchronizing to a digital stream and not losing too many packets, there isn’t much space between a perfect picture and a blank screen. I can hit a button on the converter remote to get a signal strength bar, and I can sort of use that to adjust the antenna position and gain. It’s a lot more difficult to tell when I have it right.

So now instead of fiddling with the antenna position and maybe living with a some multipath ghosts, I have to fiddle with the antenna position even more and maybe live with some ugly-looking packet loss. Hooray, the future.