September 30, 2002

Approaching Conference

If you haven't finalized your plans to go to the International Lisp Conference, you better do it soon. That is, I better do it soon.

Even though the nominal registration deadline has passed, the word on the street is that you can register until the end of this week, and probably even later.

The conference schedule seems odd, beginning on a Sunday. Or maybe it's just me.

Posted by jjwiseman at 01:50 AM | Comments (0)

September 29, 2002

Pasty Cannoli Girl

Sarah Vowell isn't as funny looking in real life.

Sarah Vowell, looking... what? pleased?

She and David Rakoff spoke at UCLA last night. I went because I enjoyed her book Take the Cannoli, and I left thinking that Rakoff was OK, but that I was definitely going to get her new book to help me work out my issues over the 2000 U.S. presidential election.

In the lame Q&A afterward, Sarah said that LA was her favorite place to read. I wonder why.

Posted by jjwiseman at 11:42 AM | Comments (5)

September 28, 2002

ECL 0.6 (on OS X, too)

ECL 0.6 has been released. This version adds support for OS X and Redhat Linux on Intel.

Posted by jjwiseman at 11:25 PM | Comments (0)

September 27, 2002

Disaster Theme Park

In the past month I've experienced a magnitude 4.8 earthquake, seen an ICBM streak across the sky, and come out to my car in the morning to find it covered in ash from nearby out-of-control forest fires that were started by candles left burning after an animal sacrifice ritual.

OK, the cause of the latest fire is still under investigation. But the big fire in the same forest at the beginning of September really was caused by sloppy Santerians.

Posted by jjwiseman at 09:50 AM | Comments (3)

Effective Lisp (in Emacs) #12

