Hi!

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

21 minute read

If you are self-hosting, then you should probably have a public domain registered. In this article, we’ll look at why you should do this, and the things that it helps.

23 minute read

Everything you need to know about DNS if you are self-hosting. How to use Technitium to host a private DNS server in your homelab.

14 minute read

The final installment of a 3 part series describing how to set up whole-home audio using SnapCast, Mopidy and Rasberry Pi’s. In this article, we look at how to install and configure Mopidy as a streaming service, and how to connect it to a SnapCast server.

14 minute read

Part 2 of a 3 part series describing how to set up whole-home audio using SnapCast, Mopidy and Rasberry Pi’s. In this article, we look at how to configure a Raspberry Pi Zero as a SnapCast client.

24 minute read

ObservableList extractors allow you to track changes to elements inside your ObservableLists.

48 minute read

I’ve talked a lot about how coded layouts are better than FXML. In this article we take a fairly large FXML based layout which is part of a larger project, convert it to code, and implement a framework using a Reactive design. Is the final result better than FXML? See for yourself.