Goodbye James

Posted by steve | Smalltalk | Tuesday 22 April 2014 4:09 am

I was saddened to read receently that James Robertson passed away suddenly. He was a torch bearer in the Smalltalk community. I crossed paths with him several times while at ParcPlace-Digitalk. He was an incredible and outspoken advocate. Gone too soon.


Part of my Squeak Tutorial was translated to Serbo-Croatian

Posted by steve | Smalltalk | Wednesday 15 May 2013 8:58 pm

Here’s the link to the translated page: Squeak Tutorial page translated to Serbo-Croatian.

I added a note to the page explaining what happened and why. Pretty neat.


Laser Table Game on the App Store

Posted by steve | Apple Software and Hardware,Mobile Phones,Smalltalk | Monday 4 July 2011 10:10 am

I decided last Fall to take a crack at writing an App for the iPhone and iPad to be included in the App Store. Using my Laser Game published as a tutorial for Squeak as a starting point, I rewrote the App using Objective-C. The idea was to keep as much of the initial design and Smalltalk object models as possible.

Now I had seen Objective-C many years ago, 1993 I think it was, when I was investigating NeXT Step on Intel computers. And I knew it was a “cousin” to Smalltalk, having been launched by Brad Cox as an attempt to make Smalltalk-like programming on top of C. That may just be a poorly formed opinion of my own about Objective-C’s roots. I had not programmed in C since maybe the late ’80s.

So with a few books and tutorials on learning Objective-C in hand I dove in. At first, not unexpectedly, I was very frustrated with the tools and libraries because of a lack of familiarity. On the other hand, I can see why there’s developer loyalty about Objective-C. It is actually enjoyable coding once you get use to things.

Okay, long story short, I’ve published my App in June 2011 after many interruptions and typical other distractions — including being very busy at my regular Smalltalk professional work. After that initial hurdle of getting the first App finished and published, it’s been quite enjoyable to add new features and also polish up the code. As I’ve gotten smarter about coding in Objective-C I’ve been changing the implementation, refactoring and replacing code here and there.

Without any real attempt at marketing the App, I’ve had some success in sales. That was a real surprise. My purpose was to gain the experience of writing an App for the iPhone and iPad and to have something to point to as a “notch on my resume” for technical skills. It didn’t matter to me at all if the game sold. But I am delighted to see people have been downloading it and playing the game. In fact, what’s really cool is that people all over the world have downloaded and installed my Laser Game App. Apple makes publication of Apps worldwide very easy to do.

I just submitted Version 1.2 to Apple for approval. Considering the Fourth of July holiday I suspect it will be approved around mid-to-late-week coming up. The V1.2 update is a significant improvement over the previous designs. I feel like I’m just starting to get on a roll here.

The App has it’s own web page for news and support. I recently published some screenshots showing how the new release appears.

All in all, I really prefer working in Smalltalk and am much faster at developing there than in Objective-C. And that’s to be expected since I’ve been doing Object Oriented work with Smalltalk since the late ’80s. But I can say that developing for the iPhone and iPad with Objective-C is quite enjoyable and I hope to keep getting better. Also, it really is cool having my own App running on my iPhone and iPad.

More to come, I’m sure.


Google Buys Instantiations

Posted by steve | Smalltalk | Wednesday 4 August 2010 10:01 pm

Just read this evening that Google purchased Instantiations. Here is the Instantiations web site with an official report.

Wow. Of course I know the Instantiations folks really well, having worked with many of them for years and I congratulate them. I’m guessing that Google was mostly interested in their Java tools, but I have to wonder if they appreciate the Visual Age Smalltalk product that Instantiations also produces. That’s some formidable team and product line they purchased and I wish Eric and the rest great success going forward.

UPDATE: I have part of this wrong. Google purchased the Java tools. Instantiations will remain as a Smalltalk only company.


Cincom Smalltalk

Posted by steve | Smalltalk | Monday 5 April 2010 8:22 pm

While I’m busy posting about Smalltalk….

Something very interesting happened to me today.  One of the developers I work with came to me and explained that he downloaded and tried Cincom Smalltalk over the weekend.  He’s already familiar with Smalltalk since we use Visual Age Smalltalk everyday, and he knows I’m also a Squeak advocate.

It was funny to me when he mentioned how impressed he was with the professional quality of the product.  My first reaction was to think “of course it is”.  Then I commented that I think VisualWorks (or whatever they are really calling it nowadays) is one of the finest Smalltalk products on the market.  No, I’m not putting in a plug for Cincom and I don’t owe them any favors.  I used to work with VisualWorks years ago and came to appreciate how well crafted that dialect of Smalltalk is.

I often write here about Squeak but then realized that I’ve never said much about VisualWorks or Visual Age, the 2 leading commercial professional Smalltalk products available today.  They really deserve a look.

