October 2004

Last night, we went to a fine dinner party, courtesy of bluap. The BBC has put on a new series of Strictly Come Dancing, so we watched that before we ate. Excitingly, a couple of the non-dancer blokes did pretty well: both Roger Black and Aled Jones have some sense of rhythm and moved their hips a bit. Poor Hazel Newbury had Quentin Wilson from Top Gear as a partner, and he really couldn’t dance, so one of the best dancers in Teh World Evar went out in the first round. It’ll be interesting to see what happens in future weeks, as there are some strong contenders this time around.

After that, there was food and conversation and stuff. I must link to Bob the Builder vs Eminem, Tony and Dubya’s lovely duet (and again) and yet more Enimem mash-ups for people who hadn’t seen or heard them. There was lots of discussion on whether LiveJournal was geeky or whether web-logging and suchlike is now a pop culture thing. I think one of my previous entries sums up what I think about that.

Click for a bigger version

If you’re an English geek of a certain age, one Christmas you probably received a computer game which wasn’t like any games which had gone before. It came in an A5 box, big enough to hold the manual, the novella, the poster with all the ships on it, the leaflet listing all the keys you needed to fly your spaceship, and, I dunno, some other stuff, probably. Elite pitted you and your trusty Cobra Mk III against an open-ended universe, where you could make a living by trade, piracy, bounty-hunting or, as your reputation grew, by carrying out missions for people. It depicted the universe in glorious wire-frame 3D. As Francis Spufford explains in Backroom Boys, it was groundbreaking and absorbing. That particular Christmas, I played it so much that, as I slept, visions of Pythons danced in my head.

Oolite is a free, open source Elite clone in Objective C for Mac OS X. It’s faithful to the original, but there are some improvements (the targetting box which shows the distance, ship type and legal status in the picture above, for example), and some nice touches (notice the skull and crossbones on the Mamba?) You also feel more a part of the world than in the original, as you come across other ships engaged in combat, or a pirate caught by the long arm of the law. The nostalgia! Buy a Mac and play it.

robhu made an entry about visiting an evangelical church, which lead us into a discussion about the implicit assumptions of evangelical Christianity, and just what the word “Biblical” means. It sort of follows on from cathedral_life‘s observation that evangelicalism seems to be more about a philosophical theory (an epistemology, I’d say) than about discipleship (see what large words I use as I type this entry with my own hands!)

Meanwhile, over on rec.arts.sf.written, there is a huge crossposted thread about Philip Pullman. This included a posting from an ex-Christian, about the difference between the personal God “who helps grandmothers find their car keys” and the God-of-the-Philosophers who is unreachable and unknowable. More specifically, about how some Christian apologetic arguments switch between one and the other when it’s convenient. Good examination of a tendency I’d not thought of before, but recognised when it was described.

I must also recommend livredor‘s answer to shreena‘s question on whether livredor has ever doubted her Judaism. Interesting stuff.

Some while ago, Mark Pilgrim did a post on cool software tools he couldn’t do without. In the absence of any pending rants about religion, here’s mine. Probably only of interest to fellow geeks, so cut for length.

I’m still using Pine, that staple from university days. As it’s terminal based, I can use it to read my mail by logging in to my machine from wherever I happen to be. It supports multiple incoming folders for mailing lists and the like, and multiple roles. It’ll invoke an external editor, so I can use Vim to write email. The address book is nice. It keeps mail in flat text files, which, despite being a somewhat broken format, is easily understood by grep and the like. What more do you want? I hear good things about Mutt and also Apple’s own Mail.app, but nothing which compels me to change.

I run Exim as a mail transport agent, and use its nice filtering lanuage to handle sorting stuff into folders, ditching HTML mail sent to my Usenet posting address, and that kind of thing. Fetchmail gets the mail to Exim. Exim calls dccproc, which checks for bulkiness, and rbfilter, which checks for blacklisted senders.

My pobox.com forwarding address has been around since 1998 and so gets a tonne of spam, but since I used their spam filtering options to block China, Korea, and Brazil; and also turned on their cunning “looks like a consumer broadband machine” test (which looks for bytes from the IP address in the machine’s hostname, as that’s a common naming convention for broadband addresses), spam is a solved problem for me.


I was using trn, but gave that up after failing to compile it for OS X. slrn is a worthy replacement, with colour highlighting and a useful scoring language. As well as using that to killfile people, I can increase the score of posters or threads which interest me and sort by score in the thread view. slrn shares trn’s handy habit of doing the right thing when you just keep hitting space, which is handy for eating and reading news at the same time.

I use Leafnode to fetch news from a variety of servers (NTL groups from their server, news.individual.net for everything else). A tip for Mac users: Leafnode creates directories full of lots and lots of small files (one per article, in fact). HFS+, the native OS X filesystem, is dog slow at accessing these. Make a UFS disk image and put your news spool on there.


