September 29, 2004

What the Bubble Got Right

New from Paul Graham: “What the Bubble Got Right

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

Commodore 32 Programming Contest

The world's first interactive fiction standalone Z-machine: The Commodore 32. Built-in Z-interpreter, 64K of Z-Machine RAM, 32K of ROM in Z-Carts, Infinite Imagination. [via nickm at Grand Text Auto.]

(This is not entirely unrelated to Lisp, as Zork was implemented in MDL, a “particularly unhelpful form of Lisp”.)

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

September 28, 2004

Scheme Weekly News

john nava, study for a virgin

MJ Ray has been collecting, progressively more sporadically, Scheme-related news and announcements at Scheme Weekly News.

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

September 27, 2004

Dynamic MSAgent

peedy

John Lam's post about controlling Microsoft Agents in Python reminded me of some code I wrote years ago.

(defmethod sa:move-event ((self demo-agent) character-id x y cause)
  (when (eql cause 1)
    (let ((phrase (case (floor (/ (random 3) (+ (random 3) 1)))
                    (0 nil)
                    (1 "Hey!")
                    (2 "If only I had a mouse, then you'd be the one dancing."))))
      (when phrase
        (sa:speak self (parse-integer character-id) phrase)))))

(defparameter *a* (make-instance 'demo-agent))

(sa:load-character *a* "p1" "peedy.acs")
(sa:show *a* "p1")
(sa:speak *a* "p1" "Hi, my name is Peedy.")
(sa:play *a* "p1" "greet")
(sa:speak *a* "p1" "I'm very entertaining.")

The Python code is a little nicer looking.

agent = win32com.client.Dispatch("Agent.Control.2")
agent.Connected = -1
agent.Characters.Load("Peedy", "Peedy.acs")

peedy = agent.Characters("Peedy")

peedy.LanguageID = 0x409
peedy.Show()
peedy.Speak("Hello, World!")
peedy.Play("Blink")
Posted by jjwiseman at 10:57 PM | Comments (2) | TrackBack

Pixies

This weekend I went to my first Pixies show, at the Greek Theatre in Berkeley. I'm not a rabid Pixies fan, but they are good, and this reconciliation tour is nothing if not historic (now I'll always be able to say “I saw the first Pixies reunion tour.”). Lori made t-shirts for the event, which pretty much guaranteed that we had the coolest ones there.

Surrounded by thousands of adoring fans, most of which were more of the singing-along-with-every-song variety than the get-up-and-dance-wildly sort, you could tell it was kind of a special experience for everyone there.

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

September 23, 2004

Let's Fork SBCL To Create the "Waterman Gentleman" Edition

substrate, by jared tarbell
Jared Tarbell, Substrate

Lisp (well, emacs Lisp) is part of Neal Stephenson's, uh, baroque publishing process [via Markus Fix]:

The manuscript of The Baroque Cycle was written by hand on 100% cotton paper using three different fountain pens: a Waterman Gentleman, a Rotring, and a Jorg Hysek. It was then transcribed, edited, formatted and printed using emacs and TeX. When it was totally finished, the TeX version of of the ms. was converted to Quark XPress format using an emacs LISP program written by the author. Some share of credit thus goes to the people who made the GNU/Linux operating system and to the originators of LISP.

Neal: The spelling “LISP” has been passé for over 10 years now. I'm just saying.

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

September 22, 2004

Serial Experiments in Upchucking

Matthew Danish grabbed this frame From Serial Experiments Lain:

life, from the cmu repository

<Zhivago> proving that lisp is the goth chick language of future choice

Anime can be pretty geeky, but it has a significant overlap with what might be considered cool popular culture; E.g., you can buy it at the Giant Robot store.

Something you won't see at the Giant Robot store until after they decide to carry those tubgirl posters is the Introducing Python video. Jesus Christ. That's supposed to be a marketing video?

lisps, and not in a good wayattends both foo camp and burning man, banned by both for excessive excitementno comment

Little known fact: everybody involved in the production of this video about the <font face="70s computer">Python Coding Language</font> knew how to code in Python, even the caterer. Another little known fact: none of them ever got laid again.

Actually, I can pretty easily see Giant Robot selling a little plastic tubgirl figurine.

Posted by jjwiseman at 12:05 PM | Comments (11) | TrackBack

Comments Fixed

John Blue let me know that there was an error preventing anyone from posting comments. It's fixed now (apparently mt-blacklist doesn't check that the regexes it's prompting you to add to its stop list are valid regexes). Thanks, John

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

September 21, 2004

Progress on Unicode for SBCL

screenshot of sbcl doing unicode

Christophe Rhodes has a silly screenshot of SBCL's fledgling unicode support.

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

September 20, 2004

Bosco How-To

Mikel Evins has written a how-to called “Creating Applications with OpenMCL and Bosco”:

Using OpenMCL, the excellent free Common Lisp compiler from Gary Byers, you can build Carbon and Cocoa applications that work on Mac OS X. The reason more people don't do it is that it's not obvious how to build such applications. To make it a little easier and more obvious, I created an application template named Bosco.

...

In this guide we'll go step-by-step through the process of getting and installing OpenMCL and Bosco, then through building an application with them. We'll see how to use Bosco's features to build a Carbon application, and how to build user-interface resources with Apple's Interface Builder and integrate them into Lisp applications. A later version of this guide will add a section on how to build a Cocoa application; the process is very similar.

He illustrates using an Interface Builder-created GUI from within OpenMCL, even.

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

September 17, 2004

New Threading in ACL 7.0

keisuke, loretta lux
Loretta Lux, Keisuke

ACL 7.0 is going to have a new implementation of multiprocessing [via Bill Clementson]:

In the new implementation, processes within Lisp are instances of a CLOS class that can be specialized to get customized behavior. Process objects mediate the programmer's access to threads. The programmer creates an instance of the process class (or of a subclass of the process class) in order to start a parallel computation. The computation's state can be inspected and modified through the use of functions that receive the process object as an argument.

Because processes are CLOS instances, the programmer can create specialized process classes whose instances contain application-specific attributes or behaviors. A server application, for example, could add slots to hold request queues or sockets or transaction-status data structures. After methods defined on initialize-instance and process-terminate could perform application-specific startup and shutdown actions.

This new model allows greatly simplified system design and implementation. It allows the programmer to treat the process and the server instance as a single object, instead of forcing a program structure in which they are two distinct things, one of which owns the other.

A beta version of the new documentation is available.

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

September 16, 2004

So Long, Earthlink

I've finally had it with Earthlink DSL. On the technical side it's been OK, but the customer service and tech support has been terrible and incompetent. They disconnected my DSL, and not only can they not tell me why but as far as their system is concerned I've had a dial-up only account since June (I've been using DSL happily for the last couple months).

