David Johnson-Davies emailed me about a couple sites he has developed using MCL and CL-HTTP:
Among many other things, Identifont uses an expert system to help you identify fonts by asking you a series of questions. For example, “Does the 'Q' tail cross the circle?”, “Does the upper-case 'J' extend below the baseline”, etc.
Fontscape is a helpfully categorized directory of fonts.
Version 0.5 of Alpaca, Mikel Evins' text editor for authors, has been released. It now runs under OS X 10.3 (Panther), accepts socket listener connections, and has a programmer's API. (See this earlier post for screenshots.)
cl-syslog is Erik Enge's enhanced and more portable version of OnShore's ODCL syslog interface.
* (syslog:log "myprog" :local7 :info "this is the message" (+ syslog:+log-pid+ syslog:+log-cons+)) "this is the message"
Dan Barlow announced Araneida 0.81, a bug-fix release of his web server for CMUCL/SBCL.
McCLIM 0.9 has been released. Rainer has a screenshot. (Can I shame whoever's responsible for this McCLIM project page to post some news that's more recent than October 2002?)
The new version of CL-HTTP is being used by the Howard Dean campaign. Recall that under Bill Clinton much of the pub.whitehouse.gov site was served by a lisp machine running CL-HTTP. [via Rainer].
Three things that annoyed me before 10 am:
Each of these things seems to represent a half-hearted effort toward something that a person does obviously care about, is simple to fix, and has a pretty big payoff.
I went to a record release party last night. Friends rocked, and then I bought a car while drunk.
Brian Mastenbrook sent a new screenshot of SLIME, and a description of some of its new features.
This is a multi-split Emacs window containing a lisp source file along with a number of other windows showing off some of SLIME's nice features. SLIME has integrated hyperspec lookup using Erik Naggum's code - C-c h on a symbol will bring up the hyperspec entry for that symbol in your choice of browser (here emacs-w3m). The bottom right corner shows off the SLIME Apropos: C-c a allows you to do an apropos and get the results in a nicely-formatted list with documentation. The top corner shows the SLIME REPL, which is a very unique feature. This REPL is actually connected to the lisp process over TCP - in fact, SBCL is not running as an inferior lisp to Emacs. It captures any terminal I/O and allows for interaction with a lisp function without losing the state of the communication, unlike an inferior-lisp process ala ilisp. Should the debugger be invoked from a SLIME process, it will provide restarts and a backtrace in a clickable list.
Other features not shown include highlighted compiler notes in the source window, lisp symbol completion ala ilisp, integrated DESCRIBE and DISASSEMBLE, and cross-referencing support on CMU Common Lisp.
Because some people on IRC were interested: the font in that screenshot is Bitstream Vera Sans Mono. See Brian's .emacs for color info.
Marco Baringer is working on a continuation-based web application framework, Uncommon Web.
This is an alpha release, the “core” is functional but it is missing various major features (cookie and form handling come to mind) plus all the conviences (like documentation) required for a real-world web framework.
It has mod_lisp and portable aserve backends, and currently runs in cmucl and OpenMCL.
“The Analysis of a Friendly Fire Accident using a Systems Model of Accidents” (pdf)
I thought this analysis of the shootdown of two U.S. Army helicopters by two U.S. Air Force F-15 fighters in 1994 was pretty interesting. Lots of people were somewhat negligent, and even in the face of a lot of safety procedures this was enough to cause a really bad accident on a particularly unlucky day.
According to an Air Combat Command official who was familiar with the official investigations, over 130 different mistakes were identified as being involved in the shootdown.
Some of the important factors were
Nothing that would be unfamiliar to anyone working in a company with more than 10 people, probably.
The Center for Land Use Interpretation in LA is exhibiting some video by Sam Easterson. I saw it a few days ago and loved it.
The videos are from cameras mounted on animals' heads, from the animal's point of view. It's a simple idea, but it's well done and is oddly fascinating. Baby chick, horse, goat, pig, sheep, whatever, I really felt like I was identifying with them. Rooting in the mud, running under cars, chewing grass.
One thing I found surprising, but really shouldn't be, is how the videos have definite subjects. The animals mostly aren't just looking in random directions; they look at the person walking by, the food they're eating, the animal's own shadow, the other animals standing next to them. And you can see the other animals looking back! It's really exactly like the CLUI site's description: The animals “guide us around their world; what they look at, what catches their attention, how they move through space, and how they relate to one another, on the farm.”
Easterson has been doing this for a while. Check out the tarantula video, or the alligator video, or the tumbleweed video. (All of these are very short samples, and in Quicktime format.)
net-nttin-irc by Erik Enge is an IRC client library.
The features listed are
Mikel Evins has released Bosco, his template for building Cocoa applications in OpenMCL (used in his game Hansa).
Gareth Branwyn's new book, Absolute Beginner's Guide to Building Robots, has some coverage of Evolution's ER1 and ER2 robots. It seems to be getting pretty good reviews.
One chapter is online.
I didn't go. I was too wiped out by day one, and my friend Mark's band was having their first gig in North Hollywood that night.
The Queen Mary was very cool. Sonic Youth put me to sleep in their usual, good way. Marc Brown, reliable recorder, has photos and stuff.
As far as the second day goes, it sounds like Iggy Pop was great, and I missed American Analog Set. But I just remember the time that I walked out of a lame bar in Hollywood and had nothing else to do, and I called up Mark. I was like, what's up, He was like “I'm at a party, I'm talking to [one of the top two hottest starlets on TV],” and I'm like eh, I'm not doing anything, I'll just see you--and he's “I already left, where are you? I'm on my way.” I mean, he ditched her to go meet me at the Dime. Gotta respect that.
Interview with Roberta Bayley.
Most of these bands, with some exceptions, don't like having their picture taken. It's boring to them and they're just happy to get it over with. If you can work quickly, that's the key to being popular.
[...]
There's still all these kids who are dressed like 1977 in the bondage pants, the mohawk, this and that. What we thought it would have given was the idea of originality and you can be any way you want, you can be different. The idea of punk that I liked was that you don't have to be an expert. An amateur is a good thing. An amateur is somebody who does something because they like doing it. You don't have to be an expert. You can try different things. You could try going on-stage before you were a virtuoso. You could pick up a camera if you hadn't gone to photography school. You can do these creative things.
Mikel Evins is rewriting his version of the strategy game Hansa in lisp [via Rainer Joswig]. “For the curious: the new version is written in Common Lisp and yes, it's much faster than the Java versions.”
It's scheme, not lisp, and it's XML. But still, here it is: Investigating SXML and SSAX: Manipulating XML in the Scheme programming language [via Gordon Weakliem].
Rainer Joswig posts about Naughty Dog's game Jak II. From the Jak II website:
Of the 1.2 million lines of code, roughly 900,000 lines are written in GOAL. GOAL is a programming language based on LISP or rather Scheme (which is a dialect of LISP). Very few studios in the video game industry will write their own compiler to produce a game, which is a feat in its own right. However, when we began developing for the Playstation 2, the choice was made to create new technology that would squeeze every ounce of performance out of the hardware. GOAL produces some of the most optimized code for the Playstation 2 platform to date.
This is not support for the hypothetical statement “people can write high performance games in lisp” (at least not for the most probable intended meaning of such a statement), but it may be evidence that if you need to create your own language, a lisp variant can be a good option.
Miles Egan has announced version 0.4 of Macho, his code for generating browsable mailing list archives.
Here's an example archive.
Daniel Barlow has released a new version of the Araneida web server, 0.80.
This weekend I'm going to All Tomorrow's Parties. I want to see Sonic Youth, Iggy and the Stooges, and American Analog Set, but I bet the rest will be good, too.
Pete Norvig found some old Dylan code for converting lisp to Dylan [via lambda the ultimate].
...here I produce Dylan code with nice indentation, to any specified column width, just by converting Lisp to a parse-tree syntax that is equivalent to Dylan, and then writing pretty-print directives for the parse-trees. All the rest is handled automatically.
As I told swm, haahr, and jrb, finding this old code made me feel like Dorothy waking up from her dream: “And you were in it, and you, and you. Some of it was beautiful, but most of it ...” well, most of it didn't turn out the way we hoped back in 1994-95.
The section on conversion pitfalls is interesting, even if it's just to put the code in a historical context (“we are waiting for the procedural macros to be defined”, the location of sin and cos wasn't yet specified).
Then, via dnm, is the news that Zeta-C, Scott Burson's C-to-Lisp translator/compiler for lisp machines, is now public domain.
Last night I was on the set of some live Playboy TV show. I hadn't seen it before (I only pay like $30/mo. for cable), and a coworker told me the hosts “might fondle each other a little,” which didn't prepare me for multiple groups of naked and half-naked girls totally having sex. Both pretty hot and pretty weird. Got kind of boring after 45 minutes or so, I can't believe they do that every night for two hours.
Of course the crew is all heads down writing on clipboards, and yawning. Kind of like my job, only we don't have craft services.
Sven Van Caekenberghe's colleague Nicky Peeters has written a paper on building web applications with lisp, “Using Common Lisp to Build Web Applications” [via unicast].
The paper covers the KPAX web application framework (mentioned in Sven's recent case study) and the Psilog weblog system.
TRS-80's new album keeps kicking my goddamn ass.
Listen to math basket, listen to and watch the video for nylon. Motoki kind of freaked Mark out when I played it one night. He came out of squishy's kitchen with a look on his face as though the world suddenly didn't make sense. “This riff sounds like... the Japanese hair metal band Loudness, only... backwards.”
A 4 pm costume anxiety-induced meltdown on Halloween left me saying things like “I'll just be secure in my costumelessness.” Luckily my friends aren't as well adjusted as I am. (Marc Brown has some photos.)
The next night, for Day of the Dead, we watched bad movies at the MJT. Which was creepier, Mark Hamill falling in love with a car, or wandering the dim, empty rooms of a museum dedicated to fringe obsessives? No contest.
Notes from the Metalevel: An Introduction to Computer Composition by Heinrich Taube uses Lisp and Common Music [via est].
Steve Jenson claims that Richard Fateman is the father of Le Tigre's Johanna Fateman (pictured on the right).
Sven Van Caekenberghe has written a case study of his experience developing a dynamic web site/application using unconventional technologies (including lisp), “Rebel With A Cause”.
The site is for the De Handelsbeurs concert hall in Belgium. It uses two Apple XServes running OS X, OpenMCL, and Portable AllegroServe. They also built a lisp implementation of Object Prevalence (in-memory DB, basically) and a web application framework called KPAX.
With a Lisp application server, the read-eval-print loop including all dynamic Lisp features remains available! This means that we can do the following: login to the server, connect to the read-eval-print loop and inspect all the internal datastructures of the server, while it is running. To update the server to a new version, we connect to the read-eval-print loop and invoke the build process and have it load and install the new code, without taking down the server process - active user sessions and other datastructures (like caches) remain in place and continue to work. Needless to say, this results in serious developer productivity gains and happy customers.
[...]
It is our opinion that object prevalence makes a lot of sense in a dynamic, interactive language like Common Lisp (much more sense than it does for Java). A Lisp read-eval-print loop together with Lisp's strong datastructures and manipulation functions makes for a much better alternative to SQL for querying and database maintenance. Without such a capability, using object prevalence will be a lot harder.
[...]
In the busiest day so far we got 20.000 hits (5700 hits an hour) and transferred 200 Mb of data. All this was accomplished with the standard allegroserve configuration of 5 worker threads.
It's good to see OpenMCL and Portable AllegroServe handling all that.
There's a relevant thread on the clump mailing list, too.