March 31, 2005

At A Remove

a surprised antelope
First-ever photograph of a live Abbott's duiker, a type of forest antelope. It's eating a frog.

Today I survived my third surprise round of layoffs at Evolution. It hasn't even been six months since the last one.

It's particularly weird being out of the office when it happens.

Posted by jjwiseman at 11:01 PM | Comments (3)

Standard API for Web Applications?

a little bit of hawaii in a box
Lori: “It's like the pudding is on vacation. Like it ran off with a pineapple to Tahiti.”

Bob Hutchison recently got tbnl working with Dan Barlow's Araneida web server (instead of mod_lisp).

Apparently there are enough Python HTTP servers and web application frameworks that some people thought it might make sense to standardize the API between them. The idea is that you can select a web framework and have it work with any existing or future bit of code that listens on port 80 (or whatever) and mediates communication between clients and the brains of your code. I think it makes sense, but it's been kind of a long time since I did any serious web development. Now that Lisp has Araneida, Allegroserve, mod_lisp, and friends, maybe we're getting close to the point where it makes sense for Lisp, too.

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

March 30, 2005

La Vida Robot

i want to see these kids working on a desert ugv next
The Carl Hayden Community High School Falcon Robotics Club

La Vida Robot: How four underdogs from the mean streets of Phoenix took on the best from M.I.T. in the national underwater bot championship”, from Wired [via Boing Boing].

ROTC had trained Oscar well: He knew how to motivate people. He made sure that everyone was in the room and focused when he phoned Frank Szwankowski, who sold industrial and scientific thermometers at Omega Engineering in Stamford, Connecticut. Szwankowski knew as much about thermometer applications as anyone in the US. All day long, he talked to military contractors, industrial engineers, and environmental consultants. So he was momentarily confused when he heard Oscar's high-pitched Mexican accent on the other end of the line. The 17-year-old kid from the desert wanted advice on how to build a military-grade underwater ROV

One of the best group-of-ESL-students-and-undocumented-kids-from-a-poor-phoenix-neighborhood-out-design-out-engineer-and-out-document-a-bunch-of-snobby-engineering-school-students-in-an-underwater-remotely-operated-vehicle-contest stories I've seen in a while.

Before they could sit down again, Merrill told them that they had won the technical writing award.

“Us illiterate people from the desert?” Lorenzo thought. He looked at Cristian, who had been responsible for a large part of the writing. Cristian was beaming. To his analytical mind, there was no possibility that his team - a bunch of ESL students - could produce a better written report than kids from one of the country's top engineering schools.

The school district has started a scholarship fund for the kids involved, and it sounds like it's needed:

Oscar wipes the white gypsum dust from his face. It's a hot Tuesday afternoon in Phoenix, and he's hanging sheetrock. He graduated from Carl Hayden last spring, and this is the best work he can find. He enjoys walking into the half-built homes and analyzing the engineering. He thinks it'll keep him sharp until he can save up enough money to study engineering at Arizona State University. It will cost him approximately $50,000 as an out-of-state student. That's a lot of sheet-rocking.

Luis also graduated and is filing papers in a Phoenix Social Security Services office. Cristian and Lorenzo are now juniors. Their families can barely support themselves, let alone raise the money to send their kids to college. Last summer, Cristian's hopes flagged even further when his family was forced to spend $3,000 to replace the decrepit air-conditioning unit in their aluminum trailer. Without AC, the trailer turns into a double-wide oven in the desert heat.

When Oscar gets home from work that night, he watches the gypsum dust swirl down the sink drain when he washes his hands. He wonders what formulas define a vortex. On the other side of the neighborhood, Cristian lies on his bed and tries to picture the moisture in the clouds above. Rain isn't predicted anytime soon

Posted by jjwiseman at 11:43 PM | Comments (3)

ILC 2005 Deadlines Extended

i would have named it “flyboat”
flybot floats through a tropical simulation [via inflight correction]

The deadline for ILC 2005 papers has been pushed back from March 15 to April 5 for abstracts, May 25 for final paper submission.

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

We're Loud And We're Gonna Rock (And/Or Roll) This Crowd

From comp.lang.smalltalk.dolphin, a familiar story [via Patrick Logan]:

