October 18, 2004
Booble and Ralph

Rainer Joswig's got some items that you shouldn't miss.

First is that Booble, the porn search engine that drew attention from Google's lawyers in January, uses CMUCL and cl-html-template. From the source:

<meta name="generator" content="cmucl-19a cl-html-template EMs Pg module and of course.. emacs" />

It seems not to work all that well, either as a search engine or as parody. Some queries give lots of results, but then a search for superstar Jenna Jameson gives seven results (and no images), two of which aren't her. No images for supernerd Asia Carrera, either.

No lisp programmers have yet come forward to take responsibility.

Next from Rainer is a fascinating interview with Mikel Evins about the early development of Apple's Newton, using a hacked MCL:

Q: So, Bauhaus was written in Dylan?

Mikel: When I was working on Bauhaus [a Newton OS] (and before, on the first iteration of Newton OS) Dylan was even more a Lisp than it is now. It was called “Ralph”, and was basically Scheme+CLOS+a couple of ideas from other functional languages+a few things to please Smalltalk hackers at Apple. The development environment was a hacked version of MCL that supported two compilers and runtimes: (1) the Common Lisp Compiler and runtime, which ran on 68K hardware and targeted 68K hardware; and (2) the Ralph compiler and runtime, which ran on 68K hardware, but targeted ARM hardware (first on ribbon-cabled Newton prototype boards, and later on development prototypes of actual Newton hardware connected by means of Nubus inserts). There were lengthy meetings with the Apple Cambridge team that was designing Ralph and various interested fractions at Apple, arguing for their favorite language features. The strongest lobbyists were Lisp and Smalltalk programmers.


Q: What would have been the main differences of Bauhaus to the released Newton OS?

Mikel: Everything above the kernel was written in Dylan, except for 7 very low-level QuickDraw routines. Size in RAM was about twice the size of the C++ version. The UI was a littler richer and a little faster, and built in Dylan using a graphic system made by wrapping those 7 QuickDraw primitives in Dylan and building a graphical language on it.

It supported mobile software agents (but there was debate about how this could be made both robust and safe).

It had a means of automatically generated UI elements from READ-like forms with class specifications for the arguments; for example, there was a macro get-input-from-user that was like a binding form (like LET*) with class annotations; it dynamically constructed the UI to get the values for the bindings. It had nestable stylesheets for describing the appearance of UI elements (sort of like CSS for UI, but back when the Web was brand new and the W3C What's New page still listed all the websites in the world :-)).

It had a novel event-handling system capable of supporting arbitrary user-defined events. The event system identified events by pattern-matching.

It had a frame system used to implement a knowledge base that stored things like prototypical Person and Place and Date objects, and supported fuzzy comparisons. The so-called “IA” (“Intelligent Assistant”) subsytem used these frames so that it could guess things like the fact that when you write “Joe” you probably mean “Joseph Smith” or “Josephine Baker” from your address book. It was also used for the help system, so that it could guess that, for example, a sequence of actions was probably intended to establish a machine-to-machine connection and pop up information to help you do that, and for the event-handling system so that you could declaratively define new classes of high-level events and handlers for them.

Damn. And that's in 50-100 KLOC, too.

Posted by jjwiseman at October 18, 2004 09:33 PM

Where exactly do people see that "Booble" uses CL-HTTP? "cl-html-template" is the Debian package name for (cough) my HTML-TEMPLATE library. Not that I am affiliated with Booble, but credit where credit is due... :)

Posted by: Edi Weitz on October 18, 2004 10:35 PM

I'm sorry about that, Edi. I didn't even check, I just repeated what Rainer wrote--I know he's familiar with CL-HTTP, so I figured he was right.

Posted by: John Wiseman on October 18, 2004 10:57 PM

I think Edi is right. It probably is his library. Sorry about that. ;-)

Posted by: Rainer Joswig on October 18, 2004 11:34 PM

Maybe it's not GNU Debian but - GNU Lesbian http://www.lesbian.mine.nu/ ?

Posted by: Voblia on October 19, 2004 06:34 AM

Humm, the Booble link is not correct in post (it points to http://www.lemonodor.com/booble.com)... Is this to protect us people at work with lots of monitoring? :)

Posted by: John Blue on October 19, 2004 07:43 PM

Oops, sorry about that, John. Fixed.

Posted by: John Wiseman on October 19, 2004 08:01 PM

OK- first off, I'm kind of annoyed at the fellow who pointed out my meta tags on Ward's Wiki. In fact he'd never seen Ward's Wiki before I introduced him to it- same with lisp, though he has since become a pretty strong lisp programmer. I tossed the meta tags in for the hell of it, and I had no idea anyone would ever see them. Very confusing though- same IP for both of us.... I have a new IP now. I guess I should clear up some misconceptions there, and here.

First off- the search is a perl app. Yes, it sucks, if you are thinking in terms of search- it is an index, with a search interface tacked on top. Oh yeah- that is all perl ;).

Before you decide that something works well, or that it works badly, you might want to consider that how well it works is mostly a matter of how well it works for the people who put it up. On that level it has been pretty successful: i.e. $$$

At any rate the money from booble might wind up funding a very serious publishing framework- the discussion is ongoing. If we go down that route I can promise that lisp will be used as the main language.

Luck to you all in introducing lisp into your workplace- I've been pretty successful :). Not successful enough to sign my name though...

Posted by: boobleman on November 8, 2004 07:29 AM

I should also add that what lisp is used for on booble is pretty simple- could have been done with any scripting language- but it is so clear in lisp- it is really so much nicer than it would have been in any other language... when you occasionally have to deal with 5 million visitors a day, that helps... wish I had written the whole damned thing in lisp from the get go....

Posted by: boobleman on November 8, 2004 07:46 AM

yes boobleman is correct our search engine is currently written in perl/modperl using html template. however unlike how boobleman attests, it will not be rewritten in lisp.

Posted by: therealboobleman on February 5, 2007 03:05 PM
Post a comment

Email Address:


Unless you answer this question, your comment will be classified as spam and will not be posted.
(I'll give you a hint: the answer is “lisp”.)


Remember info?