Reini Urban mentioned in comp.lang.lisp the following McKinsey Quarterly report: The Return of Artificial Intelligence (requires free registration; you can log in with the standard "cypherpunk" with password "cypherpunk").
I don't know if AI techniques are any more or less likely to succeed in business now than they were 20 years ago (McKinsey claims that it is more likely because of "the fact that the underlying Web-enabled infrastructure creates unprecedented scope for collecting massive amounts of information and for using it to automate business functions", which sounds reasonable for some domains, at least), but I do know a language that is great for "working with complex data in dynamic environments"...
Most viewed entries:
|2.||Lisp Machine Video|
|3.||Lisp DLLs in ACL|
|4.||Living in Emacs|
|5.||Norvig/Lisp/Python and Easy GUIs|
|7.||The New Arrival: 5 lbs 8 oz|
|8.||Ideas for Arc|
|10.||Only Double A, Thinking Triple X|
Some of those are popular due to Google searches by non-lisp programmers, as you might imagine (this site was at one point the #1 Google result for a search on "insect porn").
Some browser statistics:
|39.4%||Mozilla + Netscape|
The rest are search engine spiders, RSS aggregators, and worms.
Pasadena has a lot of killer bees. I see signs like this one (near the entrance to my parking garage at work) all the time. Last week a big swarm was removed from a palm tree in a quiet residential neighborhood, and a few months ago students were trapped in a high school while public health officials removed a swarm that had landed on campus.
I have a bee phobia. Which puts my social insect score at Ants: fascination, Bees: irrational fear. Normal bees freak me out with their determination--they often want me or my food, and they don't give up easily. It's not the pain of stinging that scares me, it is their alien single-mindedness along with their irascibility (it doesn't help that it's backed by the threat of a painful sting). I've been stung lots of times, and it's not that bad. I just don't like the way they act (pretty clearly makes it a phobia, eh?)
The thing is that there are not a lot of normal bees here. Africanized bees started taking over southern california in 1999, and now 60% of the bees in this area are africanized. Yes, most bees here are killer bees. And they take determination to a new level. If you run, they will chase you for up to several hundred yards. And you should not jump in water if chased, because they will wait for you to surface.
I saw on the Discovery Channel that Los Angeles county has a special vector control department to handle killer bees. They'll come out in their truck and wearing their bee suits and destroy a hive, or remove one by wrapping it in a plastic bag and freezing it until the bees are dead, after which an exact analysis of the hive can be done by measuring wing sizes (africanized bees have slightly smaller wings) or doing DNA analysis.
So anyway, if I ever stop posting for more than two weeks, just assume the bees got me.
The funny thing is, this is based on actual perl porn (work-safe if your co-workers really know you).
Erann Gat's wizzy piece of code for computing digits of pi:
(defun compute-pi-decimal (n &aux (p 0) r) (dotimes (i n) (incf p (/ (- (/ 4 (+ 1 (* 8 i))) (/ 2 (+ 4 (* 8 i))) (/ 1 (+ 5 (* 8 i))) (/ 1 (+ 6 (* 8 i)))) (expt 16 i)))) (dotimes (i n) (multiple-value-setq (r p) (truncate p 10)) (format t "~X" r) (if (= (mod i 10) 1) (princ #\space)) (setf p (* p 10))))
Using bignums and 1.5 GB seems a little luxurious in comparison to Wozniak's using all of 48K (including video RAM) on an Apple II (which didn't even have integer multiply or divide) to compute 116,000 digits of e, but it's kind of neat.
CL-USER(19): (time (compute-pi-decimal 300)) 03 1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8628034825 3421170679 8214808651 3282306647 0938446095 5058223172 5359408128 4811174502 8410270193 8521105559 6446229489 5493038196 4428810975 6659334461 2847564823 3786783165 2712019091 4564856692 3460348610 4543266482 1339360726 02491412 ; cpu time (non-gc) 23,090 msec user, 180 msec system ; cpu time (gc) 2,680 msec user, 30 msec system ; cpu time (total) 25,770 msec user, 210 msec system ; real time 32,284 msec ; space allocation: ; 3,937 cons cells, 1,685,652,448 other bytes, 0 static bytes
From The Age:
Scientists running a pioneering experiment with "living robots" which think for themselves today said they were amazed to find one escaping from the centre where it "lives".
[Professor Noel Sharkey] later found it had travelled down an access slope, through the front door of the centre and was eventually discovered at the main entrance to the car park when a visitor nearly flattened it with his car.
Sharkey said: "Since the experiment went live in March they have all learned a significant amount and are becoming more intelligent by the day but the fact that it had ability to navigate itself out of the building and along the concrete floor to the gates has surprised us all."
Like I'm not surprised by unexpected software behavior and witness to robot escapes every day.
I'm such a wet blanket.
Because VersionTracker doesn't care about lisp.
John Foderaro announced a new version of the open source Franz code for handling the "deflation" compression scheme (used by zip files and gzip), deflate. (Note that for your convenience and ease of understanding, the deflate module contains a single source file: inflate.cl.) This is a bug-fix release.
Marco Antoniotti let the world know that defsystem 3.3i (see the "Latest File Releases" section) is out. I think this is mostly a bug-fix release for LispWorks users, but frankly the defsystem family tree makes my head hurt and since I don't use defsystem I figured I'd leave it up to you to figure out.
Oh, and now I see that 3.3i.1 (!) is out and available at the same location.
David E. Young announced the "snapshot release" of LISA, a lisp-based production-rule system for creating intelligent software agents.
Use the clisp fink package.
[server:~] wiseman% fink install clisp
You are using fink, right?
Wow! This is a surprise.
The conference runs for 4 days at the end of October, and focuses on 4 areas:
It looks like all sorts of recognizable names will be speaking (Daniel Bobrow, Richard Gabriel, Peter Norvig, Roger Corman, John Mallery, Kent Pitman, Christian Queinnec, John L. White). I'm particularly interested in seeing the speaker from iRobot has to say about lisp in embedded systems.
$400 for 4 days (if you register early) doesn't seem bad, either. I'm there.
So, wow. Another lisp conference is actually going to happen. Now we just need to re-educate whoever is responsible for that appalling conference web site.
Let's get a little codey.
A long time ago, the company I worked for went from doing research for NASA on natural language interfaces for complex systems to making web sites for truckers. I ended up doing a lot of web programming, some with Java Server Pages (JSP). More recently, at i/net, I experimented with using JSP-style techniques with Lisp--Lisp Server Pages.
Lots of people write their own version of LSP. It's kind of fun to implement, and a basic version is like a page of code so it only takes an hour or so. I just figured I'd save you a little time up front.
The code has been generously made available by i/net under the MIT license. You can download it as a tarball. It's generic lisp and should run in any lisp that AllegroServe supports. (I get annoyed when I have to go through the whole process of downloading and untarring something before I can look at the source and get an idea of how good or bad the code is. So here's the source, straight up.)
You can see it in action in this short example: example (source), which is backed by OpenMCL and Portable AllegroServe. I'm sure that 500 years after the fall of man, when humans are reduced to huddling for warmth inside the ruins of Sony Style stores while staying alert for the quiet skittering sounds that mean they've been discovered by a pack of intelligent (and angry) GM guinea pigs in their sharp-legged, flame-throwing arachnid exoskeletons, that these example LSP pages will continue handling requests from whatever hosts remain forgotten on the internet, not caring whether the human race wins the long battle to reclaim their place as dominant species, power LEDs slowly blinking out one by one as capacitors fail (seems like it's always the capacitors) and the once profound symbols of modern technology go silent.
Or I'll restart the machine and forget to start OpenMCL too.
Anyway, the experiment more or less failed. I began to suspect the reasons behind JSP's ugly appearance had less to do with Java than with the crazy idea of mushing two unrelated languages and syntaxes together.
So here's some documentation. It's quite a lot for such a small amount of code, but indulge me.
Java Server Pages are a way to make web pages that are dynamic, by embedding Java code in HTML. Similarly, Lisp Server Pages allow you to make dynamic web pages that contain Lisp code.
To publish an LSP page, call the publish-lsp function:
|publish-lsp (&key path filespec server)||[function]|
|Publishes the LSP file filespec at the URL prefix path, on server defaults to the default AllegroServe server, *wserver*). Example: (publish-lsp :path "/temp.html" :file "/Users/wiseman/src/temperature.lsp")|
An LSP file looks just like an HTML file, except for two new tags: <% ... %> and <%= ... %>.
<% ... %> is a scriptlet tag (to use the JSP terminology), and wraps lisp code. For example, <% (dotimes (i 10) (beep)) %>. The code inside the tag is executed each time the page is requested.
<%= ... %> is an expression tag, and the effect of this tag is to evaluate the contents as if they were wrapped with the Franz net.html.generator:html macro. For example,
<%= (:h1 "header") "hi" (:princ-safe (generate-footer)) %>
is equivalent to
(net.html.generator:html (:h1 "header") "hi" (:princ-safe (generate-footer)))
which will output something like the following HTML:
During execution of LSP code, the following two variables will be bound:
(See the AllegroServe documentation for more information on these objects.)
Expressions can be used inside HTML attributes, e.g.,
<img src="<%= (img-title request) %>">
Scriptlets do not need to be complete lisp forms, as long as the page as a whole is syntactically valid, e.g.,
<% (dotimes (i 10) %> <img src="mr-yuck.jpg"> <% ) %>
LSP pages are converted to strings containing lisp code, which are then compiled and cached. If the source file containing the lsp code is modified, the next time a request is made for that page the code will be recompiled and recached.
In my first attempt to do this, I tried to construct forms instead of strings. That just made it trickier to separate forms across <% ... %> tags (see the dotimes example above). Just because it's bad that other languages are often limited to manipulating code as strings doesn't mean there aren't times where it's appropriate.
There's nothing like JSP's directives or declarations.
See http://sourceforge.net/projects/lsp for a more serious attempt at doing this right, by Sunil Mishra and Tim Bradshaw.
Would have been a lot cooler in 1997.
Note that's MCL, not OpenMCL, which has worked with Portable AllegroServe for some time.
John DeSoi says
We finally have a release version of Portable AllegroServe that works with MCL and OpenMCL (also LispWorks and CMUCL). Portable AllegroServe is a HTTP server based on AllegroServe from Franz (LGPL license).
Before downloading and expanding the archive for use with MCL, be sure that your Stuffit Expander preference is set to convert text files (Cross Platform option). Also, you will want to have file mappings for .cl and .lisp in your Internet preferences so that MCL becomes the creator of the source files.
Chunking and SSL are not yet supported with MCL or OpenMCL. I could always use more help if anyone is interested :).
Terje Norderhaug has released two new versions of some MCL add-ons.
The Fred Package Indicator modifies Fred editors and the listener so that they display the buffer/listener package in a "placard". You can click on the placard and select a new package, as well.
Appearance-MCL upgrades the MCL dialog items to have an appearance consistent with MacOS 8 and 9, using the Appearance Manager. (The effect is pretty subtle, and it made some built-in dialogs less usable when I tried it.)
Both packages are available from the In Progress site, along with about a half-dozen others.
One Saturday night Jochen Schmidt wrote an IRC elizabot just for fun, using LispWorks' CLIM support.
Pierre Mai has the start of a lisp IRC client, too, SillyIRC, in case you're just in to IRC.
(Those are some pretty uninformative links up there, eh? Did you know that google gives a lot of weight to the text of links that points to a site? So take a guess as to what the #1 google result is for a search on "this site". No, it's not that, but you're close.)
(Short Tim anecdote: Me: "Hey, are you the Tim Converse that Clifford Pickover mentions in this book as having invented infinite chess?" Tim: "All I did was post the rules to a mailing list, so I guess I am.")
Marco Antoniotti has announced the release of version 5.12.0 of ILISP.
Browsing the changelog, it seems like there have been a million changes since the last release (which was over a year ago). All I know is that when I tried it a few days ago, C-up was working in a way that pleased me greatly. Way to go, ilisp!
Juri Pakaste has instructions on how to automatically reformat the CLHS html pages, removing those rather ugly images and generally making it look cleaner.
Once you've followed his instructions you can change the look all you want just by editing the stylesheet.
(The CLHS tarball expands into a million files that have write permissions turned off; Until you do a chmod -R u+w or something, the whole tweaking process will fail silently. Juri helped me figure this out.)