July 31, 2002

Unicode and WeirdIRC

The #lisp nets have brought in a full haul already today.

Brian Spilsbury's unicode support for cmucl plus dialect dependant symbol translation:

dialect dependent symbol translation

WeirdIRC as a testbed for new McCLIM functionality (text fields in this case):


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

Loop is not Pretty

KMP on loop:

The paradox of LOOP is that if you confine yourself only to the loops that look stylistically clean and simple (which are the ones that Smalltalk probably does well), you get a subset that would never have caused LOOP to come into existence in the first place. Like it or not, LOOP was invented to allow you to write the complex stuff that is hard to express in terms of simple functional iterators because the control structure is a tangle.

KMP gets philosophical:

The world is not always pretty. When it is, one must not blame the lack of prettiness on the language that tries to emulate it. Sometimes tangled webs of reality lead to tangled webs in programs.

That may be one of those initially-depressing, eventually-uplifting sorts of realizations. I still don't use loop (but at least now I'm better prepared to justify it to myself if I do).

Posted by jjwiseman at 09:06 AM | Comments (4)

July 30, 2002

Langband and More Closure

Trolling #lisp for pretty pictures...

Stig E Sandø's langband, an angband-alike in lisp:

langband screenshot

Guess what browser this is:

closure reading Yahoo news

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

July 29, 2002


The only autonomous robot in this year's AAAI mobile robot competition, GRACE, is running lisp. [via robots.net]

Looking at the members of the GRACE team, it's not surprising that they're entering the most ambitious robot in the contest:

I'm not sure what parts of GRACE may be written in Lisp. There are lisp bindings for IPC, which GRACE uses, so... nope, I still have no idea.

I'm interested in the development process used by that geographically distributed team, actually.

Posted by jjwiseman at 10:30 AM | Comments (2)


Jochen Schmidt's WeirdIRC client runs on a wide spectrum of hardware. Chronologically wide, that is.

WeirdIRC on a lisp machine (Symbolics Genera, courtesy Rainer Joswig):

WeirdIRC on Genera

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

July 28, 2002

Nokia Goo

This isn't Common Lisp, but hey, it's Sunday: Chris Double almost has goo running on a nokia 9210 cell phone

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

July 27, 2002


I don't know much about RSS, but from the little I played with RSS readers they seemed pretty inflexible. I thought it might be worthwhile to offer a couple RSS options for lemonodor (approx. 10% of the raw hits to lemonodor are from RSS aggregators).

RSS 0.91rss091-full.xml rss091-brief.xml
RSS 1.0rss10-full.xml rss10-brief.xml

RSS 0.91 is too simple. RSS 1.0 is too complicated. Brief feeds just have automatically generated excerpts of posts, and are not HTML. Full feeds are entire posts, in full HTML. Try them out, see what works best for you.

If you have suggestions for modifications, or run into any problems using these feeds, please let me know.

Check it out: a bonus, and it's coming your way! Here are one sentence reviews of the readers I've tried.

Amphetadesk seemed cluttered, but serious.
Pineapple needs a lot of interface work.
NetNewsWire was most promising.
Straw is a work in progress.

None was compelling. I'll stick with a browser.

Posted by jjwiseman at 12:25 AM | Comments (7)

clisp 2.29

clisp 2.29 has been released. It is a bug-fix/portability release.

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

July 26, 2002

Why the Fork

If you ever wondered what SBCL was, what its relationship to CMUCL is, and why you should care, then you should take a look at Christophe Rhodes' nice slides from the Libre Software Meeting.

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

July 25, 2002

You. What are you doing there?

Richard Hamming's 1986 talk at Bell Labs, "You and your Research" asks "Why do so few scientists make significant contributions and so many are forgotten in the long run?" [Via Krzysztof Kowalczyk]

I have to get you to drop modesty and say to yourself, "Yes, I would like to do first-class work." Our society frowns on people who set out to do really good work. You're not supposed to; luck is supposed to descend on you and you do great things by chance. Well, that's a kind of dumb thing to say. I say, why shouldn't you set out to do something significant. You don't have to tell other people, but shouldn't you say to yourself, "Yes, I would like to do something significant."

Hi. My name is John, and I would like to do something significant.

Seriously, reading this has caused me to think about my priorities. What code do I want to write, what systems do I want to create? What code do I not want to spend my time on? It has been good for me. Maybe it will be good for you, too.

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

July 24, 2002

OpenMCL Cocoa IDE

Gary Byers has been making rapid progress since the initial Cocoa experiments in OpenMCL:

