What I love about Squeak and what I …

Posted by steve | Smalltalk | Monday 5 April 2010 7:55 pm

I’m a long time developer with Squeak. And I’ve seen a lot of the changes and how it has morphed over time. Literally. Remember when everyone using Squeak used MVC? I’ve made a number of contributions over the past 13 years or so to Squeak. So make no mistake about it. I love Smalltalk, I love Squeak and working with Squeak.

This entry is about something that I both love about Squeak and occasionally get frustrated about.

There are about 3 or 4 (but who’s counting?) personal on-going projects I’m developing with Squeak. Over the weekend I was working on one of those projects. And I noticed how frustrating the behavior of the system browsers are when resizing the panes. Here’s what I mean.

This is the standard Squeak system browser when it’s first opened up. Click on the image to see it full size.

Basic System Browser when opened

The browser is highly functional in its current presentation. You may have noticed that I use the Optional Buttons and Annotations Pane for my browsers when I work.

It’s all fine until you resize the browser window. Here’s how it appears when you make it really tall.

Again, click on the image to see it full size.

Standard System Browser made tall

Notice what happened to the Class/Instance switch? Stretched out. And those Optional Buttons and Annotation Pane? Same thing.

It gets especially interesting when you want to shrink it down to something taking up less space on your desktop. Click on the image to see it full size.

System Browser when squeezed

I’m not sure how or when this happened, but I’m 100% certain there were versions of Squeak older than this that didn’t behave this way with code browsers. I remember working with Scott Wallace on the Optional Buttons and Annotations Pane layouts in earlier Squeak browsers maybe 9 to 10 years ago.

Now, I’m not frustrated that this is happening. No, no. Well, maybe a little. It does seem like we get pretty good at “chewing the same meat twice.”

But in fact this leads me to one of the things I really love about programing in Squeak, or any Smalltalk for that matter.

It’s easy to fix.

I spent a couple of hours over the weekend digging around inside the classes that constitute the System Browser and its related components, and created my own version that behaves like this.

Here’s my new System Browser when first opened up. Click on the image to see it full size.

Modified System Browser when first opened

Notice that it looks the same as the original did. I actually think it looks a little “tighter”, with less space, around the optional buttons and annotations pane.

Here’s how it works now when stretched really tall. Click on the image to see it full size.

Modified System Browser stretched tall

The buttons, all of them, stay the same size. This remains true for the annotations pane as well.

And here’s how it works when squeezed. Again, click on the image to see it full size.

Modified System Browser when squeezed

Same result. The buttons remain the same size, and even better, you can still read them.

So that was fun and rewarding in its own way. That’s one of the things I love about Squeak. But alas, this is also one of my frustrations.

I find myself getting distracted by this sort of thing all the time. Instead of working on the task at hand, I find new “interesting” diversions. Sure these have value and it’s always good to dig around inside Squeak to learn how it works under the covers now and then.

As an aside, that’s one of the things I have come to admire about Smalltalk developers that have spent a lot of time with Squeak. Historically, there’s been no documentation to speak about. Books and tutorials have appeared only recently. Well, there were Mark Guzdial’s excellent Squeak books years ago, but for the most part you had to figure things out on your own. You had to learn to read the code and dig things out to understand. Skilled Squeak programmers end up being good at understanding and extending other complex Smalltalk systems and applications.

What I would like to say is that I love how Squeak is open under the covers, and so easy to explore and extend. All the Smalltalk tools do that. But I’m also aware of how these little annoying behaviors about Squeak have more that just a few times caused me to become diverted by yet again another tools enhancement run. The temptation to personalize it, which is exactly what I think Alan Key and Dan Ingalls had in mind, can be great enough to the point of distraction. You just have to remember that.

Comments and feedback on my personal BLOG are welcome.



  1. Comment by Dave — April 6, 2010 @ 4:31 am

    It’s “its” :p

    Other than that, I totally agree–it’s one of the things I miss most when I’m working in Java IDEs: the ability to tweak and tinker.

  2. Comment by steve — April 6, 2010 @ 9:55 am

    Thanks. I went back and corrected those. I think.

  3. Comment by Frank Shearar — April 6, 2010 @ 6:34 am

    It’s funny I should read this today, because Bernhard Pieber and myself have been fixing exactly this issue recently in Squeak 4.1 alpha.

    The browser buttons now have constant sizes. Unless Bernhard & I have missed a place or two… but certainly the Browser, MessageNames, HierarchyBrowsers have been updated.

  4. Comment by steve — April 6, 2010 @ 9:59 am

    Glad to read that news.

    Working through this little exercise demonstrated how messy the design behind these tools are. The fixes required, at least in version 3.9, were all over the place. A continual refactoring exercise would still help.

    I found that getting the implementers/senders browsers to work took a lot more effort than expected. Also, I hadn’t bothered updating the Montecello Browsers in my work.

    Guess this means I’ll be updating to Squeak 4.1 soon.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.