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 ...
- Click the `config' tab, then the 'CD' tab of the inner
tab set. Observe no option to kill the autorepeat.
- Check all the other tabs in case it's somewhere stupid like 'misc'
instead. Nope
- 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.
- Um. Guess there's no such option, then. Return to using xmcd
- 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
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
- (asdf:operate 'asdf:load-op 'cclan)
- (dolist (s '(araneida cliki)) (cclan::cvs-tag s) (cclan::make-tar-file s))
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.
- There are four versions: 0.9, 0.91, 0.92, 1.0
- 0.9 is apparently deprecated. This hasn't yet stopped slashdot and a
billion other sites from using it, but let's assume we should avoid it
for new work.
- 1.0 seems to be less of a web site summary format and more an
attempt to take over the world. Its authors share the common delusion
that if they can simply agree on the symbols between the angle
brackets, they can avoid the hard questions about how to
categorize the planet, and their plan does tend to suffer slightly due
to these priorities.
- 0.92 is backward compatible with 0.91 (which you'd expect for a
1% change in version number, really). 0.91 was not compatible with
0.9; perhaps the people who were around at the time had their
expectations conditioned appropriately by this fine piece of
engineering management, which is why they feel so excited by about
compatibility now.
- There is no DTD for 0.92, nor can I find one of those
new-fangled we're-too-dumb-to-read-dtds xml equivalent things. The
nearest thing is a document on the userland site laughably termed a specification, but how
can you have a validator if there's nothing to validate
against? You can't even write a valid DOCTYPE.
- This is a more pertinent question than you might have thought, as
userland have a
"validator" on their site. My rdf files pass it.
- But whatever their registration form
does also involves
some kind of validation(sic), and that doesn't work, failing with
the error message
There was a problem reading or parsing your XML file. Here's the
error message. Can't get the address of "language" because the table doesn't
have an object with that name.
This is well up to the Oracle standards for reporting the specifics of
what went wrong, but it's also inaccurate: if we assume that it means
``a required "language" element is missing from (somewhere)'', it's
wrong, because "language" is optional in 0.92.
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:
- 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.
- 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
- graphic-heavy design guaranteed to annoy anyone who just had to
fall back to their emergency analogue modem
- no indication anywhere of what the current known faults in the
network are
- or how to report a new one
- and completely robot-proof: any Google query for "ntl fault"
will go straight to the NTHell
pages instead. Nice one ...
- (actually, there are some Google results for NTL Ireland, but
luckily NTL have removed the pages in question since they were
indexed, so all they show now are IIS error messages)
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/
score SENT_TO_DETACHED 3.5
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
as: --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
- (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)))
T
- (let ((report '(:os :alpha :tree :sbcl)) (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)))
T
- (let ((report '(:os :alpha :tree :cmucl)) (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)))
NIL
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
- 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.
- define your package(s) using defpackage forms. I usually put
these in their own source files, too.
- every file starts with an (in-package :package-name) form -
except the file with the defpackage form, anyway
- make sure you load the files containing the defpackage forms before any
of the other files
- 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
- 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