Apparently there's a bug in my diary-publishing code which only#
Tue, 01 Jun 2004 18:30:27 +0000
Apparently there's a bug in my diary-publishing code which only
exhibits when there are no entries in a given month.
is more in the nature of a workaround than a fix
CLiki now supports editing old versions, for greater ease of recovery from vandalism#
Thu, 03 Jun 2004 23:00:11 +0000
CLiki now supports editing old versions, for greater ease of
recovering from vandalism. That is, it still saves a new
version, but the text you start with when you press 'edit' is whatever
version you were looking at. So, find a version that doesn't have
brazilian hackers(sic) or porn spam on it, edit and save.
That's kind of an aside, but it makes a good first sentence for the
rss monster. My Lisp hacking lately, what small amount of it has
happened, has been about sbcl x86-64, or hammer or amd64 or whatever
it's called today, with the intention of getting at least some
distance further before the cmucl anon cvs repository comes back. So
far since last weekend -
- The problem which had been stopping progress for, oh, months:
turns out that we were calling alloc() with negative sizes, which
obviously is a bad idea. alloc() was honouring our requests too, at
least to the extent of decrementing the free pointer and therefore
ensuring that we got the same address space again for some later
request. The offending code was something to do with allocate-vector,
but right now I'm on a tube train with no network and have entirely
- All the floating point instructions were missing REX prefixes.
This is, obviously, bad when you want to index off r8 and you end up
offset from rax instead.
- move-from-signed worked by shifting left twice and checking
for overflow after each shift. For a target with three bits of fixnum
tag, this is only doing 66% of the job.
- Thinko in movsxd
Right now we have a SIGFPE resulting from an idiv
instruction. I'd say something witty about this, but am prevented by
having nothing witty to say. But at last we've made to the end of
MAKE-HASH-TABLE, so in the absence of humour there does at
least seems to be some kind of forward progress.
I'd better write something about NotCon, then#
Mon, 07 Jun 2004 21:29:55 +0000
I'd better write something about NotCon, then. If you'd been
to XCOM two years ago, it was sort of like that (telling the time with
a prawn sandwich, full-motion video on a Spectrum), but actually not
very (accoustics worth a damn - you could actually hear the
speakers - and without the trestle tables around the edge manned by people
with wooly beards and woolier ideas)
In no particular order:
I should plug http://www.theyworkforyou.com/, not that they need the meagre
googlejuice I can channel their way. But in five words: "Hansard with
a user interface". Glossary for foreigners: "The Official Report
(Hansard) is the edited verbatim report of proceedings in both Houses
[of Parliament] Members' words are reported with repetitions and
redundancies omitted and with obvious mistakes omitted, but nothing is
left out which adds to the meaning of the speech or illustrates the
The prawn sandwich. Summary from memory: you take the sandwich
apart and monitor the bread, prawns and mayonnaise separately. Bread
and mayonnaise are basically a resistive load; the prawn is, I think,
partly capacitive, and each component decays at a different rate. The
whole thing needs to be about two days past its sell-by date before it
becomes useful as a time source
I skipped everything between about 2pm and about 4pm to go
skating. Which was fun, except that I was foolish enough to leave my
rucksack at home thinking "I only have a pair of trainers to carry, I
can just hold onto them". Indeed I had, and could, and did, but not
having hands free seemed to cramp my style somewhat; also I forgot my
wristguards and so erred further on the side of caution than was
Tom Dolan's talk on
managing people (also see this blog entry, which made me laugh). Right now I'm firmly out
of the management game, but I listened to this and winced remembering
things I had screwed up last time around. "When the going gets tough,
what you should absolutely not do is retreat into your own job"
(paraphrased) ... um, um. Conceded, that I was expected to continue
doing my old job as well as managing didn't really make it easy.
And so to the Danny O'Brien talk, which was the one that really
struck a chord. (He's given this talk before: if you google "life hacks"
you'll find about a zillion people have blogged one of its instances,
probably all linked to each other as well, and most of it
utterly worthless. Cory Doctorow has useful , though)
As usual with a talk about which lots of people enthuse, there are
a bunch of probably-contradictory messages you can take home. So
instead of reporting what Danny actually said (if you weren't there,
your local Iranian carpet weaver should easily be able to reconstruct
it from the threads scattered across the aforesaid zillion blogs) I'm
going to seize random comments and use them as ammunition to promote
views close to my own heart: I refer of course to "habitable software".
The common thread with all of these allegedly productive people was
that they had picked a flexible environment/platform (given that
they're all famous on the interweb and therefore by definition
involved with publishing their ideas on usually-unix-based boxen, it's
no surprise that in 95% of cases this platform is the unix shell) and
scripted it to do things that it might not even be the best tool for.
Common example: instead of using a clicky graphical project management
tool, manage your outstanding task list with a lightweight text editor
and a file called "todo.txt".
What this means if you want to write software for these people,
then: don't make it a platform unless it's good enough to
displace their existing platform (and you can probably assume it won't
be any time soon: it needs to be significantly better to be
worth the cost of learning/unlearning).
There's also a relevant argument in the "scripting vs programming"
debate thing. (many of) these people know how to write software, and
indeed are famous for it. But the private scripts they write to
manage their lives are typically not the kinds of things you would
hold up as a good style example: they're often 80% solutions slapped
together to meet a need which possibly doesn't even exist any more.
And while we're here, and because he mentioned them at the start
of the talk, I'm going to say a couple of words about CRC cards. I'm
not sure whether we were supposed to consider that small paper
rectangles are also secrets of prolific alpha geeks or whether the
connection was just to Kent Beck ("I'm an average programmer with very
good habits") and hence the lead-in to the topic proper, but I'm just
going to throw this idea in the air: maybe the friction imposed
by using inflexible/unsuitable tools is part of what makes
these people productive in the areas that they need to be, where they
might instead be adding drop shadows to their priority 1 items?
PhysicalCuesInSoftwareDevelopment (from Ward's Wiki) has more on that
theme. Affordances, guys.
For entertainment, then, a sample of the scripts in my ~/bin and
~/scripts directories - though perhaps my .emacs file would better
reflect the spirit of the endeavour.
- attach-locally, attach-stargreen, attach-telent
invocations for connecting to detachtty instances for important
- diffprep, diffcommit
- Written sometime during the
dotcom boom that i missed, and in probably near-daily use since then.
diffprep runs cvs diff and prepends a # to each line. diffcommit
reads this file, strips out the lines starting with #, and uses the
remaining lines to form a commit message for each file that the diff
touches. Usage scenario: diffprep > file; edit file to
include a sensible commit message for each file, using the diff to
remind yourself of what you actually changed; diffcommit <file
| sh -s
- set up a ssh tunnel to a news server I
no longer use, and run fetchnews
- Written after a keysigning party(sic)
a few months ago. Takes a bunch of key ids, and mails the associated
email addresses a form letter saying "someone with ID that associated
themselves with the username on this key was in the pub last Wednesday
asserting that the key was theirs. If this was you, please reply so
that I know the email address corresponds too". Probably not an
awful lot of use as it stands except for any future keysigning
parties organised on Wednesdays in places called "the Lamb and Flag,
Oxford". Still, it did a job, and I can hack it for the next one in
less time than it took to write.
- imap-metacircles, imap-zen
- wrapper scripts so that fetchmail can
collect mail via "ssh foo /usr/bin/imapd"
- evil kludge (in Perl, natch) to connect to a remote
host:port through an HTTPS proxy that understands CONNECT proxying.
Written several years ago, probably used twice.
- sox $* -t ossdsp -c 2 /dev/dsp
- script to kill audio-using applications then
rmmod i810audio and APM suspend. Given that it's approaching four
years since I hacked the i810audio driver to suspend cleanly, that
tells you something about how often i clean up around here
- crashes my computer, mostly. It was going to back up my mobile
phone, but usb blah blah linux blah pl2303 bla blah reverse engineered
blah panic. So, it doesn't.
Oh, and this diary entry, like all the others, is brought to you by
diarize; a shell alias for make -C $HOME/doc/telent sync
$*. I like Makefiles.
Shoulder update: it's fine#
Tue, 08 Jun 2004 00:17:06 +0000
Shoulder update: it's fine. No, really. Just a small yellow bruise;
I have no pain even when I suspend myself from that arm. Which means
I now have no excuse for further putting off learning to climb.
Mostly due to an extraordinary run of good luck with traffic lights
this evening, I also managed to set a new personal best time from the
office to home this evening: just under 20 minutes, for an average of
29.4 km/h. If I can get that above 32 km/h (would be "evens", if
there were actually 10 miles between work and home) I'd be very happy
I'll be at LSM 2004#
Tue, 08 Jun 2004 16:38:50 +0000
I'll be at LSM 2004. Have now booked flight, accommodation, and
time off work. To the best of my knowledge I won't be speaking, but I
may be skating.
I have a new-found enthusiasm for automating my job away#
Thu, 10 Jun 2004 23:45:58 +0000
I have a new-found enthusiasm for automating my job away. Yes, this
is more overspill from "Life Hacks" at NotCon.
When I was a student and had nothing better^Wmore interesting to
do, I'd spend ages messing with my computer trying to get an optimal
environment together. Without any clear idea of what I was optimizing
for, this was destined to be an infinitely deep time sink - or
at least, one I only recovered from when I got a Real Job and had to
start making decisions that involved some balance between "is this the
Right Thing" and "can I ever finish it?". So, since then I've been
kind of wary - and perhaps even overcautious - about spending time on
anything that doesn't solve a fairly immediate problem. The classic
example is my use of Sawfish - it's the first window manager I've used
for more than a few months that has (what I believe to be) a competent
scripting/extension language, and also the first that I simply haven't
bothered configuring - in the four or five years I've been using it I
haven't written more than a couple of lines of rep.
(Previous WMs have included [v]twm, fvwm, ctwm, and brief forays
into scwm - which had possibly-guile-related 64 bit issues at the time
I was using an Alpha on the desktop - and gwm, but that wasn't real
This Must End. Or at least, I'm going to start getting a lot less
hardline about it than I've tended to be in the past. I'm not sure if
task #1 should be the TODO list, or whether I'm falling into the usual
"making a list of stuff to do as an excuse to avoid doing any of it"
symptom. A text file and an editor has actually worked pretty well,
but it turns out to be n text files (per-project lists, multiple
machines, etc) plus I need some way to cope with RT tickets as well.
From the documentation it doesn't look like RT is exactly extensible
"out the wazoo" (technical term) unless possibly you're the server
admin. An RT-RSS gateway is one possibility.
The other thing I decided fairly recently that I need to work on is my#
Fri, 11 Jun 2004 00:09:14 +0000
The other thing I decided fairly recently that I need to work on is my
skating. Comparing myself against "skill level" charts, I find that
I'm, well, all over the chart. I've been skating for everyday
transport and regular street skates for most of the year, but never
had any proper lessons, and don't spend a lot of time on them
otherwise. So, demonstrating ably the ancient wisdom that "training
to do X will make you very good at X but do nothing for your abilities
at W or Y": I can go, I can stop, I can turn, I can surf tree roots,
loose gravel, drain covers, white paint and small holes with
flail^Wflair and style, and I can skate 12 miles on a Friday and
still get to the pub before my friends (who have also skated 12
miles, don't start thinking I'm superhuman here). But: I'm entirely
crap at the usual array of tricks (crossovers, spins, t-stops,
backwards skating, jumps, slalom, etc etc) that would usually go along
with that. So, I am resolved to spend at least some time each week
practising this stuff, and not just the 20 minutes before the Friday
Night Skate because that always turns out to be more like 5 minutes
plus 15 minutes standing around talking to people. This is of course
made a whole lot more palatable by having fixx0red my skates so they
no longer make my the lump around my ankle bone swell up to twice its
I had feedback that my notcon blog was "good but totally out of
character". It seemed pretty normal to me (though not about Lisp,
granted), except possibly that I seem to have been getting all
touchy-feely and confessional lately. Blame it on the weather: normal
service will resume as soon as the novelty wears off.
Here's something you don't often see: visible forward progress in SBCL AMD64#
Sun, 13 Jun 2004 01:10:36 +0000
Here's something you don't often see: visible forward progress in SBCL AMD64
/setting up CL-PACKAGE and KEYWORD-PACKAGE
/about to MAKUNBOUND !INITIAL-SYMBOLS
/about to MAKE-PACKAGE COMMON-LISP-USER
/about to do !DEFERRED-USE-PACKAGES
/about to SETQ IN-PACKAGE-INIT
/done with !PACKAGE-COLD-INIT
/about to SHOW-AND-CALL !GLOBALDB-COLD-INIT
/early in globaldb.lisp cold init
/before initialization of INFO hash cache
/clearing INFO hash cache
/done clearing INFO hash cache
/done setting INFO-ENVIRONMENT
/beginning INFO-CLASSES init, calling MAKE-HASH-TABLE
/done with MAKE-HASH-TABLE in INFO-CLASSES init
internal error #29
SC: 14, Offset: 2 0x7fbfffe980: even fixnum: 137170516576
SC: 14, Offset: 0 0x7fbfffe980: even fixnum: 137170516576
fatal error encountered in SBCL pid 27877:
The error is "object not type". The location is somewhere in
0x0B204C10: SB!IMPL::EQL-HASH #X0B204BF9
The previous error was a vop that was multiplying by 4 that
should have been 8. Yay hard-coded constants.
Ray de Lacaze#
Tue, 22 Jun 2004 18:57:00 +0000
Ray de Lacaze
resigns as ALU president. If you read Lemonodor you'll have
picked this up already; if you read Planet Lisp, likewise but you'll
have missed the comments, which I hope will shortly become an
interesting debate about wat the ALU's role should be anyway. ILC02
was immense fun for me: not only the formal presentations, but also
just hanging out and discussing ideas with people I'd only previously
met online. But then, LSM was pretty cool too: you don't have
to spend megabucks and an ulcer to get interesting people together in
the same place (as witness NotCon).
Lisp news from me personally: not much. One of the ideas being
thrown around for LSM this
year is that between, around and during the formal presentations (but
only during the boring ones) we attempt less formal "lightning"
presentations of 5-10 minutes to explain to the assembled masses what
we're doing or what we think they should be doing, or where we have
points of issue to give everyone the necessary background to debate it
meaningfully. The current list has me down to explain why you should
package your projects with asdf and asdf-install, and Rudi Schlatte
talking about simple-streams; I think we'll also be trying to co-opt
Tim Moore to explain enough of CLIM to the world that we can
brainstorm what should happen when there are multiple apps in one
image, and I'm pretty sure Christophe Rhodes wanted to argue with
someone about floating point.
My "hack hemlock" idea there seems to have veered off track a bit;
the more I thought about it the more fun it seemed it would be to
start from scratch and then start stealing and retrofitting code from
Hemlock and other places after I had a basic set of sensible
abstractions to fit them into. And I know that any project that
starts with Hemlock is going to be subject to Robert Strandh asking
"why aren't you using flexichains", whereas with a from-scratch design
I can just leave the buffer abstraction, well, abstract. For the
moment. Anyway, you heard it here first: rinse is
no substitute for emacs. Not now and quite
possibly not ever, even if I do get it to a usable state; I'm
designing an editor I want to use, and if nobody else likes it, too
bad. There's no code yet, but it'll be in telent cvs as soon as there
Non-Lisp news: last weekend I went on an "introduction to climbing"
course at the local climbing wall, thus demonstrating beyond all doubt
that my shoulder is better. Yesterday it was not aching any more than
my other shoulder, back or forearms were, and the bruising has finally
disappeared too. So, sometime in the next few days I need to wander
back to Mile End and spend some more time hanging onto things by my
fingertips (and upside down from the ceiling).
I'm sorry about this, I really am#
Thu, 24 Jun 2004 22:44:25 +0000
- lisp from time to time, and people keep asking questions. Therefore,
in the hope of saving myself some time later I will now run through
the FAQ list (where A stands for Anticipated as much as it does
- There is no code yet.
- It's not an emacs clone. It won't run elisp. If you want to run
gnus, run it in emacs.
- Initially I plan to use raw CLX, but the display backend should
be reasonably loosely coupled.
- We expect the Lisp implementation to convert from external
streams to characters, so it'll do Unicode to the same extent as
the Lisp does
- But with that in mind, I'm using SBCL to develop, so "8 bit
clean" is about the best you can hope for for the moment.
- It's not a structure editor per se - input files are streams of
characters - but let's recognise that most files most of the time are
conventionally treated as though they have more structure than this (I
hear the usual term is "parsed" ;-) and provide structure-sensitive
operations. But allow the user to do structure-violating operations
(deleting close parentheses, etc) without immediately going ape.
- Some kind of free license (undecided yet). Would like to avoid
anything contagious to other unrelated stuff in the same image, and
ideally even to allow people to write non-free extensions on the
"rinse platform" ("washboard?") but if there's any way despite that to
prevent people from taking the whole thing and turning it into their
proprietary Lisp development environment without sending "core"
enhancements back (a la Hemlock => LW IDE) I'm all ears. Well, at
least I'm vaguely interested; it's not a pressing concern and I
may well just end up with ye trusty MIT-style do-what-thou-wilt
- Intending to port the SLIME frontend so that all the stuff in SWANK
is available for debugging/developing user code in a second image.
- Working (and crash-proof, unlike Emacs or anything else using
xlib) support for popping up windows on more than one display at once.
- Better attention paid to the social niceties of X than FSF Emacs
does. Yesterday I found myself having to paste from Emacs into xterm
into Mozilla, because for some reason I couldn't transfer accented
characters from Emacs to Mozilla directly.
- There is no code yet.
- I amn writing this instead of rectifying that omission.
- Therefore I should stop.
There are very few Google hits for "Keito K6", so next week this entry#
Fri, 25 Jun 2004 11:25:46 +0000
There are very few Google hits for "Keito K6", so next week this entry
will probably join them. There's one of these things in my local
supermarket; it measures weight, height and body fat percentage, and
calculates body mass index as well.
Up to a point, at least. Accurately calculating body fat mass is a
fairly involved process, so instead it just measures the impedance
between one hand and the other, which should be in some way related to
water content in the body. Muscle holds more water than fat, so based
on that and your age and sex (which you tell it), it guesses the fat
Of course, weight also varies a lot during the day with things
like hydration, food intake, etc, so should be best done in the
morning before doing anything else: let's just say that I have no
intention of walking to Tescos in my dressing gown every morning - or
even one morning a week - so forget that.
But height? At least it can tell me how tall I am, surely? No,
apparently not. My height as measured using a book and a pencil and
the dorframe: 170cm. My height as guessed last week by this Health
Multifunctional Measuring Unit: 168cm. As guessed last night: 165cm.
Now, I've heard of height changes due to spinal compression (see
e.g. Measurement of Diurnal Variation in Intervertebral Disc Height in
Normal Individuals), but the figure quoted there is less than a
centimetre. Besides, my experiment with the book and the doorframe
was conducted less than an hour after the second estimate from Keito.
So, not sure what my point is here, but it's probably something
along the lines of "don't trust spurious precision".
Oh, and it got the time of day on the printout wrong too ...
To pacify the end-of-month bug, here is another placeholder#
Thu, 01 Jul 2004 13:41:52 +0000
To pacify the end-of-month bug, here is another placeholder. Without
going into any particularly interesting details, this one says that
- There's enough of a mess in the SBCL AMD64 backend regarding
floating point (mostly to do with object sizes and alignment) that
it'd be quicker and more reliable to actually go over it carefully and
check it all at once instead of fixing bugs as they happen. That
being so, this would be a great opportunity to rewrite it to use XMM
registers and the "128 bit media instructions" instead of the x87.
AMD claims that they run faster,there are 16 random-access registers
instead of the slightly weird x87 stack thing, and it has perfectly
normal IEEE single and double precision (none of this 80 bit nonsense)
so we might even get less freaky results too.
- I've decided to enter the London Inline Marathon in September, so
am now skating to work three days a week (or so; depends on weather
etc). There was a tube (metro train system) strike here in London
yesterday; so I ended up skating to work, across town to the Londonskate (a
and less confusingly k.a the Wednesday Night Skate), did the skate
itself, and then, finding that the tube was still closed after the pub
shut, skated back across town to Liverpool St station from where I got
a surface rail train to Stratford (the one in East London, not the one
where Shakespeare lived) and skated home from there. Probably around
20-22 miles in all, I guess, and must admit that today I am just a