The final straw was when they enticed me, using rebates and priority call back phone numbers, into giving them another chance and waiting three weeks to have my service re-enabled, and then they flubbed the call transfer and disconnected me.

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

September 15, 2004

newLisp

newlisp screenshot

newLISP is a Lisp-like scripting language with most of the stuff that people expect in a modern programming language already built-in, plus a little more:

  • Shared library import
  • TCP/IP and UDP
  • Perl-style regular expressions
  • XML parsing
  • Tcl/Tk front end
  • mysql, SQLite and ODBC
  • CGI, SMTP, POP and FTP
  • matrix and statistics functions

Paul Graham's comment on newLisp, over at Lambda the Ultimate: “[If] I'm going to be beaten to the punch by another Lisp dialect, can we make it Goo?”

Posted by jjwiseman at 11:41 AM | Comments (3) | TrackBack

Lisp Mindstorms

drawing by zoe charlton
Zoë Charlton, Mid America Greetings #1

XS Lisp, by Taiichi Yuasa, is a Lisp programming environment for Lego Mindstorms. Unlike LegoLisp or LegoScheme,which run on a PC and send commands to the RCX computer, XS Lisp runs right on the RCX itself.

XS Lisp includes the following features:

  • read-eval-print loop
  • interactive definition and re-definition of functions
  • appropriate error messages with backtraces
  • function trace and untrace
  • dynamic object allocation and garbage collection
  • robustness against program errors and stack/buffer overflow
  • terminal interrupts
  • truly tail-recursive interpreter
  • event/timer waiting and asynchronous event watchers
  • interface to RIS devices such as motors, sensors, lights, and sounds

Here's some sample code, from Taiichi's ILC 2003 paper:

