Another morning, another sunrise. This one isn't as pretty as the one on the 30th.
reiska is coming along pretty well, considering that I took a day off the project studying Common LISP (prompted by the slashdot.com article). I'm almost done with the datastore design, but I'll need to run some more tests and implement item ordering according to popularity (weighting) before I can use this with Stephen Hazel's libfreenet.
I released the first (and so far only) version of reiska to the public - it's more of a "I'm gonna do a FNP implementation, so I'm releasing early" tarball than anything else, so as released it won't do anything useful. It generated a small flurry of posts on the freenet-devl mailing list, though, some of them suggesting that I use libfreenet for the node-to-node communication (which may be wise, since the protocol has been changed quite a bit for the 0.4 release - or so I've read) and concentrate on the message passing logic, datastore management and client handling in reiska. This approach looks pretty sensible, now that I have a better understanding of the inner workings of a Freenet node.
I whined some months ago how it is fucking hard to get into the Scheme mindset, and my opinion still holds -- expressing iteration with tail recursion may be OK if you're a hard-core theorist who implements every basic algorithm once without doing anything particularly useful with it, but try writing anything really useful without ever using a "while" macro and I'll give you the award for supreme wankerhood (a dried pea and a nut in a tiny cardboard box, if you're wondering).
Common LISP, on the other hand, is beautiful. CLOS in particular. I'd say that CLOS is the best object system I've ever had the pleasure of messing around with. I've had a couple of problems with the "a name may be both a variable and a function" thing as well as remembering to use funcall, but I guess I'll get used to it.