I use Vim, which combines the usability of the old Unix vi with the startup time of Emacs. It does all the usual good stuff like syntax highlighting every language known to man (including quoted text in mail messages, which is nice), indenting automatically and all that jazz. A killer feature is the function which will complete words from occurrences in the same file, or from a tags file (a list of all the names defined in a program). Helpful for not getting variable names wrong and also in rants where you find yourself writing “evangelical” a lot. The interface to cscope is also very useful when writing C code (and more importantly, trying to understand other people’s C code).


Since I started using OS X, I’ve been happily using Safari as my web browser. When writing long comments here on LiveJournal, I occasionally miss the text entry box editing facility of Mozex, since I could then edit the comments with Vim, but since no-one’s ported Mozex to the Mac yet, I’ve not switched to Mozilla or Firefox. You Windows users should so switch, of course, because Firefox is nicer and a lot more secure than IE.


I maintain my websites with sitecopy, which replaces that Perl or Python script which everyone seems to have written at least once to FTP stuff to their provider’s web space. sitecopy is works with both NTL’s and Gradwell’s servers and can do useful stuff like uploading based on hash values rather than modification times.

I post to LiveJournal using Xjournal, a pretty and featureful client for OS X. If I want to post from the command line, I use Charm.


I prefer Python to Perl for scripting tasks. As Yoda says, you will know Python is better than perl when your code you try to read six months from now.


I use Mudwalker when I have the OS X GUI available, mainly because I’ve made it talk using the Mac’s speech synthesis stuff. I’d also recommend Crystal.


From within Vim, I make heavy use of ctags and cscope for browsing around code and jumping to declarations and references to a symbol. You can do it with grep, but it’s not as nice (and a lot slower on big projects).

I’ve also used Smatch to write customised static checkers for C code. Smatch is a modified version of GCC which outputs an intermediate language which is readily processed by your scripting language of choice. If you’ve ever found yourself writing Perl or Python code to parse C directly, you probably should have used this instead. There are some scripts which come with it which can do useful things like attach state to particular code paths as your script parses the code, and allow you to describe what happens to that state when the paths merge (so you could check that all paths free anything they’ve allocated, say).

lisekit has a discussion on novels, religion and relativism in religion. She says that, where religion is concerned, she doesn’t like to say that anyone’s views are more or less valuable than anyone else’s. This set me thinking about the idea of relativism in general (which lisekit isn’t advocating, lest I accuse her of it, as she mentions respect and tolerance as moral virtues).

I seem to have been brainwashed by Neal Stephenson into believing that strict relativism is undesirable because it does not work. If you cannot say one thing is better than another, the only sin left is hypocrisy (and, perhaps, intolerance 🙂 In a sense I’m a relativist, since I don’t believe in absolutes imposed by a deity, but in another sense, that of refusing to say that one thing is better than another, I am not. In morality, say, I advocate things which I believe will lead to a society which I hope will be a good one for myself and people I care for. In religion, I would like to see well-reasoned disagreement between people who do think their viewpoint is the right one but are prepared to learn from others. Better that than the pop-culture spirituality which accepts everything that feels good (poor Greg Egan’s disgust for that sort of thing in Silver Fire makes me think he’s forgotten what G.K. Chesterton said happens to people who stop believing in God). Stephenson again:

The only real problem is that anyone who has no culture, other than this global monoculture, is completely screwed. Anyone who grows up watching TV, never sees any religion or philosophy, is raised in an atmosphere of moral relativism, learns about civics from watching bimbo eruptions on network TV news, and attends a university where postmodernists vie to outdo each other in demolishing traditional notions of truth and quality, is going to come out into the world as one pretty feckless human being. And–again–perhaps the goal of all this is to make us feckless so we won’t nuke each other.

On the other hand, if you are raised within some specific culture, you end up with a basic set of tools that you can use to think about and understand the world. You might use those tools to reject the culture you were raised in, but at least you’ve got some tools.

In this country, the people who run things–who populate major law firms and corporate boards–understand all of this at some level. They pay lip service to multiculturalism and diversity and non-judgmentalness, but they don’t raise their own children that way. I have highly educated, technically sophisticated friends who have moved to small towns in Iowa to live and raise their children, and there are Hasidic Jewish enclaves in New York where large numbers of kids are being brought up according to traditional beliefs. Any suburban community might be thought of as a place where people who hold certain (mostly implicit) beliefs go to live among others who think the same way.
In the Beginning was the Command Line

(The rest of Stephenson’s essay is a huge digression on technology and culture, seen through the lens of the Windows/Unix clash: it’s well worth reading if you’ve an hour to spare).

I suppose I’m back to morality as enlightened self-interest again: the reason these people are inculcating their children in their particular culture is because those cultures work, and they want their children to be happy, fulfilled and all that stuff. There are cultures which don’t, and I’ll gladly preach the superiority of those which work over those which don’t, as it’s in my own interest to do so.