Correction: Instance Variables are not Public in Smalltalk

July 11th, 2007

Last week, I said that instance variables are public in Smalltalk. That is not the case. I got confused because we are working on an improved version of Smalltalk and because of representation independent code, instance variables are public until we add a general mechanism for declaring non-public methods.

My point that Squeak (and Smalltalk) are not good examples for API design remains valid, however.

Smalltalk: How to not Design an API

July 5th, 2007

I’m doing a lot of Smalltalk programming these days, and it’s great fun. The language is very powerful and flexible. However, my experience is with a bastard child of Smalltalk: Squeak. This is a complete mess because it seems like every library adds a few methods to core classes like Object and Class. For example, Squeak has a XML (sigh) library named SIXX, and its brilliant developers felt they had to add 18 (eighteen!) methods to Class. Here is the brilliant part: everything is public in Smalltalk, which means that you do not have to add a method to an object to access its instance variables.

Contrary to popular belief, everything is not a lock (in Java java.lang.Object is a lock, making almost everything a lock); keeping the number of methods to a bare minimum in core classes keeps everything simpler and easier to learn. Here is how I believe the core classes should look like:

bare-minimum-object-system.png

So what about all the utility methods you normally find in these classes in both Smalltalk and Java? They belong in utility classes. For example, everything related to regular expressions should live in a separate library. But what about reflection? you ask. You will find the answer in Gilad’s fine paper on mirrors. I believe many of the considerations of the mirror paper apply to software engineering in general.

Fun with Trackpad on Macs

May 30th, 2007

Just found some cool features on my Macbook. The trackpad has a lot of nifty gestures, for example, you can scroll if you use two fingers on the trackpad. An additional cool feature is the zoom function. Hold control down will scrolling and you zoom in on part of the desktop. This is really useful when doing a demo.

To enable this, go to System Preferences and select Keyboard & Mouse. Then select the Trackpad tab.

mac-trackpad-scrolling.png

The zoom feature is also available for desktop Macs (Mac mini, iMac, etc). You can find the preference setting in the Mouse tab. You need a mouse with a scroll wheel or similar.

Outlook Woes

May 22nd, 2007
Today was my second day at Cadence. Besides getting into some good Squeak hacking, I tried reading my corporate email trough Outlook which came preconfigured on my company laptop. I’ll refrain from commenting on this experience and just note that this entry is written from my new Macbook; I simply had to get one. Now, that’s pure sweetness!

Spam Filter Problems

May 19th, 2007
It turns out that some emails to my personal account have been rejected by a too aggressive SPAM filter. That problem is corrected now. If you suspect that I may not have seen your email, please resend.

Moving On

May 18th, 2007
Today is my last day at Sun. It has been a blast. I’m joining Gilad to make a better Smalltalk.

Ruby On Rails Humor

May 16th, 2007
http://railsenvy.com/

What’s in a Name?

May 15th, 2007
Digital-sushi? Most people in the States can’t pronounce my last name and make it sound like a piece of sushi. Thanks to Sarah Gafter and Brian Goetz for coming up with this name.

New Business Card

May 12th, 2007

peter-ahe-bc.gif
Click on the picture for a larger version (and to reveal my e-mail address).