diary at Telent Netowrks

Paolo commented on comp.lang.lisp the other day that CLiki had just had its second birthday#

Mon, 03 Jun 2002 00:53:12 +0000

Paolo commented on comp.lang.lisp the other day that CLiki had just had its second birthday. I believe him, but I can't actually remember, myself. The first cut at CLiki sort of sat around being an undirected wiki-type thing; the second version was very briefly a resource list for the then-new lispweb mailing list ("Some things NOT on topic: LispOS mental masturbation"), then a couple of days later I decided that I really didn't care very much about Scheme and that it should concentrate on the stuff I personally find interesting: Common Lisp stuff on Unix. At or around that point I posted to lispweb, so I guess I could reasonably consider that the formal opening.

My suspicion is that the focus is what's made it successful. I don't think it's the only possible focus that would have been a success, but to make anything that even pretends to be a community site these days I think you have to find people with some degree of common goals. This is my rationalization for adding things like the dreaded non-free tag or my comments on the JavaScript page - it's not because I'm violently opposed to these things, but because they're off-topic for CLiki.

(The astute reader will already have observed that I side-stepped the question of whether I am violently opposed to these things or not. Even if Shaver's not reading this, i know from the referer(sic) logs that many other people who read his diary are)

After some more digging around for early CLiki references, I find my old diary entries. For comparison, as of right now it's had 36 POSTs since 26th May - so, no significant change there in two years, then. The number of GETs has gone up an awful lot, admittedly: analog gives current values, as well as a strong indication that most of them were probably search engine robots.

ILISP 5.12.0 happened, which indicates that I may be getting better at predicting software releases than I was in the bad old days of ftx13

I know I keep saying this (although, apparently, not in this diary: must be an IRC thing) but you should expect a couple of new cliki features in the very near future. According to my TODO list, all the obvious prerequisites for upgrading (it needs, among other things, a new SBCL version on my shell host, which tends to imply a pile of other stuff needing testing too) are satisfied, so now I'm just waiting for a slack time to do the actual upgrade. This would be one, except that right now I'm going to go to bed instead.

New stuff in #

Tue, 04 Jun 2002 17:14:22 +0000

New stuff in CLiki: now you can download the packages straight from the pages (or even skipping the page completely if you already know the name)

At some point I should almost certainly find a better place to explain it than `CLiki News': I think a lot of the metacliki pages need some review.

At last I have found out how to turn disc autorepeat off in Grip#

Wed, 05 Jun 2002 22:01:42 +0000

At last I have found out how to turn disc autorepeat off in Grip. Now, I know that nobody takes my ideas on usability seriously (I admitted that I like Emacs, which pretty much lost me all credibility with the point-click brigade), but ...

  1. Click the `config' tab, then the 'CD' tab of the inner tab set. Observe no option to kill the autorepeat.

  2. Check all the other tabs in case it's somewhere stupid like 'misc' instead. Nope

  3. Click on the Help tab, observe that all the buttons in there do absolutely nothing at all. I don't have the gnome help browser installed, but silent failure? The Unix Philosophy(sic) is strong in this one, master.

  4. Um. Guess there's no such option, then. Return to using xmcd

  5. Some months later when new version of grip available, go clicking very slowly on the "buttons they'd put on a real cd player if real cd players were designed by vcr manufacturers" section at the bottom, so that we can see the tooltips

    • The button marked "123" is tooltipped "Toggle play mode options"

    • When clicked, it creates two more buttons to click on, plus an expanse of grey space.

    • The (right-hand) button tipped "Toggle loop play" switches between two fairly obvious hieroglyphs - obvious if you ever had a cassette tape player with "autoreverse", anyway. Problem solved, but

    • The other button ("Rotate play mode" - yes! let's listen to our cds using rotated play! eh what?) cycles between "->?", "N" and "PL". I'm guessing these denote any of Hyperspace Jump, Neutral (Natural numbers? Could be a Dangerous Bend sign, actually) and Poland. If anyone can tell me what a rotated Polish play mode is (in a programming context I'd guess something best implemented with an operand stack), answers on a postcard ...

      In Polish mode it also changes the "random grey space we apparently didn't have enough buttons left to fill" into "random white space we apparently didn't have enough buttons left to fill". Cool. Maybe it's not Polish, then. Placard mode? Placebo mode, could be.

I can only assume they're aspiring to the xmms user interface.

("Initiate/abort DiscDB lookup"? What's wrong with "Look up disc/track titles"? If there's a lookup in progress, change the tooltip to "Cancel title lookup". The icon for that one appears to be a picture of two petrol pumps having sex.)

I'm tempted also to rail about the track skip buttons (click five times on "next track" and it click click clicks five tracks forward, then suddenly skips back again four of them), the skip-forward-in-track button which when held down for five seconds goes click click click with no other audio output, then resumes play fifty seconds further on when released, and the not-always-notice-when-disc-ejected behaviour which causes the new cd, if longer, to stop playing before it actually gets to the end. Some or all of these may be bugs in my cd player hardware, though, so it may not be fair to blame grip.

Try the GNU Project's Free Software#

Thu, 06 Jun 2002 00:01:43 +0000

Try the GNU Project's Free Software licensing quiz. For what it's worth, I got two wrong: question 6: offer-of-sources-for-binary-distribution (which I should have known) and the reverse-engineering question, about which I don't really care.

It suits people to claim that the GNU Licenses are overly restrictive and this will encourage users of proprietary software to carry on using that instead. So, I'd like to offer the "typical proprietary software EULA licensing quiz", with approximately the same questions

  1. Joan writes a web browser and releases the source code under a typical-proprietary-EULA on her web site. Fred gives a CD with binaries of Joan's browser to his friend for her birthday. What happens

    1. Joan sues Fred

  2. Now Fred makes modifications to Joan's web browser, and distributes binaries on his web site. What happens?

    • I.

      Joan sues Fred (again)

    1. I, and nothing else.
    2. I, and nothing else.
    3. I, but nothing else
    4. Any or all of I, I, I, or I

  3. Fred wishes to distribute Joan's browser linked to a third-party module. The third party module has the following license:

    This code may be freely modified, copied and distributed, so long as no fee is charged for it.

    Would this violate the typical proprietary EULA?

    1. Yes

  4. Peter creates a library called LibIdo licensed under a typical proprietary EULA. FooCorp distributes a modified version LibIdo library linked to their proprietary program Frobber. Which of the following is not an obligation of FooCorp?

    1. To lose in court
    2. To settle out of court

  5. Joan wants to distribute copies of her browser statically linked to Postfix (a mail server), which is released under the IBM Public License, a GPL-incompatible Free Software license. Other than Postfix, the browser includes only code on which Joan holds the copyright. Should she grant an exception to her typical proprietary EULA for this?

    1. No, what would be the point? People can't copy it anyway

  6. FooCorp distributes binaries of Joan's web browser on CD without source code. They include an offer to provide source code. Which of the following offers fulfills their obligations?

    • I. "You can download the source code from our web site at http://foocorp.example.com/download.html"
    • II. "Everyone who buys a binary CD may order up to one source CD per binary CD for $5000."
    • III. "Everyone may order a source CD for $5000."
    • IV. "Everyone who buys a binary CD may order up to one source CD per binary CD for the cost of distribution."

    • V. "Everyone may order a source CD for the cost of distribution."
    • VI.

      "Everyone who buys a binary CD may order up to one source CD for free."

    • VII. "Everyone may order a source CD for free."
    1. None of the above. Redistributing Joan's program is Piracy. Piracy is Theft. Theft is Love. Cleanliness is next to Godliness. Uh, wait ...

  7. Patty creates a library, and releases it under a typical proprietary EULA. Many people make improvements to this library, and submit them back to Patty, who incorporates them into newer versions of the library. Now Patty wants to make a proprietary version of this library. She makes two claims:

    • I.

      Because the original version was under a proprietary EULA, everyone who made improvements was acting in breach of the licence

    • II.

      Because she is the copyright holder, she can relicense the code, so nobody can distribute old versions anymore.

    Are these claims true?

    1. Both claims are true. II is a bit meaningless though, as nobody could have legally distributed the old versions anyway.

  8. FooCorp distributes Frobber linked against an unmodified version of LibIdo. Does the licence of LibIdo require FooCorp to allow users to reverse engineer Frobber for their own use?

    1. Yes.
    2. No, but it prevents FooCorp from doing this anyway

  9. Now FooCorp modifies Joan's browser to include a technology they have patented. They distribute this modified browser on CD. Are there any requirements in Joan's licence on how they may license their applicable patent?

    1. No, but it doesn't matter: they can't do this anyway

Hope this helps

grip update: having turned off autorepeat, I find now that clicking "play" after it's already played the disc once causes it to start on the last track

I think I'd forgotten how to make vn-cclan packages:#

Thu, 06 Jun 2002 02:04:09 +0000

New araneida and cliki packages in your nearest vn-cclan mirror as soon as they propagate, then

In other news, SBCL for Tru64 appears not to have bitrotted, so I should be checking that in tomorrow. Just want to build it with itself again first.

We have another vn-cclan mirror: ftp://www.aarg.net/pub/cclan/#

Fri, 07 Jun 2002 00:06:05 +0000

We have another vn-cclan mirror: ftp://www.aarg.net/pub/cclan/. Prompted by this encouraging result and the hope that it presages more to come, I hacked at telent.net's CCLAN redirector so that now you can get rid of your earlier choice and select another without having to fiddle around with cookies.txt or something

I found something that I'm reasonably convinced is an actual SBCL bug while rebuilding on OSF/1. interruptmaybegc establishes that the gc trigger has been hit. It clears the trigger, calls the Lisp function MAYBE-GC. MAYBE-GC calls SUB-GC, which if GC-INHIBIT is set, returns immediately without resetting the trigger - which it would have done had it actually GCed. So, after that we cons until we run straight off the end of dynamic space. I fixed it by making interruptmaybegc check whether a GC had happened, and resetting the trigger itself if it hadn't, but I think that's probably more of a kludge than a fix.

So, after all the blogging discussion at XCOM 2002, and prodded by the fact that#

Tue, 11 Jun 2002 01:17:45 +0000

So, after all the blogging discussion at XCOM 2002, and prodded by the fact that someone had actually asked for it, I decided it was time to investigate all that RDF/RSS/news feeds/syndication business. Not (yet, anyway) for this diary, but for CLiki's Recent Changes.

Can you tell how impressed I am by this? An RDF probably-RSS feed of CLiki is now available from https://ww.telent.net/cliki/recent-changes.rdf anyway. Let me know if you find anything useful to do with it.

More CCLAN mirrors. Now we need some more content, really.

Welcome to the brand new diary system#

Tue, 11 Jun 2002 05:42:55 +0000

Welcome to the brand new diary system. With luck you should barely notice the difference, but I do. One-file-per-entry, lashings of Common Lisp, and small amounts of emacs glue. The only real gap (so far) is a way of telling emacs that these files are fragments of HTML BODY content so I can use psgml for element competion and suchlike.

Look Ma, a brand new diary system#

Tue, 11 Jun 2002 06:38:01 +0000

Look Ma, a brand new diary system. One-file-per-entry, lashings of Common Lisp, and moderate amounts of emacs glue. The only real gap (so far) is a way of telling emacs that these files are fragments of HTML BODY content so I can use psgml for element competion and suchlike.

More Emacs magic#

Tue, 11 Jun 2002 16:08:54 +0000

More Emacs magic. The documentation for PSGML is a bit iffy in places, but it does profess to cope with split documents, and I've managed to imbue it with at least enough smarts to close tags when I press C-c /, and to not beep at the end of each line. Which is refreshing

(define-key global-map [f11] 
  '(lambda () (interactive nil)
    (let ((s (shell-command-to-string "echo `date +%s` + 2208988800 | bc ")))
      (find-file (format "~/doc/telent/htdocs/diary/data/%s.html"
			 (subseq s 0 (1- (length s)))))
      (setf sgml-parent-document '("HEADER.inc" "HTML" "BODY" "BODY" ())))))

If you're curious, the magic constant in the bc calculation is the number of seconds between 1900 and 1970

Reclaimed my cellphone from the phone repair people. This time they've mamaged to repair it (they "reflowed the pa's and filters", whatever that involved) without deleting all the numbers, which is nice as I forgot to back it up before taking it in.

Well, that'd explain it#

Tue, 11 Jun 2002 17:59:12 +0000

Well, that'd explain it. Mail from the Userland people to say that the aggregator is no longer running. A note to that effect on the web site would have been nice, but never mind.

I was pointed to Meerket at O'Reilly, but it doesn't actually have any "submit your rss url here" option of its own, it relies on grovelling the userland and xmltree.com databases. Given that one of these no longer exists and the other is some lameass hierarchical thing ... Enough. If/when the RSS advocates get their collective act together, I'll have another look. Until then, back it goes in the box with SET, Java applets, "wallets", and VRML. Sorry.

Once upon a time I bought a copy of the Unix-Haters Handbook#

Wed, 12 Jun 2002 16:41:45 +0000

Once upon a time I bought a copy of the Unix-Haters Handbook. At the time I was the biggest Linux bigot I knew, and intended mostly to laugh at it - in fact, I mostly did. This Linux Gazette review gives you the flavour of my opinions.

As time went by and when I started thinking a little more rationally about operating systems (this change can be explained by one of more of (a) finding the alt.sysadmin.recovery newsgroup, or (b) finishing university and getting a real job) I grew to actually quite like my Unix-Haters handbook, even using it as a reference for that funky shell trick where you thought you needed $* but should have been using ${1+"$@"} or something instead. I retained my initial opinion that the funny bits were almost always the reprinted mailing list messages: Garfinkel's filler between them was, well, filler.

``${1+"$@"} or something ''? Yes, well. Somebody borrowed my copy from the office and didn't return it, and unhappily now it's out of print, I can't easily get another. But after recent conversations on IRC suggesting that they were still available, I found the actual list archives on the web: http://www.mindspring.com/~blackhart/

Date: Fri, 14 Dec 1990 18:25-0500
From: GP
Subject: Re: MC:HUMOR;JARGON >

Date: Fri, 14 Dec 1990 13:54 EST From: DH

The JARGON file is being updated. The guy doing so has changed the nasty references to Unix to refer to MS-DOS because "all the ITS partisans have now become Unix partisans, since the Unix philosophy is the same as the ITS philosophy." as he says.

Amazing! A valid argument against gun control ...

"The guy doing so" presumably being Eric Raymond, I find this especially funny...

This entry exists for two reasons:#

Wed, 12 Jun 2002 17:37:56 +0000

This entry exists for two reasons:

  1. To counter Neil's claim that my use of an external process to generate seconds-since-1900 was an attempt to bait him. In fact, it was simply a lack of success with emacs apropos facility.

  2. To remind me that my permalink format sucks when there are multiple entries on any given day. That needs fixing.

The ulterior motive for this recent spate of CLiki hacking can now be#

Fri, 14 Jun 2002 02:08:46 +0000

The ulterior motive for this recent spate of CLiki hacking can now be (has now been) revealed: I have to talk about it in a couple of months time. Of all the projects they might have asked about (SBCL porting, asdf, cCLan, etc), they had to choose the one guaranteed to send me into apologetic fits about the quality of the code. It was a weekend hack. It shows.

"Plan" is possibly too strong a word, but we have intentions to create a shared bug database for SBCL and CMUCL, using CLiki. This involves a fair bit more structured data going into the page, so that we can perform searches for things like "give me all the bugs more than a year old that have not been fixed in sbcl" or "give me all the bugs reported in cmucl that haven't been tested in sbcl".

So presently I'm practising slash-and-burn refactoring to remove some of the worst of the hardcoded markup rules and allow people to add arbitrary indices. Who knows, maybe in the process we'll even fix it to pick up the page links and do the full-text indexing in the same pass, thereby avoiding having to reread the page twice after every edit. And fix the current-page-appears-in-own-list-of-links bug. And this also gives us an opportunity to introduce a syntax for "download" links other than the ill-conceived >(foo-bar.tar.gz) - i.e. that doesn't do bad things when people write <code>(funcall (compile nil (lambda () (* 2 3))))</code>

See if that helps#

Fri, 14 Jun 2002 03:05:31 +0000

See if that helps. Permalink format is now /diary/year/month/#date.nnn where nnn is the number of seconds since midnight. Numbers are not zero-padded; it'll only cause trouble if people want to do arithmetic on them in javascript.

Yes, this is not a backward-compatible change. I could have (did, briefly) special-cased the links for old entries, but then I realised that the only external link that I knew of was not going to the right place anyway, so really we'll all be happier in the long run with a Fresh Start.

I have to tell the world about this #

Fri, 14 Jun 2002 22:37:45 +0000

I have to tell the world about this rec.music.makers.guitar thread.

You probably won't read this until the Internet comes back#

Tue, 18 Jun 2002 03:29:43 +0000

You probably won't read this until the Internet comes back ...

I'd like to recommend the NTL web site as a great demonstration of so many ways to get the design of a web site wrong. Primarily at this present time

Eventually I thought to check Robin Walker's (amazing, frankly) Cable Modem Troubleshooting Tips and found the numbers I wanted in the Tech Support section there. For the benefit of future Google users who experience similar problems and may end up at this page, 0800 052 4315 for the status recording, 0845 650 0121 for the helpline.

For the record, the NTL telephone voicemaze jail is almost as well-planned. I dialled the status recording, which is information-rich in much the same way as 10 Angstroms is a long way: for each outage it tells you who it affects, that it is due to "a technical fault", that engineers are aware of it (in fairness, given NTL's usual standards of internal communication, it's entirely possible that they would announce a fault on the answering machine and forget to tell the engineers, so perhaps there is actually some value in knowing that they havent screwed up in this particular way) and that they apologise for any inconvenience. No estimated time to repair, and no fault description which would let a caller make a reasoned guess at time to fix either. But anyway, it didn't mention Oxford.

So, try the other number. It says "for cable modem faults, replace the handset and dial 0800 052 4315" which number sounds vaguely familiar: not surprising, it's the recorded status line I just called to be apologised to by a machine. So instead I retain the handset, I select a plausible-sounding option from the next menu and then it tells me that they're rewiring the entire HFC network for expansion and Oxford is one of the exchanges that will be off from 1am. Why don't they put that on the service status report? Call me a non-technical person, but by any dictionary definition of service status, I'd have said that "no service" is relevant.

Could have been worse, anyway. At least they didn't play their hold music at me.

I think we're nearly there#

Wed, 19 Jun 2002 04:38:31 +0000

I think we're nearly there. Just need to touch up the search handling a bit, and then I'm ready to release a new cliki onto the world. New Improved CLiki with Almost No User-Visible Changes. Rock.

I'm going to go to bed first, mind.

I don't know why, but it appears that spamassassin has no#

Wed, 19 Jun 2002 16:48:26 +0000

I don't know why, but it appears that spamassassin has no blacklist_to command. I'd find this very useful as I have old addresses which I still need to check because they're published in various places, but which I haven't used otherwise in the last four years, and still get a steady stream of spam.

If you're using spamassassin through your .forward file, though* - or presumably also procmail - it's easy to fake

header SENT_TO_DETACHED To =~ /dan\@detached.demon.co.uk/

That should tip the balance a little.

* apparently this doesn't work if you use spamd/spamc because it won't pick up new rules from the user_prefs file in that case. This is a shame if so, because I really do need to convert to a daemon-based approach - currently I get massive thrashing and load averages exceeding 15 when I reintroduce my laptop to the net after having been away. A fix would be nice.

mpt's "archives are broken, as per Blogger usual" quote should probably#

Fri, 21 Jun 2002 02:38:20 +0000

mpt's "archives are broken, as per Blogger usual" quote should probably enter some kind of stock-blogger-phrases list if its not on one already. I wanted to link to Juri talking about multipart/form-data in Araneida. Guess what, his archives are broken, so you get to read about xchat usability first. Or scroll down.

Anyway, I finally got as far as reading his patch. Then I thought I should go and look at the spec (for a change), so I stopped along of RFCs 2616 and then 2388. (Yes, links to archives on different sites. I can never remember an rfc mirror site, so I tend just to google for `RFC number' and choose the result my eye is most immediately drawn to. Anyway.)

I've not really looked at XML-RPC, so my primary motivation for multipart/form-data encoding is to handle those forms with file upload fields - you remember, they were all the rage back in the days of Netscape 2. Basically it's a MIME multipart encoding, or pretty similar. So ...

   For example, a form with a text field in which a user typed 'Joe owes
   <eu>100' where <eu> is the Euro symbol might have form data returned

--AaB03x content-disposition: form-data; name="field1" content-type: text/plain;charset=windows-1250 content-transfer-encoding: quoted-printable

Joe owes =80100. --AaB03x

- let's call it about 150 bytes to represent 21 characters? That this is followed a page later by

   The multipart/form-data encoding has a high overhead and performance
   impact if there are many fields with short values. However, in
   practice, for the forms in use, for example, in HTML, the average
   overhead is not significant.

leads me to suspect that someone somewhere can't count. (In a real-life example it's more likely that the user would only be entering the digits 100 and the currency would be displayed read-only or in a separate field, so no need for the charset declaration. Still over 100 bytes of data and now for 3 characters. Nice one)

Anyway, that's just me grousing about anything I can find to grouse about (I've had this problem for about a week, since spending most of Wednesday reading the Unix-Haters list archives) rather than an actual practical objection. We have bigger pipes and faster CPUs these days than we need for processing HTML form uploads (so quick, introduce a slower encoding scheme before people get bored and find something useful to do with all those spare cycles)

The more relevant issue is about uploading big files, and even more so, about uploading big files that perhaps the user didn't mean to upload, or that we didn't want the user to upload. Right now, Araneida just reads Content-Length characters into memory, ambles through it finding separators and conses up a bunch of strings and keywords and stuff with all the relevant header values. And right now, the only way anyone normal would get data into Araneida would be by typing it in or by cut and paste, so it's not really a problem. Yet. But watch that RAM usage rocket when one of those form elements is multimegabytesized.

I think half of the answer is to make REQUEST-BODY `lazy', so that it only reads the body the first time someone asks, and then to add something like REQUEST-FLUSH-BODY to be called on error or by a handler that knows it won't need the body parameters at all (e.g one that says "you aren't authorized to upload. pfooey"). We have to read the body sometime before we actually start writing to the stream, as otherwise the peer gets upset, but we could do this in REQUEST-SEND-HEADERS and pretend that (format stream "HTTP/1.0 200 OK~%Content-type: text/html~%~%") (which has hitherto always worked) was undocumented and unsupported. As there is no useful documentation and no support for Araneida, this is almost a defensible position. Kind of. Alternative is to use Gray streams, but that always makes me want to say "yay, cool! another layer of pointless buffering".

A stream interface to the request body would also, I think, be useful. After all, if you really did want to let the user upload a 25Mb file, chances are you're only going to write it out somewhere anyway and only need look at one block at a time.

* (let ((report '(:os :alpha :tree t)) (term '(:tree :sbcl))) (every (lambda (x) (let ((tx (getf term x t)) (rx (getf report x t))) (or (eq tx rx) (eq tx t) (eq rx t)))) '(:os :tree :arch)))#

Sat, 22 Jun 2002 03:39:10 +0000

It's not exactly what you'd call a comprehensive test, but it seems to work. Omitted components in either the criterion we're searching on (term) or the report we're looking at (report) default to "any". For each attribute that we're looking at '(:os :tree :arch), a search for "any" yields results for "any" or for any other value, and a search for a specific value also matches reports that apply to "any". All clear?

There is admittedly no way in this scheme at present to say "all reports except the ones that apply to :os :linux", for example. I think I had some reason for this omission along the lines of "why on earth would you want to know that"; it remains to be seen whether this is convincing.

Cool URL of the Day: In Pursuit of Simplicity: the manuscripts of Edsger W#

Mon, 01 Jul 2002 14:05:56 +0000

Cool URL of the Day: In Pursuit of Simplicity: the manuscripts of Edsger W. Dijkstra

They're scanned PDFs, of a somewhat ropey quality: readable at 1.4 magnification, though

Today is random asides day#

Mon, 01 Jul 2002 23:47:22 +0000

Today is random asides day

On Living with Packages

  1. don't ever use common-lisp-user for anything bigger than a noddy two-line test function. Anything important enough to get saved in a source file is important enough to set up a package for.

  2. define your package(s) using defpackage forms. I usually put these in their own source files, too.

  3. every file starts with an (in-package :package-name) form - except the file with the defpackage form, anyway

  4. make sure you load the files containing the defpackage forms before any of the other files

  5. use-package, import or any of the other "imperative" package stuff is, like the use of eval, generally an indication that you're doing something wrong. Not always, no. Usually

  6. a defsystem utility (e.g. mk-defsystem or - my preference - asdf) will automate the loading-stuff-in-the-right-order aspect

On being ill

Well, slightly under the weather at least. This weekend I had a wedding (not my own, no), a barbecue, a party and a nose full of microwaved cotton wool. Last Friday I had an all-afternoon wish to lie down and sleep unobtrusively in the middle of the carpet, which I now realise was probably early cold symptoms, plus a bunch of scary disk error messages from my colo box (Rackspace fitted a new disk, upgrading the OS version while they were at it, then I just had to reinstall all the locally-changed stuff), plus an evening in the pub. This is all in the nature of an excuse for not having done much hacking lately.

On naming

What really wasn't helping too much is that I'd originally set out at the start of the week to add some form of access control to the CLiki application (the CLiki site will stay as it is, but there are lots of other applications I'm imagining for which it would be better to know who the users are and whether they're Allowed), realised that the handler system for Araneida is suckier than it really wants to be for these kinds of application, and ended up redesigning large parts of it. And now I've created a new class called handler, I find that I want to introduce lots of new GFs whose names clash with existing Araneida functions. So perhaps this is time for a name change. Nobody appears to have produced http serving software called Boris yet, which is a pretty compelling reason in itself.

Anyway, we've got to a state where it basically runs again, so maybe we can get this wrapped up in time for Thursday