diary at Telent Netowrks

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.

This 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 -

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.

Skating tomorrow!

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 argument."

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 really necessary.

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
attachtty invocations for connecting to detachtty instances for important servers
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 indeed.

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 lisp anyway)

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 normal size.

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 !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 is.

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

  1. 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 Asked):

  1. There is no code yet.

  2. It's not an emacs clone. It won't run elisp. If you want to run gnus, run it in emacs.

  3. Initially I plan to use raw CLX, but the display backend should be reasonably loosely coupled.

  4. 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

  5. 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.

  6. 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.

  7. 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 licence.

  8. Intending to port the SLIME frontend so that all the stuff in SWANK is available for debugging/developing user code in a second image.

  9. Working (and crash-proof, unlike Emacs or anything else using xlib) support for popping up windows on more than one display at once.

  10. 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.

  11. There is no code yet.

  12. I amn writing this instead of rectifying that omission.

  13. 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 mass.

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