<dan`b> rkrush: emacs font-lock gets it right a lot

         more often if you use #|| ... ||# instead

Posted by jjwiseman at 09:22 AM | Comments (0)

September 25, 2002

Side Action

I rearranged the sidebar a little. As part of that, I added links to Kevin Rosenberg's (kmr) weblog and Joey deVilla's geek weblog (which is separate from his adventures weblog).

Kevin is an impressively busy guy: ER doctor, Debian developer, Lisp programmer. He also works on some of the software I worked on back at Neodesic.

Joey doesn't focus on lisp, though he does mention it occasionally. I like him because he's a thoughtful character, pragmatic and anti-lisp weenie. He uses whatever tools it takes. And like, there's always hot girls in his photos.

Wisconsin State Fair, 2001.  Not 1981, 2001.

Posted by jjwiseman at 12:12 AM | Comments (3)

September 24, 2002

East Coast

The Retro-Computing Society of Rhode Island will be holding an open house on October 19 in Providence, RI, featuring Symbolics software and hardware.

Posted by jjwiseman at 09:55 PM | Comments (0)

Fonts Matter

I have wondered for months why lemonodor seemed to look vaguely lame in Mozilla.

Today I noticed that by default, Mozilla is configured to not allow pages to choose their own fonts; they are limited to the six selected in the Mozilla preferences. After enabling the option, this site looks significantly better. As do many others.

I think I'm being very generous when I say that is a questionable default.

(If you really want to get depressed about Mozilla's usability, read mpt for a while.)

Oops, it turns out I'm wrong about Mozilla making it a default. Which if I had bothered to spend 3 minutes booting VirtualPC or something to confirm it on another installation, I might have known.

Wouldn't it have been great if that was the default though? Some giant software development team makes a big boneheaded mistake, or some random person writes a web page that contains inaccurate information. One can be tragedy and comedy, the other is just the everyday experience of 21st century life.

Posted by jjwiseman at 12:01 AM | Comments (8)

September 23, 2002


Somehow, I just couldn't resist coding up the Luhn algorithm of which Joey deVilla is collecting implementations.

(defun luhn (string)

  (let* ((checksum 0)

         (cc-length (length string))

         (double-p (evenp cc-length)))

    (dotimes (i cc-length)

      (let ((digit-value (digit-char-p (schar string i))))

        (when double-p

          (setf digit-value (* 2 digit-value))

          (when (> digit-value 9)

            (decf digit-value 9)))

        (incf checksum digit-value)

        (setf double-p (not double-p))))

    (zerop (mod checksum 10))))

It's not clever, it's not pretty. It's just straightforward. The only slightly interesting thing might be using digit-char-p to get the numeric value of digit characters (e.g., (digit-char-p #\2) => 2).

Once I had this micro function, I then of course could not resist some micro benchmarking. I feel so dirty.

So I compared the run times of the Java and Python versions from Joey's page with Lisp. I tried both ACL and OpenMCL. The following table shows relative times, using the Java time as a reference.

Java Lisp (OpenMCL) Lisp (ACL) Python
1.0 2.36 3.60 56.3

Not so bad. Python is slow, but it's not native code (though it should be noted that just for fun I tried clisp, which compiles to bytecode, and it was still 3x as fast as Python).

So then, of course, I had to optimize. All I did was throw in some fixnum declarations (sort of the equivalent of doing arithmetic with ints instead of Integers in Java) , then tell the compiler to optimize for speed at the expense of all else.

Java Lisp (OpenMCL) Lisp (ACL) Python
1.0 1.58 1.97 56.3

A pretty impressive showing from Java, and not bad for Lisp either.

Though if the bottleneck you're facing is in your credit card validation routines, you can't be all that bad off.

Posted by jjwiseman at 10:21 PM | Comments (10)

Lisp Eclipse

Mike Hannemann is working on a special purpose Lisp plugin for Eclipse.

Lisp plugin for Eclipse Lisp plugin for Eclipse

Mike says

For Java, eclipse just rules. It took me 10 minutes of using emacs on the mac to miss it. Compiling files when you save them (so you don't have to use batch files or recompile everything), context awareness, little lightbulbs when you declare imports but don't use them, ability to quick-fix everything from used-but-not imported code to adding things to .cvsignore ... It's just nice.

For lisp here, it's unclear. But the next big thing on the agenda is a display of the current CERA event recognizer state -- i.e., what patterns are active, and where they are. Yes, you could add that to Emacs too, with graphics and mouse events and everything, but...

An editor with a nice extendable GUI is a powerful thing.

Posted by jjwiseman at 10:38 AM | Comments (37)

September 22, 2002


By the time MIX was unleashed on the world (and TACOP was published) in 1968, lisp was already older than java is today.

So I guess it was about time the two meet, via Lorance Stinson's CLMIX.

It's less like two retirement home veterans reminiscing over old times than like two Highlander immortals coming face to face (minus the decapitation). Actually, now that Knuth is switching to MMIX, we can see MIX more clearly now for the 35-year old flash in the pan that it was.

Posted by jjwiseman at 11:03 AM | Comments (2)

September 21, 2002

Side Effects of Pair Programming

This made me laugh.

(The image is from this post, it was just something I Photoshopped after telling Mike and Mark to "look busy".)

Posted by jjwiseman at 09:27 AM | Comments (3)



You know what is particularly dumb? That many (and some days it feels like possibly most) url strings are not valid html. What the hell was the W3C thinking?

At least 75% of the html errors that slip by me when I write a post but get caught by the validator are due to pasted urls containing '&', and it's the W3C's fault.

Let's go for a chicken ride
Photo by Harry Whittier Frees

Posted by jjwiseman at 08:52 AM | Comments (2)

Fresh Love For Lisp

Mark Watson has updated his "free web book" "Loving Lisp, Or the Savvy Programmer's Secret Weapon"

It's not quite finished, but he's made a lot of progress since May (unfortunately that doesn't include fixing the typo in the title, though).

Posted by jjwiseman at 08:32 AM | Comments (0)

September 20, 2002


aFTPd is Franz' new open source FTP server, written in lisp.

"I wrote this program because I was tired of the steady stream of security patches coming out for the well-known FTP server we were using at Franz Inc."


"The result was a clean, simple program that we now use at Franz Inc. as our production FTP server."

Posted by jjwiseman at 01:05 AM | Comments (0)


I saw the most amazing thing a few hours ago.

I was driving, and suddenly I noticed a weird glow in the sky. It was like a squiggly jet vapor trail, only broader and glowing and multicolored. The sun had set long enough before that the sky was completely dark, so I figured whatever this was had to be pretty high up to still be able to catch the sun.

I had never seen anything like it; I guessed it might be a trail left by some kind of sounding rocket. I was pretty excited, and a little freaked out. I just don't often see large scale phenomena that I have to struggle to explain.

There was a guy on the street looking at it, talking on a cell phone and when I stopped and asked if he knew what it was, he said his friend on the phone told him a rocket went totally out of control while it was reentering the stratosphere and had to be destroyed.

Minuteman III contrail

The real story isn't quite that immediately dramatic--it was a night launch of a Minuteman III ICBM from Vandenberg Air Force Base, about 150 miles away. Just a routine test. If I had been looking up at just the right time, I would have been able to see the missile moving through the sky punctuated by a weird sort of blooming as the different stages fired.

Minuteman III contrail

This one missile was so impressive, it wasn't until a few hours later that I started to think about kilotons and overpressures and Circular Errors Probable, and the intended purpose of these missiles, and what it would be like to look up and see dozens of these crazy squiggly multicolored pulsing ribbons extending into the night sky in the first few minutes of a large scale nuclear exchange, and not know what it was for sure, but have a pretty good hunch. I used to think about that sort of stuff a lot in the 80s. I think lots of kids did.

This guy had his camera handy. And here's the AP story.

Posted by jjwiseman at 12:00 AM | Comments (6)

September 19, 2002

Bloated Incomprehensible Catastrophe

That's a description of my last social outing involving women.

No, actually, it's from this article by Bradley Sherman, which pretty much sums up my thoughts on the Semantic Web and RDF [via Jorn Barger]:

  Jorn Barger <> wrote:
  > ...
  >So I don't believe TimBL&co are going to be able to define any
  >useful semantic labels for the bulk of webpage markup. (If they
  >could, it would be more useful in a META header than in phony
  >style=semantics tags.)
  > ...

  This is an understatement.  There are thousands of talented
  people attempting to categorize knowlege and they are
  *all* failing.  XML is a disaster.  Ontologies are a disaster.
  XML plus Ontologies is synergistic:  the combination is
  a bloated incomprehensible catastrophe.  The Semantic Web
  is a red herring.

In my experience, even small ontologies with a lot of domain specifity are hard to get right. And small changes in the domain seem to often force significant restructuring of the ontology.

I've always been suspicious of Semantic Web people because it seems like I've never heard one talk about just how hard this is. Or about all the previous failed attempts at it that lots of AI researchers have made (at this point, you're thinking about Cyc, aren't you? Admit it. Well, is there any evidence that Cyc has been successful?)

Posted by jjwiseman at 02:02 PM | Comments (11)


Kevin Rosenberg's LML is a markup language combined with execution semantics (well, lisp). It's like LSP, except it's all s-exps instead of html text and lisp text.

Kevin has a weblog, too.

Posted by jjwiseman at 08:50 AM | Comments (0)

September 18, 2002

ACL 6.2 Trial on OS X

Somehow I missed that Franz has made the trial version of ACL 6.2 available for OS X.

The rumor is that it doesn't work with emacs, but I'll have to try it tonight before I can confirm that.

Posted by jjwiseman at 01:44 PM | Comments (4)

If Baywatch Were a Public Access Show

In a pleasant coincidence, Jason Kottke links to "probably the most difficult-to-read weblog [he has] ever come across", the Computational Complexity weblog, and it's by Lance Fortnow, who was the professor I first talked to about going to the University of Chicago for grad school.

This was back when I thought I was interested in theory (math) instead of AI. I drove to U of C to get the lay of the land, and Lance took some time to talk to me. I was impressed; an article had just come out that summer in Scientific American about the holographic proof technique that he had helped develop, and there he was, friendly and warm, describing the department to me and gently clueing me in that no matter how smart I thought i was, everyone else there was really fucking smart too.

And now he's busy writing an ultra serious weblog, which makes me feel slightly less guilty about lemonodor being the Baywatch of computer science (only much less popular).

Posted by jjwiseman at 09:32 AM | Comments (0)

McCLIM International

Brian Spisbury's internationalization skills are being applied to McCLIM:

Multilingual McCLIM

Posted by jjwiseman at 09:30 AM | Comments (1)

September 17, 2002

Power Cycle

lemonodor was off the power grid for a while today.

Sep 17 14:10:01 server anacron[2181]: Anacron 2.3 started on 2002-09-17
Sep 17 14:10:01 server anacron[2181]: Normal exit (0 jobs run)
[ Dream time ]
Sep 17 20:28:06 server syslogd: restart
Sep 17 20:28:06 server mach_kernel: standard timeslicing quantum is 10000 us
Sep 17 20:28:06 server mach_kernel: vm_page_bootstrap: 76826 free pages
Posted by jjwiseman at 08:58 PM | Comments (0)

Langband 0.1

Langband 0.1, Stig E Sandoe's lispy Angband alternative, has been released. This is the first public release.

Stig says

The release is a concept release, and may miss some of the advanced features. What it does have is:

  • Graphical tiles for X11, *including* images. Images is a feature not found in any other angband variant. See
  • Most commands (eat, drop, drink, pick up, read, zap wands)
  • Basic fighting and basic spells
  • Most common objects with effects
  • Doors, traps, corridors and rooms in the dungeon
  • Aggressive monsters and nasty combat attacks by monsters
  • Bows, wands, staves and rods and a fireball for your enemies
  • Simple stores, a simple home and quick to create a character

More info about features and missing features may be found on the Langband website at Information about downloading it for a go:

Questions and feedback is appreciated. Either mail or ask on the newsgroup

Posted by jjwiseman at 12:03 AM | Comments (0)

September 16, 2002

OpenMCL ToDo

Gary Byers has started an OpenMCL "ToDo" wiki.

The current entries are NativeThreads, AnsiCL, BetterDocumentation, MetaObjectProtocol, LargeArrays, CocoaDemo, PortToPPC64, OtherPorts and BetterCompiler.

Posted by jjwiseman at 10:32 AM | Comments (0)

September 11, 2002

Telephony with a Lisp

Chris Double points to a new telephony product written in lisp.

P.S. I hate myself for making the first Lisp/lisp joke of my life.

Posted by jjwiseman at 07:48 PM | Comments (1)

September 10, 2002

SCL 1.1

I mentioned SCL a few days ago, but I should have said more since SCL 1.1 was just released.

A new release of Scieneer Common Lisp 1.1 is now available. The website has recently been updated and the evaluation product may now be requested and downloaded from the website.

The Scieneer Common Lisp implementation features support for Symmetrical Multi-Processor (SMP) systems on various Unix based platforms, making it ideal for scalable multi-threaded enterprise and performance computing applications.

Note that evaluation versions are available.

Posted by jjwiseman at 10:59 AM | Comments (0)

September 09, 2002


Erik Naggum is exploring the possibility of producing a nicely printed and bound version of the ANSI Lisp standard.

Since I mentioned it, I got quite a handsome number of positive responses, so I think I shall go forward with an idea I got as I came across amazingly beautifully printed and bound versions of the Bible and the Qur'an (which are admittedly aimed at larger markets than standards) and noticed that Webster's New World College Dictionary comes in a black leather-bound and gilded edition for their 50th anniversary. As a bibliophile I would so very much like to produce the last public draft of the Common Lisp standard in a nicer font and in the high-quality binding that I think it deserves. Since it is not going to change any time soon and we should try not to worry about its status as ANSI standard, I should hope there is a sufficiently large market that I am willing to take on the job of producing this book in a lasting and beautiful version. The problems are the print run, the cost of the binding, and the financial risks involved. I have no idea what the costs might be, but will investigate in the coming week. It will be substantially more than the USD 18 for the PDF file, however. Please indicate your preliminary interest to me by mail with some indication of the price level at which that interest would wane.

I know what you're thinking, but a binding made from the skin of brutally flamed c.l.l posters wouldn't be nearly as durable as a leather one.

Posted by jjwiseman at 10:15 AM | Comments (3)

September 07, 2002

OpenMCL and native threads

Gary Byers on openmcl-devel:

>Are native threads being used?

No, but the plan is to phase them in over the next few OpenMCL releases (details forthcoming; if anyone's curious, ask.)

I think that would make OpenMCL the first free lisp with native threading under unix, and maybe the second lisp, free or otherwise, after Scieneer's (Douglas Crosher's) SCL).

Posted by jjwiseman at 01:56 PM | Comments (0)

September 05, 2002


Luke Gorrie and others discuss how to get emacs to display "lambda" as a Greek lambda character.

lambda in emacs

Posted by jjwiseman at 10:51 AM | Comments (0)

September 04, 2002

Mixins and Interfaces, Lisp and Java

In this ll1-discuss thread, Ken Anderson does some simple analysis of Lisp and Java programs to compare the use of mixins in lisp classes versus use of interfaces in Java

While AMP, the Lisp application, has about the same relative percentage of mixin's as JDK 1.4 has interfaces, its use of multiple inheritance seems fairly low, at first. However, the top 5 most popular interfaces to implement tend to be either Serializable, a Listener, or Runnable. In Lisp, Serializable is implemented by a method which is just written for the class if necessary. Listeners and Runnables are simply procedures in Lisp, not classes.

Further analysis could reveal interfaces struggling to get out of the Lisp code, and multiple inheritance and closures struggling to get out of the Java code.

Ken Anderson's previous quantitative efforts include statistics on function arguments and a comparison of Lisp and C performance.

Bowling at the Hollywood Star Lanes

Posted by jjwiseman at 09:53 AM | Comments (0)

September 03, 2002

Utility Dilution

The HTTP "referer[sic]" header is pretty cool. I can use it to see where people have linked to lemonodor. I've found some good sites this way.

Here are a few random referers from my logs. If you follow these links, you'll find a link to lemonodor somewhere.

Unfortunately, the referer header seems to be becoming less useful by the day. There is a trend for RSS readers and aggregator applications to use the application's homepage as the referer url.

For example, here are some referers from my logs that will take you to pages that have nothing to do with lemonodor:

It's all just fodder for grep -v. And while it's not a big deal, it is annoying. The user-agent header is right there for the very purpose of expressing information about the program fetching the url. I would imagine it makes it harder for people to use log file analyzers and things and get meaningful results, when suddenly it looks like several hundred hits are coming from a single url--a url that has nothing to do with your site

I think this behavior was pioneered by the Radio aggregator. When Dave Winer added the feature, though, I thought it was pretty cool because Radio actually sent a referer header containing the url of the radio weblog of the person running the aggregator. It wasn't strictly by the RFCs or anything, but it did give me information about people that were reading this site.

But just sticking your reader's homepage url in there... well, it's only slightly more interesting to me than the person that spams my logs with a referer to

Posted by jjwiseman at 12:02 AM | Comments (1)

September 02, 2002


It turns out indirection can even help solve the problem of me barbecuing instead of writing interesting things. Who would have guessed?

danb outlines some advantages and disadvantages of lisp pathnames and logical pathnames.

Christophe's syllables are significant ("cmucl / compiles beauty to fast code / life springs eternal").

Pinku comments on comments on the future of lisp.

Posted by jjwiseman at 12:06 AM | Comments (0)

September 01, 2002


The 2002 ICFP programming contest is underway.

At least one team, the Otaniemi Lisp User Team (OLUT means beer in Finnish, I'm told) is hard at work on an entry using cmucl.

The OLUT ICFP team
L to R: Lasse Rasinen, Sampo Smolander

Obviously they're a pair of fuddy-duddy lisp dinosaurs. They'll be lucky if they don't break a hip or something.

Godspeed, gentlemen, Godspeed.

Posted by jjwiseman at 04:35 PM | Comments (0)


Rainer Joswig sent a screenshot of scigraph (158 KB tarball) , a Common Lisp scientific graphing package.

scigraph screenshot

Scigraph is CLIM-based, and supports histograms, line plots, scatter plots, spin plots, and more; it's also designed to be extensible.

(Also see this previous entry on charting and plotting packages.)

Posted by jjwiseman at 02:10 PM | Comments (0)