Where are the fast dynamic languages?

But I also knew, and forgot, Hoare’s dictum that premature optimization is the root of all evil in programming.
— Donald Knuth

Something bizarre happened on the Groovy-dev mailing list the other day. Alex Tkachman made what I thought was a simple suggestion: since some rarely used features of the language make it slow, we should have a keyword or annotation which says to the compiler, “Hey there, compiler, I’m not using those features in this code, so please give me the faster code.” I had expected the others to debate the pros and cons of the idea, but instead, they couldn’t quite understand it.

They kept saying you’d need to check that the features weren’t actually used at runtime. I suggested the checks could work like assertions: have them on while testing, but off when performance mattered. But that didn’t seem to sink in. At one point, they even said that turning off these features would “betray” the core values of the language.

Continue reading

Posted in Programming Languages | 35 Comments

What I’ve Learned From Programming In Lisp

Two years ago I landed a job at ITA Software, which Paul Graham called one of the “ten or twenty places where hackers most want to work,” along with Google. And one of the interesting things about ITA is that the majority of their software is written in Lisp.

Now before starting there, my experience with Lisp was about the same as most CS grads. I’d used it as an undergrad in a programming languages course, as well as an AI course on natural language processing. And my thoughts about it were pretty standard: it’s a functional language, so if you’re going to use it you’re best off doing recursion and avoiding assignment statements; and dynamic typing and garbage collection make it slow.

Boy, was I wrong. It turns out, Lisp is a lot more practical than that, and we use it for the search engine that powers Orbitz.com, Kayak.com, and most of the U.S. airline websites, among others. The main things I’ve learned are:

Continue reading

Posted in Programming Languages | 34 Comments

Ian Simon Martin-Swader



Ian Simon Martin-Swader
joined our family
July 12, 2007 at 1:17 pm

6 pounds 0 ounces
18 inches long

Mother doing well

Father low on sleep

– Martin, Joy, Amber, Miles and Ian

#flickr_badge_source_txt {padding:0; font: 11px Arial, Helvetica, Sans serif; color:#666666;}
#flickr_badge_icon {display:block !important; margin:0 !important; border: 1px solid rgb(0, 0, 0) !important;}
#flickr_icon_td {padding:0 5px 0 0 !important;}
.flickr_badge_image {text-align:center !important;}
.flickr_badge_image img {border: 1px solid black !important;}
#flickr_www {display:block; padding:0 10px 0 10px !important; font: 11px Arial, Helvetica, Sans serif !important; color:#3993ff !important;}
#flickr_badge_uber_wrapper a:hover,
#flickr_badge_uber_wrapper a:link,
#flickr_badge_uber_wrapper a:active,
#flickr_badge_uber_wrapper a:visited {text-decoration:none !important; background:inherit !important;color:#3993ff;}
#flickr_badge_wrapper {background-color:#ffffff;border: solid 1px #000000}
#flickr_badge_source {padding:0 !important; font: 11px Arial, Helvetica, Sans serif !important; color:#666666 !important;}


Posted in Random Thoughts | Leave a comment

How to Interview A Manager

There’s been a lot written about interviewing programmers, and about good management, but I couldn’t find anything about how to interview managers. So I’ve been looking into it and thought I’d write up what I’ve learned so far.

First of all, some things not to do. While you might want to lead with a big, open ended question (“What’s your management philosophy?”), you don’t want most of your questions to be like that. That’s because while some people are reflecitve and think explicitly about what they do, there are others who are “naturals.” The naturals have good instincts about how to handle most situations, but they may never really have thought about what they’re doing or tried to put it into words. So instead, you want most of your questions to be scenarios.

Continue reading

Posted in Brain Rental | 2 Comments

Life and Death

There’s a great old game I remember for my Amiga, called Life And Death. The WHDLoad download has the manual and solution, but not the game itself. I found the PC version at a number of abandonware sites, including:

The beeper codes and solution are available from the XTC Abandonware site, and I’ve mirrored them here.

Actually, that XTC site has a bunch of games, including old Infocom games like “A Mind Forever Voyaging.” Cool.

I’d still love an Amiga version…

Posted in Game Design

Review of “Game Design: Theory & Practice” by Richard Rouse III

I’m evaluating books on game design as potential texts for a game design course at Union College and also perhaps RPI. The first book I’m looking at is “Game Design: Theory & Practice” 2nd edition by Richard Rouse III.

Overall, I like it. He mixes high level ideas with both analysis of specific games and interviews with game designers, and talks a lot about nuts and bolts. For example, there’s a chapter on the design document, and another on documentation in general. There are also two appendices of example design docs, one for a hypothetical game, the other for The Suffering. He also takes a historical perspective, analyzing Centipede and Tetris along with The Sims and GTA III.

Continue reading

Posted in Game Design, Review

Netflix Prize: Number of ratings per customer

Does anyone have a good distribution for characterizing the number of ratings per customer? Graphing the histogram log-log (where the vertical axis is density, not count) it’s clearly not the straight line implied by a power law:

Histogram of the number of ratings per customer

The red line is the gamma distribution fit by the method of moments. It’s way too high on the left, and way too low on the right. Can anyone think of anything better?

This thread on the Netflix Prize forums:

Posted in Random Thoughts | Leave a comment