Ron Garret’s Google Story

Ron Garret tells the story of how he left Nasa’s Jet Propulsion Lab to work for Google in what so-far is a four-part series on Xooglers.

Back in the day, I spent a lot of time lurking on comp.lang.lisp. Ron was a frequent poster there, though it was always under the pseudonym his former name of Erann Gat in those days. His was one of the many distictive voices that I enjoyed reading on that newsgroup. I’m glad to hear from him again.

Tip of the hat to John Wiseman.

Update (2005-12-14): A comment from Ron corrects an important mistake about his time as Erann Gat:

That wasn’t a pseudonym, that was actually my name at the time

Sorry, Ron. I should have checked my facts. Thanks for correcting it.

Technorati tags: , , ,

So long, John Vlissides

Ehud Lamm:

John Vlissides, of GoF fame, passed away on Thursday, November 24, 2005, after a lengthy illness.

More on John on the wiki page dedicated to his memory.

John was one of four authors of a highly influential book on the topic of object oriented programming. He will be missed, though his contribution continues to be felt around the world.

Test Driven Development: The Double Entry Accounting of Programming

I’ve been doing Test-Driven Development (TDD) for more than a year now. It’s no silver bullet, but it has helped me catch plenty of mistakes that might otherwise have slipped through to our final product.

TDD, for those of you not familiar with it, is a three step process. When you realize that you’d like your program to do something different that what it already does, you:

  • write a test case that would pass if the change was implemented (it will fail intially because it hasn’t yet been implemented)
  • implement the change so that the test case passes
  • clean up your code

It didn’t take me long to notice that whenever I wanted to make a change, I ended up describing that change in two different places: once in the unit test and once in the production code. It used to bother me that I was doing twice the work that I had been before starting with TDD.

It finally dawned on me that the duplication is the primary benefit of TDD. TDD is the double entry accounting of programming. Whenever you’d like to change your program, you enter the change in two sets of books: test cases, and production code. The duplication is what allows you to detect your errors.

Worst Job Ever

I work for a somewhat large, publicly-traded company, and while I consider it the best job I’ve ever held — interesting work, great people to work with, and unusually smart management — there are still days that wish I was doing something else.

Nothing on the scale of what the guy in this short must feel, I’m sure. He’s got the worst job ever.

Tip of the hat to Brad Feld.

On the Advantages of Lisp Macros

My apologies for making two rather geeky posts in a row, but I just couldn’t help myself. Richard Cook dug up this delightful quote from Peter Siebel’s book, and I just couldn’t keep myself from sharing:

DOLIST is similar to Perl’s foreach or Python’s for. Java added a similar kind of loop construct with the “enhanced” for loop in Java 1.5, as part of JSR-201. Notice what a difference macros make. A Lisp programmer who notices a common pattern in their code can write a macro to give themselves a source-level abstraction of that pattern. A Java programmer who notices the same pattern has to convince Sun that this particular abstraction is worth adding to the language. Then Sun has to publish a JSR and convene an industry-wide “expert group” to hash everything out. That process—according to Sun—takes an average of 18 months. After that, the compiler writers all have to go upgrade their compilers to support the new feature. And even once the Java programmer’s favorite compiler supports the new version of Java, they probably still can’t use the new feature until they’re allowed to break source compatibility with older versions of Java. So an annoyance that Common Lisp programmers can resolve for themselves within five minutes plagues Java programmers for years.

Technorati tags: , , ,

Verbs, Nouns, and the Current State of Programming Languages

I always enjoy reading Patti Digh’s weekly posts on life.

This week’s was no exception. In it she writes about the cultural differences in language teaching between americans and asians:

Studies have shown that in the U.S., children learn nouns much more rapidly than they learn verbs. (Nouns are easier to learn—they belong to categories, they’re unambiguous). Not so in East Asian countries where children learn verbs at a faster rate. Japanese mothers are more likely to ask about feelings, using feeling-related words when their children act up: “The toy is crying because you threw it.” “The wall says ouch,” Nisbett reports. By focusing on feelings, children are taught to anticipate reactions of other people… it’s all about the relationship, not the thing.

Her focus was on the importance of relationship over objects, and while it was meant to get us thinking about the connections between people, it got me thinking about the current state of the programming language world.

The dominant paradigm in programming languages today would be classified as western by the standards Patti writes of. It is heavily noun-oriented, or in tech lingo, object-oriented.

Object-oriented programs consist of descriptions of things. These things contain information (state) and can perform operations (methods). The key idea is that program are composed of many independent parts into something that does what it should. Just like Lego.

Relationships between objects of course exist, but they are peripheral to the central concept of objects.

It makes me wonder how the software we use today would be different if it was written with a relation-oriented paradigm rather than an object-oriented one.

Now before you accuse me of making things up, I’m not the first person to wonder about relation-oriented programming. Timothy A. Budd wrote a paper in 1994 on a relation-oriented programming language named LEDA that he invented.

So far, it has yet to catch on.

Us westerners, we like our objects.

Technorati tags: , , , ,

Geodesic Club House

Yes Mag has instructions for building a geodesic dome clubhouse out of paper and staples:

Geodesic domes are made of interlocking geometric shapes–often triangles. Because loads are spread over many triangles, these domes are especially strong. Often made of aluminum bars and plexiglass, they’re also light compared to ordinary domes.
Geodesic domes were popularized by an American inventor named Buckminster Fuller (1895-1983). Look for the distinctive Bucky-ball shape in museums, greenhouses, alternative housing, and science centres. Vancouver’s Science World is a 47-metre tall geodesic dome made of 766 triangles.

Why didn’t anybody tell me about stuff like this when I was a kid?

Technorati tags: , , , ,