I've been getting into Common Lisp heavily lately. Working with Emacs
Lisp has always been a great change of pace from daily work in C or
Java. Things like map, with-*, and the delightful development
environment are great, but the biggest reason is that it's a
completely different mindset. Lisp doesn't make you bother with
declarations, recompile cycles, or loading a separate debugger.
Common Lisp may not have the extremely portable library called Emacs,
but it's a lot faster, and has features which make
My play project is a DVD database. Not like the pathetic ones you
see on slashdot, which index the movies and may, if you're lucky,
link to Amazon. No, I want a database that fully describes my DVD
collection. It'll start with the release (the thing you buy at the
store), progress down through the case (Monty Python's flying circus
has a box with a bunch of keep cases), through the disc (or as I
prefer to call it, the shiny thing), describe the main feature, the
extras, the audio tracks available for each, etc. The initial use
case is to be able to decide if I want to buy a new edition of
something, knowing as much as possible about what I have. Right
after that is to let my family know what I have so they don't
duplicate them during the holidays.
It's just great to experiment and futz around interactively. For
example, here's my proof-of-concept Amazon search:
(setf result (xmls:parse (net.aserve.client:do-http-request
"http://xml.amazon.com/onca/xml3"
:query `(("t" . ,*associate-id*)
("dev-t" . ,*developer-token*)
; ("AsinSearch" . "0439139597")
("KeywordSearch" . "Harry Potter")
("mode" . "books")
("type" . "lite")
("f" . "xml")))))
(assoc "Asin" (cdr (assoc "Details" (cddr result) :test #'equal)) :test #'equal)
This uses xmls to parse the
XML and Portable
AllegroServe to talk http. CL may not have the huge quantity of
libraries that other languages have, but I'm still happy how easy it
was to get together!