Java Swing/Desktop Applications
Although there has been much well-deserved excitement about so-called 'Web 2.0' applications in recent years, most computer software still has a traditional desktop interface.
My earliest development experiences were the same as most 1980s wiz kids: messing around with BASIC. When I discovered QuickBASIC, I found the benefits of its improved structure, and as I learned more of these concepts at university, I moved to Graphical User Interfaces via Visual Basic. Although I worked with VB through much of the 1990s, it still felt like a hacked version of BASIC, and I was never happy with the reliability of the IDE. So I also developed user interfaces in other languages, including C++, Delphi, and even standard C. Java impressed me the most, and when Swing started catching on, I focused my career on that.
Asynchronous Programming and Hardware Control Software
When I wrote my first hardware interface in the mid-1990s, the idea of controlling a large and expensive medical machine from a desktop computer was a novelty. But as users have become more familiar with keyboard-and-mouse interfaces, this type of hardware controller has become the norm. This struck me most in 2003, when Sarwaja Timur in Malaysia asked me to write a Windows-based GUI for a control application I had written in C 10 years earlier. The software controlled industrial hydraulics that performed stress tests on power transmission towers, and monitored the load. For the displayed data to be kept up-to-date and the machinery to react quickly to user events and emergencies, it was absolutely essential to understand Swing's event dispatch model. These skills were also necessary in my more recent contract at Applied Biosystems in Silicon Valley, where I wrote control software for a biotech instrument.
Custom Components
Applied Biosystems had an additional requirement: the GUI had to look spiffy. So I worked with graphic designers to develop custom buttons and other widgets whose function were clear, but stood out from the competition. My Java Swing and Java 2D skills loaned themselves very well to this task, as the first two images below show. You can click the images for full-size screenshots.
Contrast this from the third image, from ontology software I wrote for Cemantica. This had a different requirement: to integrate seamlessly with the Windows desktop, even when the desktop had an unusual color scheme as shown.
Other Tricks
Another much-sort requirement I can fulfill is implementing Swing's drag and drop interface. This was needed for Cemantica's ontology mapper software (dragging elements between trees and creating connections between them) and of cosmetic benefit at Sarwaja Timur. And as mentioned in my sections on internationalization and accessibility, my UIs always accommodate different locales and people with disabilities.