sdkman: the Software Development Kit Manager

This is a quick note about a very cool tool for installing development tools for Java/Groovy/Kotlin/Scala, and more, on linux/unix systems. For those familiar with the nodejs management tool nvm, sdkman provides similar features for other languages.

Cluster Locks and Outbox Patterns

Book Review: Fundamentals of Software Architecture

Various New Articles on Software Architecture

This year is going to be a very busy one for personal reasons (all good). I have therefore (with some sadness) resigned from my current place of employment and am taking some time off. That wasn’t easy to do, as the company, people, and work were all great.

However this has given me more free time recently to catch up on writing articles for this site; some new and some which have been half-completed for a very long time. These latest articles are:

Artificial Intelligence According to John Oliver

Comedian/journalist John Oliver has posted the best introduction to artificial intelligence (ChatGPT and relatives) that I know of. If you’re looking to explain to anyone what AI is, and what the pros/cons are, I can strongly recommend this Youtube video. Well, assuming they don’t mind a few rather rude words..


My employer has kindly agreed to publish a small project developed by myself as open-source.

jdbc-audit-proxy is a server and matching JDBC driver which forwards JDBC calls from any JDBC-enabled client application (eg Squirrel, DBeaver, IntelliJ) to any relational database. It is intended for a specific purpose: to give developers and support staff access to privacy-sensitive databases when needed while keeping an audit-trail to detect abuse and to (hopefully) be compliant with laws such as the European GDPR. It also resolves issues related to login credentials for the target database, and to network accessibility of the database(s).

This project is in use in a production environment. However it is not being actively maintained on github; you are welcome to use it but please don’t expect support.

Some Thoughts on Software Architecture

Well, it’s been quite a while since the last post here. This isn’t because I’ve had nothing to say - in fact quite the opposite, I’ve been very busy. I do have some free time coming up and will hopefully post a series of articles in the next few months.

To start with, I’ve written an article on Thoughts on the Role of Software Architect. In it, I discuss the wide range of responsibilities of a “software architect” at my current employer.

I also wrote a few architecture-centric blog-articles for my employer’s tech blog regarding team structure (STOSA) and an approach to distributing data throughout a microsystem architecture (distributed read models):

Disabling the Tracker Service in the GNOME Desktop

The GNOME desktop environment includes a background task that tracks all file changes and indexes them so file-searches from the GNOME file browser can be fast. However this service does consume quite a lot of IO and CPU resources, particularly for software developers due to the way we use tools that generate large numbers of files. I don’t use desktop-search, and disabling it has made my development system far more responsive. Here are the steps needed to disable tracker (thanks primarily to this tip from site Linux Uprising):

systemctl --user mask \
  tracker-store.service tracker-miner-fs.service \
  tracker-miner-rss.service tracker-extract.service \
  tracker-miner-apps.service tracker-writeback.service
tracker reset --hard

# and check
tracker status  # should report "is masked"
tracker daemon  # should report "unavailable/not running"

Supposedly, within the GNOME Settings tool, going to “Search” and turning it off completely (in the window headerbar) will also disable it, but some people have found this doesn’t work.