Here’s the link for Cincom Smalltalk: Cincom Smalltalk. They offer a non-commercial license and you will find a rich family of experienced VisualWorks developers available in the community.


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.


The passionate programmer

Posted by steve | Smalltalk | Monday 26 October 2009 3:29 am

I was thinking about how you can tell if someone is really interested in something. Sometimes you will hear it described as being passionate. “He is passionate about musicianship”, for example.

Dictionary time. Passionate: having, compelled by, or ruled by intense emotion or strong feeling.

It has been my observation that being talented is not what it takes to be exceptional about something. It’s passion. The lexicon of those individuals who have created products, companies, or content, seem to always include that those individuals were passionate about it.

To follow the musicianship idea, the outstanding examples of musicians you can think of are probably all individuals who are passionate about their craft. Somewhere in the equation we probably assume that genius or innate natural talent is also required. I believe that passion in a subject also drives someone to a high level of focus and detail. A passionate guitar player will never have to be reminded to practice their craft to become better musicians. Passion can also make up for genius. Although I think talent, is required.

If someone is passionate about something they think about it a lot. Morning, noon and night. Perhaps the passionate amongst us are even seen as “unbalanced”.

If you are interested in creating an excellent orchestra you would think a lot about having passionate musicians included. Your First Viloin is probably going to be someone with a lot of passion about playing the violin. You don’t have to remind them to practice.

I’ll bet your First Violinist is not a “9 to 5” musician. Doing only what it takes to complete the work. They are probably not in it just for the money either. We’ve all met those folks.

To carry the orchestra metaphor along, a successful orchestra has the full range of musicians. People will demonstrate different levels of passion about their craft. It doesn’t work if all your Violinists are First Violin. Everyone should be passionate, but they also need to play well together. In an orchestra a skilled musician is listening to what the others are doing while playing their own instrument. They both know and can hear where they fit in.

Obviously I’m also writing about software development teams. The metaphor works.

I think it works when you interview someone to join your little software development orchestra. I pay attention to the level of passion the individual demonstrates. Do they practice their craft after hours? Do they read, write, and talk about their craft all the time?


Updated the LaserGame Squeak tutorial

Posted by steve | Smalltalk | Sunday 18 October 2009 2:08 pm

I continue to receive emails from students new to learning programing, object oriented development, Smalltalk and Squeak, as they go through my tutorial LaserGame.

Recently I was reminded again that I misunderstood my target audience when I wrote that tutorial.  My original goal was that this would be a process showing development through-to-completion of a delivered application all written in Squeak using Test Drive Development and generally sound everyday development practices.  And I thought the tutorial would be utilized by students having already learned the basics.  That turned out to be way off base.  I get letters all the time from complete newbies telling me thank you.

And earlier this week I was asked by one of these less experienced students about how I did what I thought was a very basic step in the process.  But of course, someone new wouldn’t know that.  My mistake.  So I just published another update with a clarification in that section.  I’m so grateful for the positive feedback that I get.

Here’s the updated page:

I’ve made a lot of noise about doing a complete rewrite of the tutorial, in the past.  Yes, I have not completed that work.  First there were health concerns interrupting my work, then some health issues within the family.  Lately it’s just been too many other projects.  It’s amazing that I was able to carve out a clean free-time space and create that tutorial in 2007 like I did.  I think the whole thing was written and published over 4 weekends during that summer.

When I get back to the project I have several new goals in mind.  First off the tutorial will account for the inexperienced motivated student.  I’ll have more detailed notes and examples.  I’ve already started rewriting much of those parts.  I’m also uncomfortable that I gloss over some design considerations in a few places and want to amplify upon that work.  I’m also intending to make the tutorial available in book form, probably through  Two other goals are worth mentioning.  I intend to have a version of the tutorial support the new dialect of Squeak called Pharo.  That actually complicates things considerably since the tutorial relies heavily on screenshots and the two dialect look so different.  I’m guessing I’ll have to create some of the Morphic objects that LaserGame uses but do not exist in Pharo too.  Lastly, I think the tutorial could easily be extended to take the student as far as making Laser Game an iPhone app.  That would increase the audience for Smalltalk development too.


Design Review while sleeping

Posted by steve | Smalltalk | Friday 4 September 2009 2:05 am

This is a comment for fellow software developers. Has this ever happened to you?

I just awoke at about 3:00 AM from a sound sleep with a single thought: “I should have used an IdentityDictionary object.”

Yesterday I completed an activity at work that concluded several days of redesign and code refactoring. I deleted quite a bit of code and unified how some basic operations were performed. And I just realized that one of my new core operations was always using Symbols when accessing a Dictionary.

I know what I’m doing first-thing when I get into the office this morning.


Squeak in the news

Posted by steve | Smalltalk | Saturday 29 August 2009 2:30 pm

Here is a report of how the US Navy is using a 3D simulation environment, written in Squeak, to evaluate submarine console designs.

Next Page »