Of late I find myself in rather a strange place.

What I work on pretty much follows whatever my present employer currently needs. I’ve done pretty much everything - from device drivers to fancy web applications - and by this time have touched pretty much every major genre in programming. My starting interest in software came from the rise of personal computers (beginning with the Intel 8008 and contemporaries), and a very strong belief in graphical user interfaces (take SmallTalk as an early example).

Right. The current generations of programmers cannot imagine a time before small computers. The fact that there was once a time when graphical user interfaces were revolutionary is similarly inconcievable.

This long base of experience has an advantage. I can remember the original rationale for what now has become programming dogma. In some cases, what is now convention no longer makes sense.

After spending a few years pushing the envelope on web applications, of late I found myself sucked back into the realm of desktop (mostly) GUI applications written in Java. Not entirely a bad thing as I was curious what progress had been made in this area.

The Java library folk had an advantage in that when they started the Windows and Apple Mac programming domains for the construction of GUI applications were fairly well understood. At the same time they had the disadvantage of relative inexperience - the folk working on the Java libraries were young, and had not fully learned the lessons well-known to experienced Windows and Mac developers. That lack made them prone to a particular collection of mistakes.

In balance, you have to add in the fact that writing a cross-platform GUI (Windows, Mac, X-Windows) is difficult. To find an implementation path that does not over-serve any particular platform is … a lot more than tricky.

At the same time there are old ideas about what counts as good design - in contrast to common practice - that remain outside most-common practice.

How should I evaluate this?

Over the last several months I’ve taken a badly written Java desktop GUI application, and re-written a huge fraction to remove problems. Along the way I found missing bits in the Swing classes - or that I think are missing - and am coding notions that are 10 or 20 years old. Maybe I’m missing something. Maybe not.