December 30, 2004

Ruby Clustering

I enjoyed this article on clustering with Ruby: ”Linux Clustering with Ruby Queue: Small Is Beautiful” [via LtU].

Yukihiro Matsumoto, aka Matz, has said that “The purpose of Ruby is to maximize programming pleasure”, and experience has taught me that enjoying the creative process leads to faster development and higher quality code. Ruby features powerful object-oriented abstraction techniques, extreme dynamism, ease of extensibility and an armada of useful libraries. It is a veritable Swiss Army machete, precisely the sort of tool one should bring into uncharted territory such as the NFS-mounted priority queue I was seeking to build.

The article also gives a little insight into what it takes to create those satellite views of night-time lights (142 terabytes of intermediate files, among other things).

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

December 29, 2004

The Threads of November I

I'm not sure yet whether it's a good idea, but I decided to catch up on comp.lang.lisp after months of being away.

List Comprehensions

Sven-Olof Nystrom implemented Python-style list comprehensions for Lisp:

For example, this list comprehension

(collect (list) ((* x x))
  (in (x) '(1 2 3 4 5 6 7 8)))

evaluates to

(1 4 9 16 25 36 49 64)

Perms builds a list of all permutations of a list.

(defun perms (l)
  (cond
   ((null l) (list nil))
   (t (collect list ((cons a b))
       (in a l)
       (in b (perms (remove a l)))))))

Sven-Olof's collect macro handles arbitrary sequences, hash tables and multidimensional arrays. He first released a version of this code back in August of last year.

MCL and Unix

Kenny Tilton, John Desoi, Ron Garret and Thomas Russ try to figure out how to get MCL to handle unix-style files that use lone linefeeds as end of line markers.

John Desoi:

#|
Note: Do not put any semicolon comments before this line.
The next forms define a semicolon reader for both #\linefeed
and #\return line endings so that OpenMCL can read MCL input
files (Mac line endings). Should also work with with MCL for unix files.
|#

(defun semicolon-reader (stream char)
   (declare (ignore char))
   (do ((c #\null)) ((or (char= c #\linefeed) (char= c #\return)))
     (setf c (read-char stream nil #\newline t)))
   (values))


(set-macro-character #\; #'semicolon-reader)

Ron Garret:

(setf CCL::*LINEFEED-EQUALS-NEWLINE* t)

Games

I could only bear to look at one or two messages in one of the “Lisp, C++ and Game Development” threads from mid-November, but G.A. quoted a Naughty Dog developer on their transition to C++:

After using a completely custom language for our last three PS2 projects, coming back to C++ has been a pretty rude awakening. We were hoping we could work around some of the deficiencies of C++ with a good preprocessor, ideally one that provided more than symple hygienic macro substitution...

(I tried to find the source of this quote, but I guess the mailing list mentioned isn't visible to google.)

Posted by jjwiseman at 11:44 PM | Comments (9) | TrackBack

Helen Greiner Talk At Accelerating Change

helen greiner, ceo of irobot

Helen Greiner, CEO of iRobot, gave a talk at Accelerating Change which is http://www.itconversations.com/shows/detail336.html [via Jim Thompson].

Ms Greiner's talk describes this new class of technology, how technology accelerations have affected our field, and how mobile robots will themselves catalyze accelerating change.

It's a pretty general talk, but she does get into a few details about how the packbot works, for example.

Also, it's nice to see a woman in a leadership role in the robotics industry.

Posted by jjwiseman at 03:33 PM | Comments (0) | TrackBack

December 28, 2004

Christmas, Lisp Work and SLIME

Lori and I spent Christmas weekend relaxing in Las Vegas and hanging out with family, and I got quite a bit of hacking done. LispWorks was used, and since I am now a SLIME-based lifeform, that meant trying Bill Clementson's and Kevin Birch's AppleScript-style SLIME enabler.

I had to modify the AppleScript as posted on Bill's weblog in three minor ways to get it to work reliably:

  1. The keystroke "(load "~/.slime.lisp")" line is missing backslashes to escape the double quotes, it should be keystroke "(load \"~/.slime.lisp\")".
  2. My .emacs contains (setq mac-command-key-is-meta nil) so I can use command-c/command-x/command-v in the only ways that my finger ganglia know how: as copy/cut/paste commands. This seemed to screw up the keystroke "x" using {command down} line, so instead I use key code 53 (which is equivalent to hitting the esc key) followed by keystroke "x".
  3. After starting LispWorks, I inserted a two second pause before telling emacs to connect via SLIME. I was getting intermittent connection refused errors that the short pause seemed to resolve.

The complete script: lw-start.applescript.

Posted by jjwiseman at 12:51 PM | Comments (2) | TrackBack

December 23, 2004

A Short Selection of CLIM Reading

On #lisp, Rainer Joswig suggests a course of reading to get Dan Barlow up to speed on CLIM (this transcript is slightly edited).

<dan-b> ok, what downloadable clim stuff should I grab before being netless for four days
<dan-b> let us assume I plan to write bits of clim app in that time, and I know essentially nothing about it to start with
<lispm-wim2> dan-b: all docu you can find ;-)
<dan-b> bah
<dan-b> you know, a suggested reading order would be a nice touch
<lispm-wim2> dan-b: hmm
<lispm-wim2> dan-b: you need reference stuff, like the CLIM reference
<lispm-wim2> plus
<lispm-wim2> the CLIM user guide from Franz and/or Xanalys
<lispm-wim2> http://kantz.com/jason/clim-primer/
<luis> That primer is cool.
<luis> Very short, but cool.
<dan-b> time for some wget shopping, then
<lispm-wim2> http://www.lispworks.com/reference/documentation.html
<lispm-wim2> download the CLIM user guide
<lispm-wim2> (pdf or ps)
<luis> Oh, wait, I'm thinking of another one
<luis> I'm going to read that then :)
<dan-b> kewl. molto gracias
<lispm-wim2> http://www.franz.com/support/documentation/7.0/doc/clim-ug.pdf
<lispm-wim2> this should be also very useful
<lispm-wim2> http://www.ocf.berkeley.edu/%7etfb/misc/lp90.pdf
<lispm-wim2> guided tour to clim from 1991
                       
Posted by jjwiseman at 02:56 PM | Comments (1) | TrackBack

ILC 2005 Submissions

The ILC 2005 website seems to be taking shape, including the call for submissions [via Paul Dietz].

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

Gracle

yoko ikeno
Yoko Ikeno illustration

Gracle, A development and deployment environment for Common Lisp” [postscript file], by Robert Strandh [via Rainer Joswig]. (My own PDF conversion.)

Gracle differs in two important ways from ordinary operating systems such as GNU/Linux, in that it does not have files and that it does not have processes.

Sounds like a party!

[Updated: Fixed the PDF link. Thanks, Tobias.]

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

December 22, 2004

Mac OS X Debugging Magic

Apple Technical Note TN2124: Mac OS X Debugging Magic.

This technote describes a number of 'secret' debugging facilities in Mac OS X, including environment variables, preferences, routines callable from GDB, special files, and so on. If you're developing for Mac OS X, you should look through this list to see if you're missing out on something that will make your life easier.

Debugging memory allocators, debugging information printing functions for use in GDB, debug versions of system libraries, debugging Apple Events, AppKit view outlines, and loads of other helpful stuff for debugging and development in OS X.

appkit view debugging

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

December 21, 2004

White Box 912

some kind of runt mecha

PC Magazine mentions the White Box Robotics 912 robot, running Evolution software.

The 912's chassis looks like a racy version of R2-D2 and comes with a VIA motherboard and customizable software from Evolution Robotics. “The software is capable of speech synthesis, speech recognition, motion sensing, obstacle avoidance, and more,” says Tom Burick, White Box's president.

White Box was previously mentioned here in April.

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

They Totally Rebuilt It

The Powerbook was only away a fraction of the time they said it would be gone, and it looks like a brand new machine. Apple fixed the hinge, replaced the inverter board (I guess that fixed the spotty backlight) put a new upper case on it, and even replaced the rubber feet.

I hadn't realized how used I had become to my old trackpad surface, worn smooth by my own juices.

Posted by jjwiseman at 11:29 AM | Comments (1) | TrackBack

2004 Roundup

the november meteors, e. l. trouvelot
The November Meteors, E. L. Trouvelot

I lie. This roundup really only goes back a week at most.

But, Zach Beane is working on a list of the significant events of the Lisp world for 2004.

Successful Lisp is for sale at Amazon [via Lispmeister].

New QRIO sightings by Brian Mastenbrook.

Franz is offering a two-year non-commercial student license of ACL 7.0 enterprise edition for $99, and is planning on offering a 64 bit version of ACL 7.0 for OS X [via Rainer Joswig].

Rainer also mentions that Functional Developer, which was originally Harlequin DylanWorks, has been open sourced.

Bill Clementson uses AppleScript to get the LispWorks Personal Edition working with Slime.

And, finally, the big one: Edi Weitz announced RDNZL, which “enables Common Lisp applications to interact with .NET libraries”. It works with LispWorks and ACL in Windows.

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

December 20, 2004

AgentSheets 1.6 and Comics

The Los Angeles County Museum on Fire, (1965-1968), Oil on canvas, Ed Ruscha
The Los Angeles County Museum On Fire

Alexander Repenning's AgentSheets 1.6 got a mention in the Apple Developer Connection Newsletter. (AgentSheets was at one time written in Lisp. Is it still Lisp-based?)

While googling for more info, I found a researcher doing work in using comics to teach children about programming, especially concurrency. Intriguing.

Posted by jjwiseman at 03:46 PM | Comments (1) | TrackBack

A Mostly Jurassic Pre-Christmas in LA

(Fri.)

9:30 pm: At the annual MJT reception. Bumped shoulders with Werner Herzog. He seems to talk exactly like he does on film.

10 pm: Gave Steve Martin a tip on how to best view a miniature reproduction of a Giacomo Torelli automatic scenery changing device for baroque opera. Odd mustache.

(Sat.)

11 am: Ate buttery pancakes while sitting outside at Millie's. 80 degrees and sunny. The Beatles' Revolver and an old PJ Harvey album were played.

2 pm: Took an hour-long nap in a warm Spartan Royal Mansion trailer. It's 50 years old and used to be Roger Brown's.

3:30 pm: Tea in the tea room. Gerry Casale was there but left before we arrived. Lori and Mark and Charley knit while I do a little coding.

4:30 pm: Cocktails at the midget orgy hotel.

5:15 pm: More napping in the trailer.

(Sun.)

11 am: The Carol C special at Roscoe's.

12:30 pm: Ruscha exhibit at MOCA. Shopping frenzy in the gift shop; fascinating Muji merchandise.

3 pm: GTA.

9:30 pm: More GTA. Too tired to go to Joanne's work Christmas party, which starts at midnight.

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

December 17, 2004

Timboy Interview

Tim Converse, AKA Timboy of “lisp advocates” fame, is interviewed in the Yahoo Search weblog [via troutgirl]: part 1, part 2

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

R-Gator? I Hardly R-Knew-Her!

The Times Online on IRobot's newest military robot:

The killer robot of the 21st century will be the illegitimate child of a vacuum cleaner and a John Deere tractor.

Various models of John Deere's “Gator” tractor have been used as robotics platforms before, and apparently the militarized, diesel-powered M-Gator model is widely used by U.S. armed forces. iRobot's R-Gator adds autonomy to the M-Gator, as well as over $200,000 to the cost of an individual vehicle.

The segment of the marketing video (I'm glad they have music that's as cheesy as in our marketing videos) with the R-gator following a walking soldier makes me wish I had one or two of my own that would follow me like obedient, loyal dogs. I'd walk into the office and they'd wait patiently outside on the sidewalk until my workday was over, and I would walk outside and call them to me, and we'd amble home together while Segway-riding Pasadena cops stopped and gawked.

Mr. Pike is concerned that military technology is moving faster than many people realise. “You really can imagine these robots replacing infantry on the battlefield,” he said, “but I don’t think we've really thought through how this will change war. If you were of the opinion that America was a rogue superpower based on the military policy of today — well, you ain't seen nothin' yet.”

Oh boy.

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

Job Crawl

Here are thirty or so jobs mentioning Lisp, many of them using Lisp as the primary programming language. indeed.com seems to aggregate job listings from many services, and even offers RSS feeds.

On the topic of Lisp-specific aggregation of job postings, Steven Haflich has an old comp.lang.lisp post about automating the process.

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

December 16, 2004

More Mathematical Craft

crocheted lorenz equations

From the BBC, via btang:

Dr Hinke Osinga and Professor Bernd Krauskopf, of Bristol University's engineering mathematics department, used 25,511 crochet stitches to represent the Lorenz equations.

The equations describe the nature of chaotic systems - such as the weather or a turbulent river.

The academics are offering a bottle of champagne to anyone who cares to follow the pattern published in the journal Mathematics Intelligencer.

Previously, mathematical crocheters were mentioned on Lemonodor in May.

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

End of the Year Crunch

some kind of power station?  water treatment plant?

There will be new posts soon. It's not as if there isn't a lot going on with Lisp, and with other things. It's just that I had to take the Chrysler into the shop to replace the starter and fix a leaky transmission, the local DMV manager can now recognize me on sight and calls the issues I'm having with my Volkswagen registration “a brain scrambler with eggs on top”, my boss is out of town helping a European space agency with some robotics stuff and in the meantime I've had to give a major demo and prepare for an imminent LaneHawk pilot, and Christmas is in a week and a half. I'll get around to clearing the lemonodor backlog soon, though. Just for you.

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

December 14, 2004

SBCL Is 5

SBCL is 5 [via Brian Mastenbrook].

  Date: Tue, 14 Dec 1999 18:53:46 -0600
  From: William Harold Newman To: cmucl-imp@cons.org
  Subject: It's alive! (SBCL, a CMU CL variant which bootstraps cleanly)

  I've made a system derived from CMU CL which can build itself from
  scratch, requiring only vanilla ANSI Common Lisp as a
  cross-compilation host.

If you're in the Bay area, and want to celebrate, Thomas Burdick sent the following email to sbcl-devel:

In case anyone here would be interested, but isn't on the BA lispniks list, the Northern California party celebrating SBCL's 5th birthday will be at 8pm tonight at Jupiters in Berkeley, CA. It'll be at least Harley and myself. I'll be there with my iBook, hopefully hacking my metacircular interpreter into sbcl. Anyone in the area is more than welcome to show up!

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

December 13, 2004

FPC-PPC 0.21

Randall Beer has released version 0.21 of FPC-PPC, his floating point compiler for MCL and OpenMCL.

In floating point-intensive code, FPC-PPC just about gets you 10x the speed and 1/10 the consing just by switching its define-double-function in for defun.

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

BKNR Presentation

bknr

Manuel Odendahl gave a presentation on the BKNR Lisp libraries in Hamburg last month [via lispmeister]. His slides and the accompanying code are now online.

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

December 12, 2004

LispWorks 4.4

Last week Xanalys released LispWorks 4.4, which includes the the following features and enhancements: some QuickTime support, OPENSSL interface, Cocoa Application Menu support, various optimizations (including 32 bit integer arithmetic), IDE improvements, graphics ports support more image types, an image access API, low-level stream API, native PostgreSQL backend for Common SQL, and my favorite, Objective-C/Cocoa FLI on Mac OS X. Plus, of course, bug fixes.

The free, personal edition of version 4.5 is supposed to be available “in Q1 2005”.

Posted by jjwiseman at 11:52 PM | Comments (2) | TrackBack

December 09, 2004

Charlemagne

cheval noir

Charlemagne is a genetic programming tool that is written in both Python and Lisp [via gavin]. The uneasy truce between the two languages seems to have come about when clisp was embedded in Python.

From the manual:

Here is an example of an interactive session defining a complex deviance calculating function:

>>> lsp.interactive()
CLISP> (defvar SPEED 0.05)
SPEED
CLISP> (defvar TURNS 50.0)
TURNS
CLISP> (defun simulator-helper (p turns x y)
  ...>     (if (eq turns 0)
  ...>         (sqrt (+ (* x x) (* y y)))
  ...>         (progn
  ...>             (setq INPUT1 x)
  ...>             (setq INPUT2 y)
  ...>             (let ((theta (degrees-to-radians (eval p))))
  ...>                 (simulator-helper
  ...>                     p
  ...>                     (- turns 1)
  ...>                     (+ x (* SPEED (cos theta)))
  ...>                     (+ y (* SPEED (sin theta))))))))
'SYRUP-DEVIANCE-HELPER'
CLISP> (defun simulator (p)
  ...>        (/ (deviance-helper TURNS 50 INPUT1 INPUT2) TURNS))
'SYRUP-DEVIANCE'
CLISP> exit
>>> cfg.configure("deviance-calculation", LISP-FUNCTION=simulator)
>>> cfg.configure("input", [[1.0,1.0], [0.5,0.5], [-1.0,-1.0], 
    [-0.5,-0.5], [0.25,-0.25],[-1.0,0.75], [0.25,-0.5], [1.0,-1.0]])
>>> cfg.apply()
Posted by jjwiseman at 02:49 PM | Comments (3) | TrackBack

Successful Lisp For Sale

Successful Lisp is now for sale. foreal. Way to go, David and Markus.

Until it shows up on Amazon, you can buy it directly from the printer.

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

December 08, 2004

Street Style

street style

This is my new favorite website.

i duno what u wore that too but mosta the time u probably shouldnt

what's wrong with your stomache? you look like you have a tumor in the bottom of it...cover that mess up...and i don tlike that outfit...it's not cute or creative...

U look like a banana foreal

Yea man, u on point like a thumb tack, stay fresh

YOU STRAIGHT LOOK LIKE YOU ARE A PART OF A CIRCUS

Posted by jjwiseman at 08:26 PM | Comments (3) | TrackBack

Apex

Autonomous Lisp Powered Rotorcraft Autonomous Lisp Powered Rotorcraft Autonomous Lisp Powered Rotorcraft

The photos and videos above are of a Lisp-powered autonomous aerial vehicle. My friend Will is at NASA Ames working on the Apex “autonomy architecture”, which is the particular Lisp software in control of this particular minicopter (the Apex website has more photos and videos of it in action).

The Yamaha helicopter is equipped with differential GPS with centimeter accuracy, has a one hour hover duration with a 65 lb. payload and 200 kbps data rates over radio with a 20 mile range--I know at least one thing I want for Christmas.

Just in case I don't get that, at least I can download the Apex software for free.

I find it pleasing that Apex includes a Procedure Description Language which has at least some superficial similarities to the RAP language I've mentioned before:

(procedure 
  (index (turn-on-headlights) 
  (step s1 (clear-hand left-hand)) 
  (step s2 (determine-location headlight-ctl => ?loc) 
  (step s3 (grasp knob left-hand ?loc) (waitfor ?s1 ?s2)) 
  (step s4 (pull knob left-hand 0.4) (waitfor ?s3)) 
  (step s5 (ungrasp left-hand) (waitfor ?s4)) 
  (step s6 (terminate) (waitfor ?s5)))
Posted by jjwiseman at 08:03 PM | Comments (0) | TrackBack

December 07, 2004

KIA (Except Robots Don't Die)

the packbot done blowed up

I missed this interview with Helen Greiner, cofounder of iRobot, and I missed this photo of the first Packbot lost in action.

In the next few months, more armed remote-controlled landbots will be arriving in Iraq.

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

New Planet Lisp Features

First Zach added archives to Planet Lisp (very nice), now he's created Planet Lisp: The CLiki edition, which aggregates the change feeds from the McCLIM, ALU and SBCL Internals CLikis, as well as the original CLiki.

I wonder what a wiki rss feed should contain.

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

December 06, 2004

Casting SPELs: A Lisp Comic

casting spels in lisp comic by conrad barski

It's already all over the lisposphere, but that's why they call me Ol' Reliable: I really like Conrad Barski's tutorial Lisp comic, “Casting SPELs in Lisp”.

You have to admire someone with the chutzpah to teach complete Lisp beginners about macros. I do find it a little ironic, though, that the very first line of code(second, if you count the ACL-specific setting of *print-length*) is one with unspecified behavior, the discussion of which has led to many long comp.lang.lisp threads:

(setf *objects* '(whiskey-bottle bucket frog chain))

whiskey bottle, check

Whiskey bottle, check. bucket, check. frog, chain, check. It's like Conrad somehow got a snapshot of my brain while I was hacking.

Posted by jjwiseman at 02:23 PM | Comments (4) | TrackBack

We Can Rebuild It

simple UI mistakes

I realize that cataloguing bad user interfaces would be a never-ending task, but it feels almost notable when Apple does it this badly. In the screenshot above, the repair status of my powerbook is not ordered chronologically but alphabetically, by status. Duh.

Right. The powerbook is being repaired. It hurts so bad!

  1. Some distracted motherfucker at ILC 2003 tripped over my powercord while running and talking on his cell phone at the same time, which tweaked my motherboard enough to disable the modem.
  2. When running on battery power, sometimes the backlight goes out and refuses to turn on again until I put the computer to sleep and wake it up again.
  3. I can burn about 80% of a CD before the drive overheats and errors out.
  4. Finally, last week I opened the lid and a little piece of what I like to imagine was aerospace-grade titanium popped off and suddenly the LCD was connected to the rest of the machine by one fewer hinge than previously.

That doesn't seem too bad for two-and-a-half years of John-time. They'll also be replacing the top case, which at this point has had most of its paint worn away and is a lot of bare metal. It looked cool, but I guess I don't want it to actually corrode.

Actually, when the hinge blew out I was pretty sure I was going to have to get a new powerbook, which while exhilarating also made me feel a little sick to my stomach--An unexpected $3000 expenditure a month before Christmas? Ouch. Luckily someone told me that AppleCare lasts three years, not the two I thought it was good for.

I've been using a PC laptop with both XP Professional and Fedora Core 3 as a powerbook subtitute. Again, ouch.

Posted by jjwiseman at 11:48 AM | Comments (1) | TrackBack

December 03, 2004

Zeroconf, Now With TXT

howl wrapper screenshot

The Howl wrapper is now working with ACL, and handles Zeroconf TXT records.

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

Lisp Environment Breakdown

Bil Clementson has a nice breakdown of the Lisp implementations by category. Lisps with extensive development environments, Lisps for embedding, Lisps with a small footprint, etc. Based on a comp.lang.lisp post by Rainer Joswig.

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

December 02, 2004

Think Lisp

Ian Eslick is building a Lisp distribution based on SBCL/ACL with pre-packaged libraries: Think Lisp.

One of the sad consequences of the not entirely irrational bias against lisp in the 80's is that there are no pre-packaged, rich environments that are open source and the commercial packages tend to be too expensive and not widely available at universities that the community desperately needs a platform that one can develop on and distribute as a pre-packaged source of software to allow others to use our research products. I'm building a multi-vendor, multi-platform environment primarily based on SBCL (eventually) for the free version and Allegro for the commercial version due to the excellent compilers that come with them.

The exact list of facilities and utilities that are going to be part of Think Lisp seems to be under consideration.

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

cl-pubmed

I didn't know that Kevin Rosenberg had a little interface to the PubMed database until I read it on a bioinformatics weblog: cl-pubmed.

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