general

New Blog, New Home

January 16, 2013 10:13:55.500

Greetings!  It's been a long while since I posted here, so I'm not sure how many of you are still paying attention.

I have decided to resume blogging, and I want to write about a wider variety of software topics than just Smalltalk, so I have decided to launch a new blog instead of continuing here.  I will still be writing about Smalltalk, because I still use it every day.  But I'm also learning Ruby and I continue to use C++, so I'll be writing about those as well.

My new blog is called Courageous Software, and I'd love to have you join me over there.  This blog will stay online as long as Cincom keeps this site up, but I will not be posting here any more.

You can also follow me on Twitter, and I'm starting to use GitHub.

tools

Before and after: Cairo/Pango

October 2, 2009 17:28:49.304

I work at a company called Key Technology, where I develop control software for automated inspection equipment.  Our UI is written in VisualWorks.

Over the past couple of releases of our main software product, we've been slowly converting to use Cairo and Pango for the graphics and text.  We're not completely done, but we're far enough along that I thought it would be worth showing some before and after pictures.  Without further ado, here they are.  Click on the small images for full-size versions (1280x1024).

First is a configuration page that is used on one of our systems.  We redesigned the look of the buttons and the list widget using Cairo, and used Pango for all of the text.

Before:

Old CIP configuration page

After:

New CIP configuration page

Next is a settings page, along with the main tab strip for the various pages in the system. We had some icon redesign done and redesigned the number editing widget.  Most of the widgets are now drawn with Cairo, and you can see the antialiasing the results.  If you look closely, you'll notice that the little black bubble in the middle of the "brightness slider" is still drawn the old way.

Before:

Old parameters page

After:

New parameters page

tools

Explicit Prerequisites in VW 7.7

August 10, 2009 12:23:10.366

Some time ago, I wrote about some enhancements I'd made to the NewPrerequisiteEngine package.  These enhancements allowed you to mark prerequisites as either Ignored or Explicit.

In the forthcoming VisualWorks 7.7, the prerequisite tool has been enhanced quite significantly, adopting much of what was accomplished by NewPrerequisiteEngine.  I think the new tool is a huge improvement over what was there before.

The concept of an Ignored prerequisite was included in the new tool (now called "Disregarded").  However, the concept of an Explicit prerequisite was not carried forward. 

In our work, we find that it is important to distinguish between prerequisites that we know are required, even if the tool can't find a reason, and prerequisites that used to be required, but no longer are.  We have a set of tests that we run on our code.  One of these tests checks to make sure that the prerequisites on all of our packages are up-to-date.  That is, that what is specified matches what the tool computes.  Without the concept of an explicit prerequisite, we can't keep this test passing.

To that end, I've just published ExplicitPrerequisites to the public repository.  Under the hood, it uses the same storage format as NewPrerequisiteEngine (a property on the CodeComponent) so it is backwards-compatible.  The package adds a toggle menu item to any current prerequisites, along with some modifications to the status icon to allow a direct-manipulation interface.  Clicking on the "no reasons" icon will mark the prerequisite as explicit; clicking on the "explicit" icon, will un-mark it.

In order to add the new icon and clicking behavior, I had to override one method from the base tool.

Feel free to try it out and let me know what you think.

books

Book review: Dealers of Lightning

March 13, 2009 14:44:30.071

I just read a fascinating book about the history of Xerox PARC from when it was started until the late '80s.  As most Smalltalkers know, this is where Smalltalk originated (along with a number of other technologies we take for granted today, like laser printers and ethernet, to name a few).

Michael Hiltzik's Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age is a fascinating look at the people of Xerox PARC and what they were able to accomplish.

I found myself amazed, inspired, and sometimes wistful for what could have been while reading the book.  The author concludes with an interesting epilogue discussing the popular conception that Xerox had all this technology and let it all slip away to others (Steve Jobs and Apple being one of the main beneficiaries).

 

STS

Fit presentation posted

September 26, 2008 17:32:14.012

The video of the first part of my Fit presentation at Smalltalk Solutions has been posted here.

tools

Sample Views

September 12, 2008 18:16:37.861

At Key, we've used a family of extension methods on VisualComponent for a long time.  Travis Griggs urged me to split them out and publish them to the public repository so that others (likely him :-)) can make use of them.  They are in the package SampleView.

What SampleView allows you to do is open an ApplicationWindow that displays any VisualComponent in it.

The main API is sampleView: anExtent named: aString, but there are variants that allow both of these parameters to take on default values.

An example usage:

(Label with: 'Hello World!') sampleView: 400@50 named: 'This is a sample view'

This opens a window that is 400 wide by 50 tall; the title bar reads 'This is a sample view' and the main part of the window displays the label.

We find these methods extremely handy for testing small parts of our UI in isolation.  We'll often have an example method on the class side that sets up some state in the VisualComponent, and then displays it in a sample view.

STS

CruiseControl presentation posted

August 29, 2008 18:23:01.077

The audio and video recordings of my CruiseControl presentation at Smalltalk Solutions have been posted.

Audio is here.  Video is here.

fit

Smalltalk Fit on fitnesse.info

July 8, 2008 3:25:34.587

One of the tools that I've worked on (and still maintain) is the VW Smalltalk port of Fit, Fitnesse, and FitLibrary.  I've presented on this work at Smalltalk Solutions in 2006 and 2008, but haven't really written about it here.  That will change when I get more time.

For now, I've added some information about the Smalltalk version of Fit et al at www.fitnesse.info, which is a community wiki that was set up to discuss Fit and Fitnesse.  I've also added the necessary example code for the Fixture Gallery that is available from the same site.  The code is shown in classic fileout format in the documentation. 

If you grab the downloadable version, there is a 7.6 runtime image plus parcel files for running the examples (you'll need to edit the SmalltalkExamples page to point to the correct VM for your platform).  In addition, the code is available in the public repository as FixtureGallery-DomainCode and FixtureGallery-Fixtures (which are also part of FitBundle).

If you want to get started with Fit, Fitnesse, and/or FitLibrary in VW Smalltalk, the best place to start are the package comments for Fit and Fit-Subsystems.  I do plan to provide a more thorough introduction here, but that'll have to wait until I can finish some other projects.

Thanks to Gojko Adzic for allowing me to add the Smalltalk code and information to the site.