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)