January 31, 2006

Now for wiki.alu.org: sane-cliki.user.js

Goon #1: Lori
Goon #1: Lori

I updated my Firefox Grease Monkey script, sane-cliki.user.js, so that it works around the HTML entity bug in the ALU wiki as well as in CLiki. If you want to use “<” or “>” in a Cliki/Kiwi page, this will help.

The script disables the Preview button on the ALU wiki because it was too hard to preserve HTML entities correctly in a preview context.

Posted by jjwiseman at 12:50 PM | Comments (0) | TrackBack

January 27, 2006

Fu Bared

i still can't resist urinal shots
At the Drawing Room.

Asbjxrn Bjxrnstad's weblog has some simple lisp programs for beginners, including a Sudoku solver (which can do 200 puzzles/second) and a blog framework (using Edi Weitz's Hunchentoot web server).

Posted by jjwiseman at 02:25 PM | Comments (1) | TrackBack

January 26, 2006

Autonomous Light-Air Vehicles

ALAV!

I love the whale-like calls these Autonomous Light-Air Vehicles (blimps) make.

Notable parts used to build ALAVs include cell phone vibrators, laser-cut balsa wood and Sun SPOT wireless transducers.

Posted by jjwiseman at 07:10 PM | Comments (2) | TrackBack

Powerbookdefect.info

the far east cafe, photo by lori
The Far East Cafe, photo by Lori

My old Powerbook was a relatively rugged dream machine. The new one, sadly, has not lived up to its predecessor and has been a big pain in the ass. It often crashes when I connect or disconnect the external monitor, and audio fuckups force me to reboot at least once a day.

The weird audio looping/stuttering is particularly annoying, and I'm not the only one experiencing it. My hope that the 10.4.4 update would fix the problem was destroyed about 48 hours after I installed it. The Apple Discussions website is filled with posts about the problem (1, 2, 3), Gizmodo's posted about it, Macintouch has a special section about it—My God, even Adam Curry's podcasting is being affected. When will the madness end!?

I think Apple's only response so far has been to say “To avoid this, run only one audio application at a time.” Har har.

Powerbook Defect Info is one of those grass roots consumer activism sites where they collect a long list of names of people wronged by a big company, people who want some remedy, damn it, and don't want it to be a nail-biting experience every time their IM client chimes with an incoming message (chime-chi-chi-chi-chi-ARGH, REBOOT). So I signed up. And I dugg it.

Posted by jjwiseman at 12:28 PM | Comments (4) | TrackBack

January 25, 2006

Robot Gas Panic

cough cough cough cough cough cough

Tmsuk is proud enough of their Altemis robot's gassing of the Japanese Prime Minister that they posted the video [via we make money not art].

Maybe Altemis is related to NEDO bot.

Posted by jjwiseman at 11:20 AM | Comments (4) | TrackBack

January 24, 2006

SBCL Crashes Constantly (Not Really)

the application sbcl quit unexpectedly

Every time I start SBCL in OS X, I get the dialog above.

This really confused me for a long time. It didn't help that the message says that SBCL “quit unexpectedly”, but I am always left with what seemed like a perfectly functioning SBCL prompt.

Poking around line 345 of runtime.c, as implicated in the backtrace, didn't help much:

Lineruntime.c
344    create_initial_thread(initial_function);
345    lose("CATS. CATS ARE NICE.");
346    return 0;

Great.

Nobody on #lisp seemed to be having this problem (they probably were, but they just didn't know it, as we'll see below), and since everything seemed to work I tried to forget about the mystery and not get annoyed by all the spam filling my CrashReporter logs from SBCL-based cron jobs. Building SBCL from source was quite a chore, though, as there would typically be three or four dozen crash dialogs I'd have to click through.

Jan 21 13:35:57 Johns-Powerbook crashdump[16974]: sbcl crashed
Jan 21 13:35:57 Johns-Powerbook crashdump[16974]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:35:59 Johns-Powerbook crashdump[16975]: sbcl crashed
Jan 21 13:35:59 Johns-Powerbook crashdump[16975]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:36:04 Johns-Powerbook crashdump[16986]: sbcl crashed
Jan 21 13:36:04 Johns-Powerbook crashdump[16986]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:36:08 Johns-Powerbook crashdump[16987]: sbcl crashed
Jan 21 13:36:08 Johns-Powerbook crashdump[16987]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:36:16 Johns-Powerbook crashdump[16993]: sbcl crashed
Jan 21 13:36:17 Johns-Powerbook crashdump[16993]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:36:23 Johns-Powerbook crashdump[16999]: sbcl crashed
Jan 21 13:36:23 Johns-Powerbook crashdump[16999]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
Jan 21 13:36:24 Johns-Powerbook crashdump[17000]: sbcl crashed
Jan 21 13:36:24 Johns-Powerbook crashdump[17000]: crash report written to: /Users/wiseman/Library/Logs/CrashReporter/sbcl.crash.log
# etc.

