My name is Dave and I've been a professional programmer for all of my adult life, with my first real programming job back in 1985. Which means I've been doing this for a long time, or at least it seems that way to me.

Very early in my career, I noticed that lots of IT departments struggle to succeed at software development.

It's one of the most difficult things any company can try to do because software development is almost always about exploration, investigation, innovation and learning as you go. Users rarely know what they want, certainly don't know what is possible, and have trouble visualizing how software will work before it is delivered. Programmers, for their part, often have limited understanding of the business and are usually expected to leverage new technologies they've never used before to build working solutions.

For the past 35 years I've spent a lot of time thinking about how we think about building systems.

This website is a place for me to share what I've learned about not just programming, but the entire lifecyle of business applications - from the initial idea to satisfy a business need, right through development and maintenance, to the inevitable day when it's time to replace it with something newer and better.

Since about 2014, I've spent a large amount of my professional time developing desktop applications in JavaFX. There is a surprising lack on the web right now of high quality information about how to use JavaFX properly, and I'm hoping that my articles on this website about JavaFX will fill that hole.

Recent posts

13 minute read

Taking a look at the three most common design patterns for building systems with user interfaces. How are they different? Which one is best? Is there anything better?

19 minute read

“Hey you jobs! Get off my FXAT!” Learn how to deal with the JavaFX Application Thread - How to get your background jobs onto their own threads the right way, and how process the results back on the FXAT.

13 minute read

Custom binding classes aren’t used that often, but understanding them is the key to understanding how to use the Bindings library builder methods.

15 minute read

The best way to structure an application is to separate the presentation of your data from the logic of your application. That can be hard to do. But not if you take an approach where you configure your screen elements, put them in the layout and then discard any reference to them.

9 minute read

A look at how Optional works, and how it isn’t really about Null values - at least not if you were doing it right before Optional.

16 minute read

Another game based project. This time to see how to build an application with the main UI made of a “hex map”, commonly used in war gaming and RPG’s.