(define (forward)
  (motor :a (motor :c :forward))
  (play '((:Re4 . 2) (:Do4 . 1) ...)))

(begin
  (speed :a (speed :c :max-speed))
  (forward)
  (with-watcher
    (((touched? 2)
      (motor :a (motor :c :back))
      (sleep 5)
      (motor (if (= (random 2) 0) :a :c)
	     :forward)
      (sleep 5)
      (forward)))
    (wait-until (pressed?))
    (motor :a (motor :c :off))))

Pete Hopkins blogged some notes from Taiichi's ILC talk back in November of last year.

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

September 14, 2004

AltiVec from Lisp

Did you know you can write AltiVec (AKA Velocity Engine, kind of like MMX or SSE2 but for G4 and G5 processors) code from within OpenMCL?

(defppclapfunction load-array ((n arg_z))
  (check-nargs 1)
  (with-altivec-registers (vr1 vr2 vr3 vr27) ; Clobbers imm0
    (li imm0 arch::misc-data-offset)
    (lvx vr1 arg_z imm0) ; load MSQ
    (lvsl vr27 arg_z imm0) ; set the permute vector
    (addi imm0 imm0 16) ; address of LSQ
    (lvx vr2 arg_z imm0) ; load LSQ
    (vperm vr3 vr1 vr2 vr27) ; aligned result appears in VR3
    (dbg t)) ; Look at result in some debugger
  (blr))

I wish there were some cool examples.

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

Linux Magazin Sonderheft

Thomas Fischbacher is helping to distribute CMUCL via magazine:

Watch out for the german “Linux Magazin Sonderheft” special edition on scripting languages, appearing on Sep 23. This will feature a bootable modified Knoppix CD which will have xemacs + cmucl 19a + ilisp + quite some further cl Debian packages on it (including onlisp-ps, but not including the hyperspec and cltl. I could not put it onto the CD for license reasons.)

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

September 13, 2004

Blanket 2.0

yes, it's a robotic blanket

Alright, this gets past my robot art stupidity filter: It's a robotic blanket that seeks out people and... covers them. [via Beverly Tang]

This is actually closer to how most people will eventually interact with robots than the idea of a general purpose homebot.

Posted by jjwiseman at 10:44 PM | Comments (1) | TrackBack

Hollywood Hell House

andy richter as jesus
andy richter as jesus, photo by lori

We finally made it to the Hollywood Hell House. A tour doesn't even run 30 minutes, but it's lots of fun and easily worth $10. How much would you pay to have Penn Jillette, in costume as Lucifer, caress your cheek? The rest of it is just a bonus: getting a suicide's brains splattered across your face as she pulls the trigger, witnessing gang rape at a rave, watching one of those poor, misguided Jews getting ground into hamburger in Hell. And of course, spotting major and minor celebrities in thick makeup and prosthetics.

And while the tone isn't reverent, or even serious, the script is apparently followed pretty closely. It's just that it's already self-lampooning.

Joanne, as we walk out of Heaven: “Nice wedding ring, Jesus.”
Jesus, muttering: “It's for the nuns.”

The Wall Street Journal has coverage, as does the New York Times. And Lori has pictures.

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

September 09, 2004

Twisted Info Design

periodic table of perl operators

This periodic table of Perl operators is insane [via Tao of Mac].

periodic table of perl operators, inset

And also lovely.

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

Scheme vs. Common Lisp

Here's an old but sort of funny story about optimization, language design and language implementation: Scheme vs. Common Lisp. [via lispmeister.]

It took me 20 minutes to convert the code, which ended up being about one third as many lines.

Philip Greenspun has some other MIT AI Lab reminiscing too.

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

September 07, 2004

End of Summer Weekend

groping virtual buckyballs at the lacma nano exhibit

Busy weekend. Finished off a bottle of Maker's Mark while waiting in line for the Hollywood Hell House, forgot my credit card at the Bigfoot Lodge, had the best dim sum, saw both the nano exhibit and the Beyond Geometry exhibit at LACMA, and had the best Thai. Lori has more detail, as do Dan and Carol.

We're just cool.

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

September 06, 2004

Slime 1.0

Slime, the new standard portable emacs interface to Lisp (replacing ilisp), has hit 1.0.

Posted by jjwiseman at 10:06 PM | Comments (1) | TrackBack

September 03, 2004

SocialProblemsOfLisp

The wiki page SocialProblemsOfLisp is one of the worst c2 wiki pages I've ever seen. Which is really too bad, because Lisp does have some serious social problems and we could use real attempts at fixing those.

Posted by jjwiseman at 08:49 AM | Comments (11) | TrackBack

Visual CLisp IDE

Krzysztof Wlodarczyk has a new Lisp IDE for Windows, based on clisp: Visual CLisp. It's got syntax coloring and help based on CLtL2 (it really should at least include some hyperspec lookup, too).

visual clisp screenshot visual clisp screenshot

It looks kind of raw, but it could turn into something.

Posted by jjwiseman at 08:44 AM | Comments (3) | TrackBack

September 01, 2004

Flamebait

we were not out to win over the Lisp programmers; we were after the C++ programmers.  We managed to drag a lot of them about halfway to Lisp.  Aren't you happy?

(See the context.)

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