...VisualWorks and VW/GemStone combinations are used in sectors such as cpu manufacture, container shipping and derivatives trading on a world scale (i.e. they handle a substantial fraction of the world's activities in these sectors).  But for nearly two decades the corporations who have built these applications have viewed their use of Smalltalk as a strategic advantage, and hence prevented the vendors from using the applications in marketing material.

I wonder if Python will turn out, in fact, to be a strategic advantage in the way that Lisp and Smalltalk have been. Google seems to see it that way, though I'm a little skeptical. Maybe my skepticism is unfounded, and anecdotes about abysmal performance in Python apps (Mitch Kapor on Chandler, which is written in Python: “After setting up email account info, it took 30 seconds to respond after I tried to create a new mail message”, etc.) don't mean any more than the reports from novice programmers that Lisp is slow (after trying to build a long list by appending to the end, an element at a time).

Posted by jjwiseman at 03:27 AM | Comments (3)

The Mac is Back

Paul Graham likes Macs (“A bit late,” says Wes Felter, “but I always like to see a new convert.”), and so do many other hackers, whether they're coding or designing the applications that are part of what is coming to be known as “Web 2.0”.

And it's true, this does seem a little strange:

The intervening years have created a situation that is, as far as I know, without precedent: Apple is popular at the low end and the high end, but not in the middle. My seventy year old mother has a Mac laptop. My friends with PhDs in computer science have Mac laptops. And yet Apple's overall market share is still small.

I know that I was a little shocked when I walked into the robotics lab at U of C and saw that they were using Macs (not to mention Lisp). Two years later, I was one of those people poring over volumes of Inside Macintosh.

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

March 29, 2005

2500 Miles From Home

random aerial view of research triangle park, probably about 2 miles from my hotel

I have relocated to the Research Triangle Park in North Carolina for the duration of this week, and while I'm there I am spending most of my day in a network environment which has been secured to the point of seemingly blocking all but HTTP traffic. Without ssh and POP and, hell, even telnet, I feel malnourished. I am growing weaker. Dumber.

This is probably a pretty typical level of security for a corporate network, I guess. And it's consistent with the look of the office, which is straight out of The Apartment, only the desks are hidden behind cubicles. It's even in black and white, or close enough that you can't tell the difference.

Lemonodory posting will probably be bursty. Just like the good old days!

Posted by jjwiseman at 11:17 PM | Comments (4)

March 24, 2005

Three Posts on Lisp Syntax

François-René Rideau has some interesting posts about the importance and supremacy of Lisp syntax: First, What Makes Lisp Great, with emphasis on Lisp's syntax and why metaprogramming is good, and easy in Lisp (I particularly enjoyed Bawden's “Quasiquotation in Lisp” paper to which Rideau refers).

(Lots of ((Irritating, Spurious) (Parentheses)))” tries to answer common criticisms of Lisp syntax (such as the ones that show up in the comments of the previous post).

In “Parsing Considered Harmful”, Rideau argues that the question of programming syntax has been settled, and the obsession with parsing and syntax in computer science curricula is hurting America.

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

March 22, 2005

Power Slaw

united states income distribution

That's the most depressing power law curve I've ever seen [via Ben Hyde].

It looks like two straight lines, but it's actually an astronomically steep curve that shows just how inequitably income, and power, are distributed in the US. And Alternet reports that the curve for wealth (accumulated income) is much steeper even than the income curve shown above.

Posted by jjwiseman at 11:08 PM | Comments (24)

Freedom Flies

freedom flies uav showing off its target classification

Freedom Flies is a peaceful UAV project by Chris Csikszentmihalyi.

While nearly all UAVs are developed and marketed for military applications, Freedom Flies is targeted for use by journalists, and is the logical extension of the 2001 Afghan Explorer research project. Test flights were conducted on the US / Mexico border, looking for evidence of anti-immigrant groups that are known to promulgate unlawful violence against political and economic refugees there.

While much has been made of using UAVs for “border security,” we believe the systems may also be used to keep our homeland safe by observing and reporting illegal proto-fascist activities. We will be open-sourcing both hardware and software designs for Freedom Flies so that indy media and non-profit groups can rebuild the system. Pictured is the system (crashing!) at the Center for Land Use Interpretation's proving ground near Hinkley, California.

I'd love to see the software.

Posted by jjwiseman at 09:38 AM | Comments (6)

March 21, 2005

OpenMCL 0.14.3

