Archive for February 2009

Friday, February 27, 2009

10 Papers Every Programmer Should Read (At Least Twice)

Michael Feathers:

We’ve taken an interesting turn in the industry over the past ten years. We’ve come to value experiential learning much more, and we’ve regained a strong pragmatic focus, but I think it would be a shame if we lost sight of some of the deeper things which people have learned over the past 50 years. Rediscovering them would be painful, and (to me) not knowing them would be a shame.

There are also some good links in the comments. I particularly recommend the end-to-end paper by Saltzer, Reed, and Clark and the lambda papers by Steele and Sussman.

Thursday, February 26, 2009

20 Corporate Brand Logo Evolution

iShift has a great post showing the changing logos and their stories (via John Gruber).

Tuesday, February 24, 2009

Safari 4 Beta

Erik Barzeski:

What’s been gained by having top tabs? 20 pixels? I’m sorry, but those 20 pixels are simply not worth the problems “Top Tabs” have caused.

Update (2009-03-04): John Gruber has a great post that covers just about everything.

Monday, February 23, 2009

Java Humor

Explanations of common Java exceptions:

AWTException: You are using AWT, which means your GUI will be ugly. This exception is only a warning and can be ignored.


GHUnit is a new unit testing framework for Mac OS X from Gabriel Handford:

I’ve always wondered why XCode doesn’t have a unit testing GUI like other IDEs, or why the SenTesting framework has to be such a pain to setup, with all its RunScript build phases, shell scripts, octest bundle insanity. After using the GTMTestCase for the iPhone (since SenTesting isn’t supported on the iPhone SDK) I decided to try to re-purpose some of the GTM Unit Testing code into a standalone testing framework and GUI that I could use on both my Mac OS X and iPhone projects.

Tuesday, February 17, 2009

17-inch MacBook Pro, Disassembled

iFixit has some good photos from disassembling the 17-inch MacBook Pro (unibody). The 1.25-pound battery looks surprisingly removable, and the hard drive is also easy to get at. The logic board is similar to that of the 15-inch.

Monday, February 16, 2009

The Origins of Felt Tip Sound Studio

Lucius Kwok (via Daniel Jalkut):

After I came back from Detroit (where MacHack was held), I immediately started working on Sound Studio 1.0. It took about 6 weeks, and I had no beta testers, no PR or marketing agency, no blog or twitter, and nobody looking over my shoulder. September 1999, I released the very first version of Sound Studio.

Thursday, February 12, 2009

iMovie ’09

David Pogue:

See, the world is moving to hi-def camcorders. And iMovie ‘09 works great with hi-def camcorders. But what if you want to show your edited movie on a high-definition TV?…You can’t!…No Macs have Blu-ray burners, and iMovie lacks an Export to Tape command, so your high-def masterpieces are pretty much trapped forever on your Mac.

I suppose Apple wants you to buy an Apple TV, but it only supports 720p even though full 1080p camcorders are affordable now.

Thursday, February 5, 2009

Ordered Hashes in Ruby 1.9

In Ruby 1.9, hash tables preserve insertion order by maintaining a doubly-linked list. This seems like a dubious feature. It only accords with the principle of least surprise if you don’t know how a hash table works. I don’t think I’ve ever needed a hash to do this, and I worry that making the order mostly predictable will lead to fragile code that accidentally relies on the ordering where it shouldn’t. All of this comes at the cost of increased memory use. Overall, it’s faster than Ruby’s previous hash implementation, but presumably it would be even faster without the ordering feature.

Tuesday, February 3, 2009

From ABC to Python

Guido van Rossum:

Despite the problem with numbers, one very positive thing came out of this experience. I decided that there should be no undefined result values in Python—instead, exceptions should always be raised when no correct return value can be computed. Thus, Python programs would never fail due to undefined values being silently passed around behind the scenes. This is still an important principle of the language, both in the language proper and in the standard library.

Monday, February 2, 2009

ATPM 15.02

The February issue of ATPM is out: