Thursday, November 09, 2006

Lemonodor fame awaits

Jasko has done it - he has achieved Lemonodor Fame for his Cusp plugin for Eclipse! While I use emacs+slime myself, Tim uses Cusp day in and day out, so it is definitely a case of eating your own dogfood with him. There are more good things to come.

A positive side-effect is the boost in traffic we are seeing at Paragent. Chees called me up when he saw the spike in google analytics. The cusp page is the #1 hit on our site. Congratulations!

I put in a rolling fix to the server today.

# svn update properties.lisp
# attachtty /var/run/archon-socket
* (load "/lisp/repos/archon/properties")

And the fix was smoothly inserted into a running server. Man I love Lisp.


Wednesday, November 08, 2006

elephants, openssl and clsql

My son has told us he wants to be an elephant when he grows up. It doesn't take much imagination to guess what he was for halloween.

Thankfully, we have finally burned through the three bags of halloween candy at work. I can go through a bag of candy like, well... like something that can eat an entire bag of candy in a couple days. There is NO MORE to eat.

Dustin added a monitor for the backend server this evening, so I can now get paged in the middle of the night when it goes down. If you haven't used it before, the openssl command-line tool comes in handy when you need to test ssl code. you can use the s_client and s_server options to make connections.
$ openssl s_client -connect
In our case, Dustin just wrapped a call to openssl s_client and checked to make sure the server responds with an identification query as it should.

I frittered away the day it seems otherwise. I am still trying to work out what is wrong with our clsql code. Version 3.6.3 worked fine for us, but we are now getting a bunch of errors with 3.7.7 about [= being an unknown variable. Apparently there has been a change in the way that enable-sql-reader-syntax works, and our code is no longer doing the right thing to enable the use of the [ and ] macros.

While something changed to break our code with clsql, Marcus Pearce was kind enough to send along some pointers on how to get it working again. It may be that we were simply using the ENABLE-SQL-READER-SYNTAX incorrectly, and were lucky enough to have it working. We were able to reduce our issue down to a simple test-case, so we might hear back more on that front. In the mean time, I have used #.(clsql:locally-enable-sql-reader-syntax) and #.(clsql:restore-sql-reader-syntax-state) as suggested by Marcus at the beginning and end of all the files that use the brackets. It is not nearly as convenient as defining it in one location and having it work everywhere, but it works, and is backward compatible with the 3.6.3 version of clsql.


Monday, November 06, 2006


I spent most of today replicating our hosted web application on a new server, and actually documenting every step. It is amazing the way these things accumulate dependencies. There are things I never remember installing in the first place. It is like dependencies are their own form of self-replicating organism. CL-BASE64, where did that come from? There was even a well timed comment today on #lisp that ucw required half of the libraries to run. I thought - "If you also want to use clsql it requires the other half of"

It came to mind today that while in most languges there is a drive among adopters to want to interface it with existing libraries, in Lisp there really seems to be a desire to implement libraries. Lispniks seem to have a preference for seeing a solution coded in Lisp itself. It is not that Lisp doesn't have an easy way to talk to foreign libraries. If anything, it suffers from too many (sb-alien, sb-grovel, uffi, cffi, etc). People just enjoy writing stuff in Lisp itself.

It seems like there are one or two conversations a week explaining to a newcomer to Lisp that "in Lisp" means literally just that - the cl-foobar library doesn't call to the foobar command-line tool, or link with It is a native implementation of foobar in 100% Lisp. Come to think of it, more often than not, Xach is involved on one side of the conversation. I think the old-timers take great pleasure from the obvious shock to people that have been taught the rigid low-level compiled versus high-level dynamic view of the programming language spectrum. Heck, that seems to be the entire point behind Practical Common Lisp.

Okay, now where did that dependency come from...