After a long wait (it's been over 10 months since the last release), OpenMCL 0.14.3 is now available.

Besides the usual slew of bug fixes, there are a few new features:

  • Most Common Lisp symbols have docstrings. Well, almost; most of them are lost during bootstrapping.
  • The Cocoa bridge still only runs under the exact same version of the OS under which it was compiled. But, some of the work is in place to fix this in the future.
Posted by jjwiseman at 10:59 AM | Comments (0)

March 20, 2005

Simple Grid Protocol

recommended by pjb

Simple Grid Protocol 1.0 is a Grid-style framework for doing distributed clisp computation on Linux and BSD, by Brendan Kosowski [via Markus Fix].

(format t "~%Grid Demo. Performs multiplication & shows which CPU Resource Server was used.~%~%")
(format t "Input 1st integer: ")
(setq x (read-line))
(format t "Input 2nd integer: ")
(setq y (read-line))

(multiple-value-setq (result ip) (porta
    (list 'progn
        (list 'setq 'x x)
        (list 'setq 'y y)
        '(progn
            (* x y)
        ))))

(format t "Result of multiplication = ~a~%" result)
(format t "CPU Resource Server used = ~a~%" ip)

Despite the questionable style in the example, it'd be neat if the framework were really that transparent.

Posted by jjwiseman at 12:09 AM | Comments (2)

March 17, 2005

50 People See And Kerrrazy Dad

the salavon generator

I love this clever Flickr hack.

krazydad

Even more than this one.

Posted by jjwiseman at 08:08 PM | Comments (1)

March 16, 2005

Scraping DARPA

DARPA's official Grand Challenge site has a web-based forum for discussion among people working on entries. I've made it easier to find and read new posts by scraping the site and creating an RSS feed.

The feed is updated hourly. DARPA's forum software does not provide permanent (or even temporary) links to individual posts, so each RSS item is linked to the discussion topic page from which it came.

I was toying with the idea of scraping every team website I could find (there are currently 136 teams in the pipeline), but after looking at one terrible, terrible website after another I'm not sure I have the stomach for it. Too bad they didn't go with a free weblog hosting service, and get automatically generated RSS/Atom feeds as part of the deal.

Posted by jjwiseman at 02:05 PM | Comments (3)

March 15, 2005

Summer Founders Program

Paul Graham is starting something like a summer boot camp for entrepreneurs.

If you're accepted, we'll deal with the paperwork for you. We'll incorporate you, if need be, get you a corporate bank account, supply simple, generic employment agreements for you to use, and so on. We can give some advice about patents, though you don't have to deal with that in the earliest stages; you have a year after making a discovery to file a US patent application for it.

We'll have some smart people who are willing to talk over your plans with you, and suggest pitfalls and new ideas. We may also have connections to companies you'd like to do deals with. But how much you want to take advantage of our advice and connections is up to you.

Check out the application.

Posted by jjwiseman at 07:08 PM | Comments (0)

Lisp

lisp

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

March 14, 2005

Modernize Your COBOL

modernize yoyr cobol

I have read things that implied that Google's AdSense algorithms get thrown off by long pages with lots and lots of content.

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

ParenScript

Manuel Odendahl's ParenScript is a neat Lisp-like sexpr-based syntax for Javascript (Manuel has more info in this weblog post).

The js macro compiles sexprs into Javascript:

(js
  (defun foobar (a b)
    (return (+ a b))))

==>

function foobar(a, b) {
  return a + b;
}

You can use DO for iteration:

(js
  (do ((i 0 (incf i))
       (j (aref arr i) (aref arr i)))
      ((>= i 10))
    (alert (+ "i is " i " and j is " j))))

==>

for (var i = 0, j = arr[i]; i < 10; i = ++i, j = arr[i]) {
  alert("i is " + i + " and j is " + j);
}

ParenScript has macros:

