Month of March 2004

This entry is more in the nature of "hello, I'm still alive" than "hey, see the cool stuff I've hacked on lately"

This entry is more in the nature of "hello, I'm still alive" than "hey, see the cool stuff I've hacked on lately". I suspect that you're not so interested in the news that I think I've optimised my route for skating from Baker St to the office (one way systems are involved; the return journey still needs some work).

In no particular order

  • sbcl amd64

  • sbcl threading special variable binding changes: in the interests of predictability, make new threads start witha default set of special variable values/bindingsd instead of whatever the parent had.

  • a clim-based postgresql client to kick psql's ass ($dayjob uses a lot of postgres, so this is my excuse to install lisp on my work machine). It's going to interrogate posgres metadata so the user can navigate through the database by clicking on field names, stuff like that. Colourised/marked up illustrations of the query plan, perhaps some kind of interface to help with query generation, etc etc. Lots of ideas I haven't quite locked down that need prototyping before I can tell if they're good ones or not.

  • longterm handwavey project: a lisp-based "thin platform" based on SBCL/Linux that's easily scriptable.

Installing SBCL on my work machine provided an illustration of just how far we've come lately. Untar and install sbcl then

  • (require 'asdf-install)
  • (asdf-install:install 'clx) ;; fiddle with cliki for 2 minutes to add a :package link for pg
  • (asdf-install:install 'pg)

and I have graphics, sockets, and database connectivity. McCLIM took a little longer, but it was still pretty straightforward. All told, it took me less time to get lisp-based web serving environment up than it did to install coldfusion, and that's a real commercial product. (Actually, it took less time to install the lisp-based web serving environment than it did just to unpack coldfusion, and it eats less ram, too)

Is this cool, or what

Is this cool, or what?

No, it's not really an Apple II port of CMUCL, it's the xscreensaver apple2 hack. Still cute, though.

I'm thinking hard about the cirCLe project at the moment: not the attempt last year to produce and charge for a CD full of Lisp software, but the overall objective of a free lisp-based system

I'm thinking hard about the cirCLe project at the moment: not the attempt last year to produce and charge for a CD full of Lisp software, but the overall objective of a free lisp-based system. This particular chunk of text started life as "Why I must write cirCLe" in the project goals document, but clearly it wants to be longer than the single paragraph demanded there. It also wants to be coherent, and isn't entirely yet, so consider this an early draft


The GNU operating system is nearly done. The OS kernels, libraries, basic programming tools and Unix-compatible utilities in systems based on Linux and other free Unixlike kernels are good enough that they've displaced proprietary Unixes and other operating systems for many purposes. What next? One obvious answer is "applications"

For many hackers, working on free operating system components has been an opportunity to write code that they themselves want to use ("scratching an itch") and the resulting code has been reliable and high-quality. But now we're writing for "nontechnical" people, and we're to believe that

  • the typical user can't even understand our user interface, never mind contribute code to our projects

  • software should be designed to preserve this state of affairs

This is only partly true. The user should not need to know the innards of a piece of software to use it effectively, but there's a difference between making it unnecessary to learn more and making it difficult to learn more.

I'm not suggesting that anybody intends to make it difficult, but when the typical user is not expected even to try to investigate their software, then extensibility, remote control and programmable interfaces are - quite reasonably - going to be a low priority. Better just to work on the features that the user wants.

So what's likely to happen? Users have no way to contribute back to the software they're using. Everyone knows the first rule of technical support: "``the person on the other end of the phone is an idiot''. Curiously, this applies no matter whether you're asking the questions or answering them". Without the basis for mutual respect between the people writing software and the people using it, do we really have a community? More pragmatically, if the only people with the expertise to make changes to our free software system are the people who wrote it, are we really so much better off than we would have been with a proprietary system?

I contend that the answer is "no"; that this disconnect between developers and users is harmful, and that we need a system where the users and the developers are on equal terms and have the same opportunities and the same tools. So we must use a language expressive enough that we can write the whole system in it; where the extension language and the implementation language are the same.

This is not for universal distribution yet, but I'm sure my readership is sufficiently short of universal (and, I like to imagine, a civilised, well-mannered subset of the universe that is prepared to tolerate a degree of unfinishedness and consider ideas on their merits instead of rejecting them out of hand on the basis of an ill-thought-out emotional response) that nothing bad will happen if I tell you guys what I've been doing lately

This is not for universal distribution yet, but I'm sure my readership is sufficiently short of universal (and, I like to imagine, a civilised, well-mannered subset of the universe that is prepared to tolerate a degree of unfinishedness and consider ideas on their merits instead of rejecting them out of hand on the basis of an ill-thought-out emotional response) that nothing bad will happen if I tell you guys what I've been doing lately.

(Yes, it is legal. Well, what I'm about to talk about is legal. I'm not sure that the rollerblading in bus lanes which I have also been doing lately is likewise legal, but that's not germane as I'm not about to talk about that)

So, this is not an announcement of The cirCLe Project Version 2 - whose goal is to produce the cirCLe distribution, version 0 - but you might want to take a look anyway.

So, it looks like I have somewhere to live in London

So, it looks like I have somewhere to live in London. Which is a weight off my mind, because I no longer have somewhere to live in Oxford after next week (and though I might possibly be able to get away with sleeeping under my desk for a few days, I think people would get rapidly annoyed if I moved all my books, cds and computers in here as well)

A couple of people probably had error messages from CLiki last night complaining about read-only file systems. This was some kind of ext3 error, as a result of which I lost my 360 day uptime. Aw. Note that during the course of that year and a bit I did many things to the system which may not have come up cleanly on boot: while I believe it's all working and happy again, if you see any behaviours more odd than usual from it, drop me email.

(CLiki posting was fixed as of about five minutes ago, so don't email me if you last tried it previous to that)

Mailing lists continued to not work for a couple of days, until I noticed and restarted cron

Mailing lists continued to not work for a couple of days, until I noticed and restarted cron. Now I think it's all working again.

I have little time for hacking this weekend because in observance of my New Years Resolution of 2002 I must spend the next few days abusing solvents. That's right, I need to clean the house.

The spray-on shower cleaner comes with instructions that say "for best results, use on a clean shower". Can't help wondering why I bothered buying that, then.

This is probably my last post from Oxford

This is probably my last post from Oxford. At least, last from this house in Oxford: I'm sure I'll be visiting Oxford again in the near future, and someday I might even want to move back, but this particular episode is over.

So far I have

  • lots of stuff in boxes, in a van
  • lots of stuff in boxes, to go in the van
  • some amount of other stuff, to go in boxes, to go in the van
  • lost (probably packed) the Allen key that I need to take the bookcase apart
  • still not done most of the cleaning and vacuuming that I had planned to do about six hours ago

All things considered, really I should stop reading mail, turn the remaining computers off, and get on with it.

A moderately long post about Havoc's Linux-desktop-should-standardise-on-java document may follow (I disagree, which should come as no surprise to regular readers). I've had time to think about it but no time to write yet.

So I'm here in the big bad city

So I'm here in the big bad city. The move was successful insofar as I arrived safely with all my possessions, most of which are still working, and only minor injuries. Things I'd do the same way again:

  • The van. I am very glad I got the Transit instead of the smaller Escort van I was half-thinking I could get away with, because I managed to mostly fill it.

  • The van again: driving it was a lot of fun. It's just like a car except bigger, torquier, is far more susceptible to sidewinds, needed a small amount of coaxing heading fully-laden up the Chilterns, and has no rearward visibility other than anything you can see through the mirrors.

Some of it could have been done better:

  • I could have taken two days off work instead of just the one

  • I could have packed everything into boxes before hiring the van, thus probably needing it for only one day not two.

  • Before starting to pack, locate tools necessary for dismantling stuff that needs dismantling. The Allen key was in fact in the small under-saddle bag on my bicycle; presumably it's the size for adjusting SPDs. The cross-head screwdriver I still haven't found

  • it probably wasn't such a great idea to go outside and bring the van round for the second lot of loading at 11:30pm. Well, it would have been a better idea if I'd taken the house keys with me and hadn't locked myself out. Luckily I'd foolishly earlier left the back door unlocked, so I was able to scale the wall at the back of the garden and get in that way. In the process managed to scrape enough skin off my left forearm to make it look like I was getting rather more frustrated with the whole deal than was in fact the case.

  • I could have paid someone to do it all for me. I might have been a few quid worse off, but at least I'd have had a full night's sleep on Thursday

Casualties so far: various cuts and abrasions, sore upper arms from carrying large boxes of books up four flights of stairs, and the PSU in my desktop, which doesn't any more. The fan doesn't go round even when prodded: I think I need a new one. That's the second PSU to die on me this year. Laptop works fine, wireless router, stereo and guitar ditto, haven't tried the imac yet. And I've lost my wireless network card, which is especially annoying as I didn't even /pack/ it, just removed it from my laptop to temporarily use a wired network card and put it down somewhere.

Still haven't had time to do anything about Havoc Pennington's Linux Desktop article, but between http://london.pm.org/pipermail/london.pm/Week-of-Mon-20040315/025430.html and my previously disseminated mutterings about habitable software and user extensibility, it should be pretty straightforward to guess what it was going to say.

Because I would rather be in bed than blogging, here is a very short entry

Because I would rather be in bed than blogging, here is a very short entry

  • now cycling to work. leytonstone->old street, this morning: 10km old street ->leytonstone, this evening: 20km. I missed a turning or several somewhere.

  • I think I have a plan for new per-thread dynamic variable behaviour in sbcl (summary: it's going to look a bit like the Lispworks scheme but simpler), which I shall be expounding at the scheme-uk meeting on Wednesday week. Why there instead of uk-lispers? Because we meet in a pub and they meet in an office with projectors and whiteboards and suchlike: any insights we gain as a result are more likely to be remembered afterwards.

  • I just wrote another object-relational layer in Perl (day job task). I'm still trying to figure out why there are some things I prefer working in Perl for, given that it's not the library support (pg.lisp would have done that bit nicely) or the syntax (give me sexps any day) or the editor support (which in perl consists of 80% correct indentation, and 90% correct angry-fruit-salad syntax highlighting). I think it's something to do with the way errors are presented: quite often by the time the system has worked out there's a problem I already realised that and mentally fixed it, and I would rather correct it and hit 'run that again' than have my train of thought interrupted by a debugger. Perhaps it'd be worth experimenting with a debugger interface that doesn't cut in until you ask it to (or maybe a repl with a "re-evaluate the last expression read" restart, or something similar), anathema though this may be to traditional lispers. Perhaps I'm too tired to think about this cogently.

After a moment's contemplation I realise that I am in bed while writing this, and should have expressed a preference for what I really want to be. Which is, right now, asleep. Good night, then

Bought two new ATX power supplies; one for my usual desktop box, and the other for the Alpha

Bought two new ATX power supplies; one for my usual desktop box, and the other for the Alpha. In principle this means I now have a comfortable machine to resume hacking sbcl amd64 on, and I have a new (old) loaclhost.telent.net which will host telent cvs (clx, araneida, cliki, etc). The plan is that my wonderful employers put it on their freebie-hosting-for-employee-boxen network.

Slowly rewriting the threading section of the SBCL Manual. (a) in texinfo, to see what it's like; (b) in English, so that other people may see what it's like

Suffering from cold-type-thing on Friday: sore throat, headache, etc, so took tube home instead of riding. Feeling better by Sunday, so went skating. Much fun, albeit at a slightly slower pace than I'd been commuting in previous weeks. So, I'm going to try at least the first half of the Friday Night Skate this week. (If you're reading this and likely to be there on Friday or Sunday, drop me an email and I'll wear something distinctive like my purple SICP tshirt).

Lost again on way home from work today. Careful examination of the junction where I should have turned right, if I were riding my morning route in reverse, revealed that it was a one-way street. So, wandered a little further up the road, found another right turn, rode aimlessly for a while. Eventually pointed myself in the right direction with the aid of a couple of maps in convenient bus shelters. Less lost than Thursday, but extra time with an A-Z will still be required

It's now 0:26am. If this entry comes out dated at 5am, blame the rtc/apm handling in Linux 2.6, which has a nasty intermittent tendency to decide that it can get through two seconds in as long as it takes the wall clock to dispatch just one. In the fact of that kind of drift, ntp just curls into a foetal position and whimpers.


telent netowrks

Geeky stuff about what I do. Many include Lisp, Android, Javascript, Linux and matters arising. For my other personality (less tech and more skating/cycling), see coruskate