May 06


Jason on what the software industry is missing.

May 06

Smell to Refactoring Cheat Sheet

Nice overview of code smells and what to do about them: Smell to Refactoring Cheat Sheet.
(Via William C. Wake)

May 06

Coercing Your Developer

Here’s a good one: Coercing Your Developer.

May 06

The Smalltalk Browser

Andy Dent on Object Master & the classic beauty of the Smalltalk Browser.
That’s something I crave: Having a Smalltalk 3-pane browser to edit C++ code – like Object Master. Occasionally, I spent some time googling for one, but it looks like there’s nothing like that out there.

May 06


Here‘s an excellent post by Jonathan Pickup on the need for a solid foundation to successfully complete advanced projects.
I would like to add that you will need to work on your foundation, the basic skill set of your profession every day. It’s one of most important things you can do.

May 06

Martin Luther King, Jr.: I Have a Dream

If Christoph blogs, you can count on him blogging something deeply relevant: Martin Luther King, Jr.: I Have a Dream.
Even though the speech was delivered more than 40 years ago, it’s still relevant today.
Back to our regular scheduled programming.

May 06

Why face-to-face still matters

Another excellent post from Creating Passionate Users.

May 06

Wrapping (procedural) APIs

Why wrap a (procedural) API of a third-party library / host application – instead of using the API straight away? Here are some reasons plus some simple techniques to accomplish just that:
* Wrapping the API makes unit testing much easier because you can mock your own classes instead of mocking the API itself (which tends to have more dependencies)
* Creating your wrapper may actually deepen your understanding of the API
* You may be able to tie up a few loose ends in the API (e.g. mix of deprecated and new API functions to accomplish a task)
* Creating your wrapper may simplify the API (witness the change from AddPopupItem() to AppendPopupItem() in the sample provided below
Here are some simple techniques for wrapping:
* Save on parameters – Instead of using AddPopupItem(..., long dialogID, short popupID, short insertAfterEntry, String entry) you could use MyAppendPopupItem(long dialogID, short popupID, String entry) – not a substantial improvement, but if combined with the next techniques quite powerful…
* Transmogrify the API into an object-oriented API – Use myDialog.AppendPopupItem(short popupID, String entry) instead
* Make it even more object-oriented – Use myPopup.Append(String entry) instead
There are a number of arguments against wrapping an API – but at the end of the day, I’m quite firmly in the “Wrap it” camp.

May 06

Illusion of agreement

Here’s a great one from the 37signals blog: Illusion of agreement.

May 06

On setters, constructors and modelling reality

Darren Hobbs:

…just because all the fields (of a class) are final and there are no setters, this doesn’t mean that the object is immutable.