(defjsmacro 1+ (form)
  `(+ ,form 1))

It also has an HTML generator:

(js
  (defun add-div (name href link-text)
  (document.write
    (html ((:div :id name)
           "The link is: "
           ((:a :href href) link-text))))))


==>

function addDiv(name, href, linkText) {
  document.write("<div id=\"" + name + "\">The link is: <a href=\""
                              + href + "\">s"
                              + linkText + "</a></div>");
}

There's even an sexpr syntax for CSS.

The documentation looks excellent, including a complete reference as well as some tutorials. I'm totally never writing Javascript again.

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

cl-ajax 0.1.5

butterfly scales

Richard Newman has updated his cl-ajax package to work with SBCL as well as OpenMCL. He also has a very simple tutorial demonstrating how to use cl-ajax.

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

March 13, 2005

Cairo for CLIM

cairo for clim

Gilbert Baumann has the beginnings of a Cairo backend for McClim. It looks good.

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

Something Isn't Right

What kind of sick civilization would produce code like this?

<c:forEach var="item" items="${sessionScope.cart.items}">
  <c:set var="book" value="${item.item}" />
  <c:set var="bookId" value="${book.bookId}" />

  <sql:query var="books" 
    sql="select * from PUBLIC.books where id = ?" >
    <sql:param value="${bookId}" />
  </sql:query>
  <jsp:useBean id="inventory"
    class="database.BookInventory" />
  <c:forEach var="bookRow" begin="0"
    items="${books.rowsByIndex}">
    <jsp:useBean id="bookRow"  type="java.lang.Object[]" />
    <jsp:setProperty name="inventory" property="quantity"
      value="${bookRow[7]}" />

    <c:if test="${item.quantity > inventory.quantity}">
      <c:set var="sufficientInventory" value="false" />
      <h3><font color="red" size="+2">
      <fmt:message key="OrderError"/> 
      There is insufficient inventory for 
      <i>${bookRow[3]}</i>.</font></h3>
    </c:if>
  </c:forEach>
</c:forEach>
Posted by jjwiseman at 04:06 PM | Comments (10)

March 12, 2005

CL-EMB 3.0

Stefan Scholl's CL-EMB project is now at version 3.0. CL-EMB is a “mixture of features from eRuby and HTML::Template. You could name it ‘Yet Another LSP’ (LispServer Pages) but it's a bit more than that and not limited to a certain server or text format.”

Among other changes, the new version adds “generator loops”.

If you're interested in CL-EMB, you may also be interested in Bill Clementson's survey of Lisp-based template systems from October.

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

March 11, 2005

Fortress

yann arthus bertrans

Guy Steele talks about his current work.

Called Fortress, the new language is part of a larger Sun Labs effort to come up with a design for the supercomputer of the future, an effort funded in part by DARPA, the U.S. government's Defense Advanced Research Project Agency. Unlike past DARPA projects, however, the focus is not on high performance but rather high productivity.

Steele sounds like a Grahamian animal.

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

Mr. Shrimp Eats Too Much

shrimp love
Mr. Shrimp Scampi Jr.

Mr. Shrimp seems to have eaten something that he shouldn't have, something that got stuck in his intestine (Dan: no, it's not Petunia). Lori and I are preemptively feeling guilty for whatever the suspicious blob on the X-ray turns out to be, the thing that we let him eat because we aren't conscientious enough as pet owners, which I'm sure is an earplug and she's sure is yarn. Petunia is just plain weirded out by not having Shrimp around.

In any case, we'll find out what the suspect device is in the next couple hours as Mr. Shrimp is going under the knife. Luckily Shrimp is strong like horse, bullheaded, young and healthy, so I'm not too worried. When I asked about the risk associated with surgery, the vet said he does it all the time. “It's as dangerous as driving on the freeway”. I bet he's exactly right, but somehow I wish he hadn't said that in the context of being smack dab in the middle of LA.

Update: Mr. Shrimp is fine. We still can't figure out what the blocker thing is.

Posted by jjwiseman at 01:41 PM | Comments (9)

March 09, 2005

Spam Statistics

Between November 27, 2004 and today, 81042 comments were rejected by lemonodor's MT-Blacklist plugin. That's an average of about 795 comments per day. As a rough estimate of the trend of the data, comments were rejected during the first 63 days at an average rate of 650 per day, and during the next 39 days at a rate of 1027 per day.

First I'd like to say HOLY SHIT! That's a lot of spam

Now that that's out of the way, I'd like to say thank you, Jay Allen, for MT-Blacklist.

I'm pretty sure that any technique that relies on manual cleanup of spam from world-writeable web space is doomed. I'm also pretty sure that nofollow will be mostly ineffective against spam and will actually lead to a small degradation in overall result quality in search engines that respect it.

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

Paul Graham: How to Start a Startup

like art or something

New from Paul Graham: “How to Start a Startup

There are plenty of other areas that are just as backward as search was before Google. I can think of several heuristics for generating ideas for startups, but most reduce to this: look at something people are trying to do, and figure out how to do it in a way that doesn't suck.

For example, dating sites currently suck far worse than search did before Google. They all use the same simple-minded model. They seem to have approached the problem by thinking about how to do database matches instead of how dating works in the real world. An undergrad could build something better as a class project. And yet there's a lot of money at stake. Online dating is a valuable business now, and it might be worth a hundred times as much if it worked.

Tweak your spam detectors to become lie detectors, and there you go--instant #1 online dating site of the universe... or not.

Posted by jjwiseman at 11:09 AM | Comments (7)

March 08, 2005

Save Lisp and Die

save lisp and die

In case you aren't hardcore enough for a tattoo, t-shirts are now available.

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

Axion Racing 2005 DARPA Site Visit video

oh those crazy twins

As part of the application process for the 2005 DARPA Grand Challenge, teams had to create a short video that demonstrated that they have a vehicle that has some chance of success, or at least will put on a good show. DARPA uses the video to determine which teams will receive an in-person site visit for further evaluation. The best 40 teams as determined by site visits will become semi-finalists for the qualification event.

Axion Racing's video, featuring the Axion racing twins that you may remember from last year, is hilarious. Watch the Axion twins as they blow kisses to the director of DARPA (“Hi Tony!!”), and mispronounce words like "autonomous", "calibrate", "electronical" and "unit".

CMU's Red Team Too has a video that pretty much begs you to hate them. Or maybe the guy doing the voiceover was trying to be sarcastically pompous and arrogant.

Several more videos are available on this page created by Team CIMAR. All seem to feature AWESOME soundtracks.

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

March 07, 2005

Brucio Unleashed

mi zo
fashion photography by german photographer zoren gold and japanese graphic artist minori murakami

Another newcomer to Lisp: Lisp at Light Speed

One of the “onions” (Paul Graham's wonderful phrase) of Lisp is IF. There are multiple problems: First, IF only allows one form for both the then-form and else-form. That means you have to introduce ugly progn forms to group multiple statements. How this got past the ANSI committee I'll never know

Posted by jjwiseman at 09:21 PM | Comments (9)

cl-ajax

cl-ajax

Richard Newman's cl-ajax lets you use Lisp to leverage the XmlHttpRequest/Ajax technique that's used to such good effect in Flickr, Google Suggest and Google Maps to create real-time interactivity without page loads.

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

Hedgehog

sideburn nation is a nation of programmers
Will thinks this looks me a photo of me chillin' with the army's BRLESC-II

Hedgehog is a bytecoded Lisp for embedded use (20KB executable) that runs on Linux and should be “trivially portable to any POSIX system.”

Hedgehog is a very concise implementation of a Lisp-like language for low-end and embedded devices. It consists of a compiler and a byte code interpreter. The byte code interpreter is written in standard conforming C, is efficient and easily portable, and can be compiled to a very small executable of only some 20 kilobytes in the smallest configuration for the Intel x86 architecture.

The Hedgehog Lisp dialect has proper support for local and lambda functions, lexical scoping, variable argument functions, garbage collection, exceptions, macros, and over a hundred predefined functions or special forms. The built-in types are lists, symbols, strings, 32-bit integers, AVL-trees, and tuples up to 16 elements wide. Proper 32-bit wide integers are necessary for various bit-level operations in embedded systems.

There is a comprehensive tutorial and reference.

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

March 04, 2005

ER1s in Allentown

'what are you looking at... nerd'

The NSF is funding a curriculum for middle school students in Allentown, Pennsylvania based on the use of remotely controlled mobile robots exploring a simulated Martian landscape.

You can see a video of coverage by a local news station at the Martian Landscape Project's news page.

I love the sight of a swarm of ER1s stumbling around a school hallway, janitors and students weaving around them, while a bunch of proto-nerds are driving them from a remote classroom. It's kind of neat that I helped (a little bit, anyway) to make that happen.

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

March 02, 2005

The Third Age of Idealab

idealab logo

The new Idealab logo is a big improvement. It looks really nice over the front door.

Posted by jjwiseman at 11:13 PM | Comments (1)