15 May 2004 AlanShutko   » (Journeyer)

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!

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!