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)
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#
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#
Sat Mar 13 16:47:20 2004
Topics:
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. 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. 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#
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,#
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.