Finally, months later, I found some mail on the sbcl-devel mailing list in which Bruno Haible said he saw the same behavior, and Pascal Costanza explained what was happening.

It turns out that there's a bug in Apple's Crash Reporter whereby programs that generate Mach exceptions that are subsequently handled by a signal handler will cause CrashReporter to “erroneously generate a crash log for your program.” Fortunately for Apple, most programs don't expect to generate SIGSEGV signals and live; Unfortunately for Lispers, catching segfaults is part of a relatively common way of doing Lisp-style memory management (this is the same thing that prevents OpenMCL from running under Apple's Rosetta emulator)

There are two workarounds. One is to turn off Crash Reporter dialogs or logs (I'm guessing people on #lisp didn't know what I was talking about because they had CrashReporter configured to log crashes but not pop up the sort of dialogs I was seeing). This solution is not my favorite—You can't change the behavior only for SBCL; It involves changes to system-wide settings. And I like seeing the extra information when an app really does crash.

The other workaround is to implement Mach-level exception handlers as opposed to regular Unix signal handlers. This is the approach that OpenMCL and clisp take (and presumably ACL and LispWorks since I've never seen a crash dialog when using them).

One could take the position that this is a bug (documented, even) in Apple's software and SBCL shouldn't have to change anything, and people can just stop logging crashes. This, I think, would be a mistake. Do not spite your users to make a point, even if you're in the right.

The main point of this post is to document this issue so that those who come after me are less likely to think they're insane. A secondary motivation is to spur SBCL developers into adding Mach exception handlers.

I looked at trying to fix it myself, but as a first SBCL hacking project it was a little beyond me. But given what looks like a fundamental assumption in SBCL that signals are used for memory management (I wonder what the recent Windows port has to say about that assumption), it might be best to try the same strategy that OpenMCL uses (which is lucidly explained by Gary Byers in the code; search for “Mach's exception mechanism”): Install a Mach exception handler that catches exceptions, creates fake sigcontexts, and passes them to existing signal handling code. Sounds so simple! Code it up, mang!

Actually returning from the signal handler is another issue.

Posted by jjwiseman at 04:47 PM | Comments (14) | TrackBack

January 21, 2006

Lisp on the New Macs

Bill Bradford discovers that on the new Intel-based iMac, clisp (maybe) and ABCL may be the only Lisp options. I don't think anyone has tried either ACL or MCL yet, but the odds of either working seem slim.

Gary Byers explains why OpenMCL won't run under the Rosetta emulator (with more details in this message), but says that Clozure has a contract to port OpenMCL to x86-64 Linux, which would get some of the way toward an OS X-on-Intel port.

SBCL doesn't seem to have anyone working on a port yet. I don't think either Franz or LispWorks has said anything publically about a potential port. And Digitool's situation may be somewhat dire—is their best bet (only bet?) to backport future OpenMCL work?

Posted by jjwiseman at 02:30 PM | Comments (5) | TrackBack

SRL Reception Tonight

The Fringe Exhibitions gallery is having an opening reception tonight for some kind of SRL exhibit. Pros: It's SRL. Cons: It'll be really crowded and it's not going to be a real SRL show. Maybe I'll just go see the exhibit next week.

Posted by jjwiseman at 01:53 PM | Comments (1) | TrackBack

January 19, 2006

Historic UAV Landing

RQ-8A Fire Scout UAV lands on a ship

An RQ-8A Fire Scout rotor UAV landed on a moving Navy ship in what was apparently the first autonomous landing (as opposed to a net capture) of an unmanned aircraft on a ship.

On day one of the testing at 11:51 a.m., the green light was established as all systems were "go" on land and on sea. Under the command of the shore-based ground control station (GCS), the RQ-8A Fire Scout lifted off from the shore, and began its autonomous route to the ship. The shore-based GCS handed off control to the shipboard GCS, and after establishing telemetry data, a series of ever-closer approaches to the ship were conducted. In accordance with the test plan script, the RQ-8A Fire Scout came aboard the USS Nashville for the first autonomous landing at 2:42 p.m.

Posted by jjwiseman at 01:52 PM | Comments (1) | TrackBack

Guide to Lisp Testing Frameworks

JoAnne, Neck and me at Musso and Frank
Another night at Musso and Frank, photo by Lori.

The CL Gardeners are working on “A high-level guide to the world of Common Lisp testing frameworks and tools.”

I use my own, of course, because it was easier at the time than trying to figure out which of the dozen or so available frameworks I should use.

Posted by jjwiseman at 12:37 PM | Comments (0) | TrackBack

January 17, 2006

Job Trends For 2005

programming language jobs graph for 2005

Indeed's graph of the past year's job listings mentioning Lisp, Smalltalk, Ruby, Haskell, Python and Scheme [via Srinivasan R]. I don't think any of the Scheme listings are for the programming language.

If you throw Perl on the graph, it's about 8 times as common as Python.

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

Lisp Is Sin

Sriram Krishnan: “Lisp is Sin

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

January 11, 2006

Thanks, 2005

thanks, 2005.

I cleaned out the 2005 folder of camera phone pictures and posted a few to Flickr.

I pretty much only take pictures with my phone these days.

Posted by jjwiseman at 12:27 PM | Comments (1) | TrackBack

January 10, 2006

Draw-Something

draw-something

Rob Myers is doing some Harold Cohen-like experimentation with OpenMCL.

Also note that you can see the code in action in Flash form and download the source from the project page.

Posted by jjwiseman at 09:00 PM | Comments (1) | TrackBack

January 09, 2006

Mini-LTK Intro from Roach

me and neck at Gloria's El Salvadoran Cafe
Me and Neck at Gloria's El Salvadoran Cafe, photo by Lori

Christopher Roach, O'Reilly's de facto Lisp blogger, has a micro introduction to using the LTK GUI library from Lisp.

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

January 06, 2006

CLAIM 1.2

Bill Clementson passed word from someone trying to use my CLAIM library for creating AIM clients in Lisp that it seemed to be broken. I don't use that code anymore, but a little digging seemed to indicate that AOL had changed the TOC protocol that some third party clients, including CLAIM, use to connect to their network. The new protocol, TOC2 has some improvements, though it's also completely undocumented and hasn't yet been entirely figured out by the reverse engineers.

Still, I found enough information on the protocol to update CLAIM. Even though I think Jabber via Google Talk is destined to win the IM wars, and hence cl-xmlpp is the future, AIM bots can still be useful (and look at all the attention the MAKEBot has gotten recently).

You can download CLAIM 1.2 from its little project page, or you can ASDF-INSTALL it.

I've tested CLAIM 1.2 with OpenMCL, SBCL, ACL and LispWorks. The tests have not been exhaustive—the code loads, and the gossip bot example runs.

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

claim gossip bot

Testing with SBCL forced me to confront the fact that monovalent streams and code-char and char-code just weren't going to cut it with a mixed binary/text protocol, so version 1.2 of CLAIM requires Edi Weitz' FLEXI-STREAMS library. Sigh.

Posted by jjwiseman at 03:50 PM | Comments (2) | TrackBack

January 05, 2006

NXTBOT

lego mindstorms nxt

nxtbot.com is a Lego-sponsored blog “dedicated to providing news, interviews, features and commentary on the fast-changing world of consumer robotics.”

Lego's interest in consumer robotics has been reestablished with the release of the Mindstorms NXT at CES. The NXT has USB and Bluetooth, servo motors and sonar, which make it look like an evolutionary but significant upgrade from the Mindstorms RCX, which debuted in 1998.

Read about the NXT on Slashdot.

Posted by jjwiseman at 09:34 PM | Comments (4) | TrackBack

January 04, 2006

Army to Fund Robotics Toolkit Development

From the EE Times:

The proliferation of unmanned vehicle technologies used by the U.S. military has prompted an Army command to fund development of a toolkit that could be used for its entire fleet of unmanned ground vehicles.

The U.S. Army's Transportation Command (Warren, Mich.) will fund a six-month research project to develop a low-cost "robot infrastructure toolkit" that can be used for a wide range of unmanned ground vehicles (UGVs).

RE2 Inc., a Carnegie Mellon University spin-off (Pittsburgh), said Tuesday (Jan. 3) it will develop a toolkit focusing on specialized communication components and robotic manipulators with a common control interface

For a while Evo was looking at getting the ERSP selected as a standard robotics toolkit—by someone other than the U.S. Army.

Posted by jjwiseman at 05:24 PM | Comments (4) | TrackBack

Lisp, the New Ruby

pfig: “Lisp will be in 2006 what ruby was in 2005.”

I really don't think so.

Posted by jjwiseman at 05:17 PM | Comments (2) | TrackBack

January 03, 2006

Lispniks Mailing Lists

Peter Seibel is offering <geographic-region>-lispniks@lispniks.com email addresses and mailing lists for any lisp user groups/drinking clubs that want them.

Posted by jjwiseman at 04:21 PM | Comments (1) | TrackBack

lispmachine.net

Harry Callahan, Untitled #15

Bill Bradford has moved an expanded version of his page of Lisp books and resources to http://www.lispmachine.net/.

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

January 02, 2006

Wingo SLIME Review

a foreign ship

Andy Wingo's nice review of SLIME taught me some things.

The inspector keeps a stack of objects so you can dig down and come back up to where you were. I would kill to have this in Python

Which reminds me that as much as I miss MCL's IDE, it could be worse.

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