version 0.1 of an OpenMCL Cocoa IDE
Posted by jjwiseman at 12:51 AM | Comments (1)

July 23, 2002

SBCL 0.7.6 Released

Version 0.7.6 of the SBCL lisp environment has been released.

The release notes mention a lot of bug fixes, Solaris 9 support, and FFI documentation.

I haven't tried SBCL, but it gets serious respect from me for being a native code compiler written in ANSI Lisp, one that can be built in lisps which are not itself.

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

July 22, 2002


Here's more code from the generous i/net vaults. It lets you write AIM chatbots in lisp, and is made available under the MIT license.

Tarball: claim-1.0.tar.gz
Source code (if you just want to browse): claim-1.0.lisp, gossip-bot-1.0.lisp

lately I've been thinking it could be fun to add this as a backend for one of the CLIM IRC clients that people are working on these days.

Here's the documentation.


CLAIM is an implementation of AOL's semi-open Instant Messaging protocol, TOC (see PROTOCOL.txt). It allows one to build chatbots and other AIM clients.


Load this code, then load the examples/gossip-bot.lisp file. At the listener, run the start-gossip-bot function:

? (gossip-bot:start-gossip-bot "myusername" "mypassword")

gossip bot in action

You must use the username and password of an existing AIM account (see <http://aim.aol.com/> on how to create a free AIM account).

Anyone can now send messages to and interact with the gossip bot.

Requirements & Dependencies

CLAIM requires a lisp that supports the ACL socket API (see <http://www.franz.com/support/documentation/6.1/doc/socket.htm>, and <http://ww.telent.net/cliki/ACL-COMPAT>). Actually, all you need is a function socket:make-socket for connecting to a remote host (in text mode).

For example, in OpenMCL the following is sufficient:

(defpackage :socket
  (:use :common-lisp)
  (:shadowing-import-from :ccl #:make-socket)
  (:export #:make-socket))

Implementation Notes

The TOC protcol is slightly binary, mostly text. Accordingly, I open socket streams in text mode and fake the binary parts. It won't work unless your Lisp's code-char and char-code functions use ASCII.

I've written the code without assuming multiprocessing, but in a way that will work with most multiprocessing implementations. Let me know if it doesn't work out that way.

I checked all the other AIM libraries I could find, and nobody even tries to deal with the "server speed limit", which was a constant problem for me. See the comments at the end of this file for one attempt to solve this problem.

The following implementations of TOC were helpful when writing this one:

This code has been tested in ACL/Linux, OpenMCL/OS X and MCL. At one point it was known to run on ACL/Windows and CMUCL/Linux as well.


There should be much more documentation. I've tried to structure the code so that it is easy to extend and use for chat clients, but documenting what I did would help a lot too. Sorry.

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

July 20, 2002

CLX patched

I sent in the little patch to get CLX working in OpenMCL.

I tried to get it working in regular MCL too, but ran into a few little problems that I could not figure out. Oh well.

Posted by jjwiseman at 07:32 PM | Comments (0)

July 19, 2002


McClim summation demo

It took some fiddling and patching, but I finally got some McClim to run in OpenMCL.

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

July 18, 2002

Charting and Plotting

Roman Belavkin has a plotting library for garnet:

example plot

Nigel Gilbert developed a charting package for MCL back in the mists of time. In case you're interested but don't deal well with Mac archives, I put the manual online.

3D plot example

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

July 17, 2002

One Chromosome Too Many

Technicolor Embryo
© Biological Imaging Center of the Beckman Institute at Caltech

I just really like this image, which shows gene expression during development of a human embryo.

OK, it's really a mouse embryo. But could you tell the difference?

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

July 16, 2002


Once I got CLX running under openMCL, i was all excited to get McCLIM working too. But my will to code has been significantly depleted by trying to work around the fact that MCL does not support the MOP described in AMOP. McCLIM doesn't use much of it, but MCL implements even less.

I found an old bit of contributed code from James Anderson that was able to add some MOP support. Unfortunately it is not compatible with the AMOP MOP.

Posted by jjwiseman at 01:45 PM | Comments (2)

Misled by the GoF

M. J. Dominus says "'Design Patterns' Aren't", which is a little different from Norvig's "design patterns are mostly irrelevant in dynamic languages" [seen at Patrick Logan's weblog].

This goat loves the C++ macro system

I think it might be a mistake to judge design patterns based on the GoF book, where they are described in a way that seems to tie them to pretty specific language features (or the lack thereof). M. J. Dominus seems to be agreeing with Richard Gabriel, who is a smart guy and thinks there's much more to patterns than the GoF book (which he has called "damaging"). I guess a good patterns book is still waiting to be written.

Posted by jjwiseman at 08:47 AM | Comments (8)

July 14, 2002

Amanset live

Saturday night was the second time I've seen American Analog Set. They disappointed.

First the Knitting factory's sound completely sucked. Something was resonating badly with the bass, and there was quite a bit of feedback. Then amanset chose to play eight boring songs in a row. I like the band a lot, but that's based on my obsession with one or two songs per album, and meager tolerance of the rest.

Also, I didn't know it, but they seemed to be 16 years old. Like the rest of the audience.

Here are two previous entries with songs they didn't play: one, two.

Posted by jjwiseman at 08:05 PM | Comments (0)

July 11, 2002


This New York Times article describes the Multimedia Intelligent Network of Unattended Mobile Agents, or Minuteman, project, which is figuring out how the military can achieve its dream of a battlefield filled with swarms of autonomous vehicles in the air and on the ground.

This is a Global Hawk, which can fly more 60,000 feet over the battlefield for over 40 hours (it was first deployed in Afghanistan, and was the first UAV to fly non-stop over the pacific), and may be used to provide a communications umbrella over fleets of smaller vehicles:

Global Hawk UAV

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

July 10, 2002


Here's a screenshot Christophe Rhodes took of Closure, Gilbert Baumann's lisp web browser, running under McClim on cmucl.

closure screenshot

It really looks nice.

Closure, along with some other lisp projects, was shown off today at the Libre Software Meeting in Bordeaux, France.

Posted by jjwiseman at 10:31 AM | Comments (1)

CLX in OpenMCL

clx hello steve

That's an X window opened by OpenMCL using my hack-and-slash port of CLX (running XDarwin and the OroborOSX window manager on my PowerBook).

It's kind of funny. There's no reason that CLX couldn't have been ported to work with MCL on a Mac at any point in the last 10 years, really, though not too many people were running an X server on a Mac, and the number of people running lisp applications on a Mac but wanting to put the display on a remote X machine was probably pretty low. Now, of course, you've got OpenMCL, which has no real GUI support yet, and XDarwin, and suddenly CLX starts to look useful.

I chose the CLOCC version of CLX (it's kind of unfortunate that there are so many versions) because it claimed to be moving the code toward ANSI, even though I dislike the CLOCC PORT package that it uses for sockets and multiprocessing support.

It will take a bit more work before this is ready for real use, but not too much.

Posted by jjwiseman at 02:05 AM | Comments (4)

July 09, 2002

ITTA Survey

This is old news, but I recently saw a reference on usenet to a 2001 lisp survey from International Technology & Trade Associates, Inc. : LISP Power And Functionality Still A Well-Kept Secret.

I don't know who ITTA is or what agenda they may have, but they did gather some slightly interesting data.

For example, the breakdown of the lisp market by "vendor" was


The Franz number may be slightly inflated relative to the others, as Franz encouraged some of their customers to fill out the survey.

Most of the survey results really just report on the opinions of the lisp community, of which the most important one is that lisp is a superior programming language.

Well, duh.

I'm not sure how useful it is to know that lispers like lisp. But then ITTA goes on to say

The pressure is on Lisp users and vendors to increase their level of interaction and consider ways to grow and revitalize the Lisp community. One option is to develop a supported Lisp open-source development environment. However, no one within the community seems willing to take the lead in such a development (such as Linus Torvald did with Linux) -- or seems willing to even supply code. (This may be partially due to the proprietary nature of many of the successful Lisp projects in industry).

I don't think that focusing all development effort on a single open-source lisp is desirable, or realistic, but there are in fact several lisps giving away code, and ITTA was already aware of cmucl at the least. So the conclusion seems completely silly to me.

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

July 08, 2002

Sad A.L.I.C.E.

The New York Times has an interesting article on Richard Wallace and his alicebot automated chat software.

Richard Wallace sounds like a smart guy, but sadly suffers from depression and manic depression, as well as some drama associated with that (e.g. a restraining order barring him from the campus of UC-Berkeley). Possibly most unfortunate, however, is that he's spent so much time on Alice, which is based on ideas that Marvin Minsky describes as "basically wrong". I'm with Minksy--Alice looks like a fancy eliza.

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

Exploring CMUCL With ilisp

Thomas Burdick reveals how to make ilisp and cmucl to get along so that you can M-. (edit-definitions-lisp) your way to the source of built-in cmucl functions:

  ILISP has a command edit-definitions-lisp, bound by default to "M-.".

  CMUCL keeps track of which source file a function comes from, so ILISP

  can bring you to a function or variable or macro definition.  In the

  case of CMUCL's own source, the remembered location looks like:


  for example, the source file that the GETHASH definition comes from.

  This uses CMUCL's search-list extension, so you need to set the

  "target:" search-list, unless you happen to have the source in the

  same place as the person who built your CMUCL:

    * (search-list "target:")



    * (setf (search-list "target:")

            (list #p"/opt/local/packages/cmucl-18d/src/"))


  Now you can type "(gethash", then M-. and get brought to the

  definition for GETHASH.  Very cool.

It's really handy sometimes to see how your lisp implements something. Handy, and often educational--not so much so that you can take advantage of implementation quirks or learn implementation limits, but as a way to become familiar with good lisp practices (we will assume that the people that write your lisp environment wrote mostly good code).

(It does seem like cmucl should be using a logical pathname host instead of a "search list" (which is not standard) for this. That's what MCL does. MCL comes with source for everything but the compiler itself, and M-. there taught me a lot when I was first starting out in lisp).

Posted by jjwiseman at 01:14 AM | Comments (1)

July 07, 2002


gmane is a general bidirectional mailing list/news gateway--with no article expiration. Which means they're archiving the almost 40 lisp mailing lists they're subscribed to.

It also means that they're googleable.

To start reading these mailing lists as news, point your favorite newsreader at news.gmane.org.

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

July 06, 2002

Corman Takes the Plunge

Roger Corman has quit his day job to work on Corman Lisp full-time. Everything I've heard about Corman Lisp has been good, and the upcoming 2.0 release will add the ability to create DLLs , as well as "marking the beginning of a new expanded commitment to the Lisp market" for Corman's company.

At this point it can only be good to have another industrial strength Lisp vendor.

Posted by jjwiseman at 11:23 AM | Comments (0)

July 03, 2002

Positive Contact

Sci-fi hip-hop. It sounds dorky, but it's not. Well, maybe it is, frankly I don't trust myself 100% to be able to tell whether it is nerdy or not, but I do know that it's good: Deltron 3030 is part of the Dr. Octagon / Handsome Boy Modeling School / Gorillaz series of high-concept albums by Dan the Automator (and Del Tha Funkee Homosapien).

Deltron 3030 album cover

It's about some kind of mech warrior in the year 3030 A.D. who becomes disillusioned and turns into a rebellious MC, burning The Man's systems with high powered viruses and empowering the downtrodden with rhyme. Anyway, it's good, and this song in particular I find catchy in an interesting way: positive contact.

My sister and her husband saw Gorillaz a couple months ago, and she said she was able to peek around a curtain and see Dan the Automator just kind of hanging around. "I was disappointed, he just looked a normal, boring Asian guy."

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

July 02, 2002


From Steven Woodcock's 2002 Game Developer's conference report (warning, it's a Word document), in a section discussing languages used for writing game scripting systems:

Virtually everybody uses C and C++; those are the tools we have at the moment and it's the reality of the business. A few games use Visual Basic. LISP is more a favorite of academics and rarely used by game developers, though the AI in Halo makes heavy use of LISP scripts.

It makes sense; the founders of Bungie learned Lisp at the University of Chicago, (like me!) back when it had an AI lab.

Posted by jjwiseman at 01:25 AM | Comments (3)

July 01, 2002

But It Worked Five Minutes Ago

I just had an annoying problem on my linux PC: After moving the machine to a new desk, the mouse no longer worked. Linux saw the mouse, but /dev/mouse was broken, gpm died, and X couldn't start.

I of course searched for other people with this problem, but found none. Since I was able to resolve it, I will post this in the hope that in the future someone will find it useful.

The log messages you are searching for:

modprobe: modprobe: Can't locate module char-major-13
gpm[950]: oops() invoked from gpm.c(186)
gpm[950]: /dev/mouse: No such device

modprobe: modprobe: Can't locate module char-major-13
gpm[936]: oops() invoked from gpm.c(978)
gpm[936]: /dev/mouse: No such device

Other keywords: X won't boot, PS2.

How I fixed it: I unplugged the mouse, booted, told kudzu or whatever to remove the mouse config, then rebooted with the mouse plugged in and told kudzu to add the mouse. All fixed.

Posted by jjwiseman at 03:43 PM | Comments (4)

OpenMCL 0.12.1

I somehow missed two new OpenMCL releases (apparently they weren't announced on the openmcl-devel mailing list...).

OpenMCL 0.12.1 has lots of bug fixes, some pretty important, and some new features. I'm most happy about active socket connections working, but there's also a more extensive Cocoa demo I want to take a look at.

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