This is the 50th episode of the StackOverflow podcast, where Joel and Jeff sit down with Steve Yegge of Google and the most excellent Stevey’s Blog Rants.

This episode was recorded on site at the Kirkland, Washington Google office, where Joel gave a talk earlier in the day.

A brief discussion about the APL language, whose keywords are symbols. Imagine how challenging it would be to program in a language where you need a special keyboard. There’s a more popular (not sure “popular” is the right word) version of APL named J which drops the symbols in favor of plain ASCII.

How big a fan of working at Google is Steve? He worries that new hires from college will expect the rest of their working life to be as good as their Google experience.

Steve can finally talk about what he was working on, which he was so vague about on our previous podcast with him. Mostly, he was disturbed at the state of JavaScript tooling at Google — “dude, you spelled it fuction again.”

The state of the art in tools means painstakingly adding support for each individual language into each individual editor. What if there was a way to plug first-class language intellisense / compilation functionality into any editor — in a generalized way? That’s the problem Steve set out to solve.

Take compilers that are defined for IDEs — Eclipse has three Java compilers built into it — a fast inaccurate one as you type, a better batch one, and then a great big one that does exhaustive analysis on large trees (Steve says Eclipse has “a better Java compiler than the Java compiler”.) This is all necessary to get good editor support! Why not take these compilers and run them on the google infrastructure, so they are commoditized and available to any editor?

Steve says the way tools and languages integrate today is utterly backwards. Languages should support the tools, rather than the other way around. “We should have been doing this for 20 years!”

Prototype doesn’t play well with the JavaScript compiler at Google, partly because nobody has actually tried to compile the code before! It exposes some problems that weren’t immediately obvious. All the common JavaScript frameworks require some tweaking for the JavaScript compilation process.

Steve likens the comparison between compilation and dynamic typing to taking a shower and brushing your teeth. You should do both! The only reason we can’t do both of these things is because, as Steve points out, our tooling currently sucks.

JavaScript has a more interesting origin than I realized — it was originally based on Scheme.

Per Steve, Scala is like Haskell but with more concessions to real world programming. He points out that the great thing about Java is the fantastic tooling, which means it’s ultimately a better programming experience than a theoretically “superior” programming language.

Joel doesn’t hate Unix; FogBugz supports Unix (although that support tends to be complex and costly) and Joel regularly runs cygwin on his laptop. That said, modern Unixes have their faults too. Steve observes that the only way to determine what packages are installed on Ubuntu is to diff the dpackage output against a clean machine. Also, Firefox is very slow on Linux relative to Mac and Windows.

Stack Overflow is for programming related questions, but defining programming related isn’t easy. There will always be a gray area, which is further complicated by the fact that we do want the _occasional _fun questions — we just don’t want the system overrun with the stuff.

Steve points out that even Amazon has examples of “fun” product reviews that wouldn’t normally be permitted, such as On Amazon, All of a Sudden Everyone’s a Milk Critic and The Story About Ping.