Evergreen Skills for Software Developers

Almost 12 months ago I delivered a talk at DDD Brisbane with my good friend Leon Bambrick because co-presenting is awesome. The “big idea” of the talk is that even though technology is changing more and more quickly there are things you can spend time learning that can last you the rest of your life. If you feel pressured by the pace of change this talk might give you some things to think about. »

On The Merits of Using Standard Parts

When I was much younger I had a european car. Not a fancy, nice, european car, but something that was just…“unusual”. One day the alternator in the car stopped working, and I needed a new one in order for my car to work again. The man from the auto-club shook his head, nodded sagaciously and said that if my car had been a Toyota, Ford or several other more popular brands I could be on my way for a few hundred dollars, because he carried alternators for those makes of cars in the back of his truck. »

I'm Getting Too Old For This JIT - Native Binaries and AOT

One of the things I love about the golang ecosystem is the tools it produces. Dependency-free binaries that start up fast, “just work”, and run with modest (or at least justified) memory requirements. Dotnet on the other had has touted xcopy deployment since its inception, and it works…but only if the .net framework is already installed. And the start-up time can leave a bit to be desired. .Net core itself hasn’t really changed this, but the CoreRT runtime, an open-source . »

Co-Presenting is Awesome

I try to do at least one or two technical presentations each year. The last couple of presentations I’ve done have been co-presentations with Leon Bambrick. I’ve been pretty happy with how these talks have gone, and I think Leon is a great presenter in his own right. But I also believe there are some intrinsic advantages to co-presenting. Less Boring I’m convinced there is a good reason very banal content like the home shopping network and morning television uses two or more co-presenters. »

Terra Incognita and Unknown Unknowns - my OSM rendering journey

How Hard Could It Be? - programmer epitaph Here is a story about some things I learned about open street maps and how map tile rendering works, and some reflections on dealing with the unknown as a developer. The Pride It all started innocently enough. I was investigating the possibility of using OpenStreetMap (OSM) data to render some maps and perform turn-by-turn navigation in an app I was working on. »

Nature Doesn't Architect for Scale and Neither Should You

A persistent feature of science-fiction and fantastical stories from King Kong to Godzilla, to recent films like Rampage is the animal that is suddenly made much larger. Of course in real life it doesn’t quite work this way [1]. For every animal there is an approximately correct size - not optimal, since even within a species there are variations, but most convenient. A large change in size inevitably carries with it a change in form. »

Monitoring Data in a SQL Table with Prometheus and Grafana

Recently I set up a proof-of-concept to add monitoring and alerting on the results of a query against a Microsoft SQL Server database table. I know there are a lot of ways to do this in the SQL server ecosystem, but I wanted to eventually be monitoring and alerting on metrics from many different sources - performance counters, Seq queries, and custom metrics exposed from a number of services. With this heterogeneity in mind I chose prometheus for this, and tacked on Grafana to give me some nice dashboards in the bargain. »

Product Documentation with Wyam

I recently wanted to add documentation and a product blog to an existing asp.net application, and rather than build out a full data model to support this I decided I’d go with the static file generation route. Although I’d had good experiences with Hugo, which I used to generate this blog I decided to go with Wyam because its “docs” recipe was close to what I wanted. Although the Wyam docs suggested I could create a custom theme and then package it up via nuget, the path of least resistance turned out to be just copying the files I wanted to change from the existing Samson theme into the input folder (where your content goes) and changing them there. »

Edge Cases Will Kill You

Distributed systems can fail in lots of different ways. Messages not received, messages sent multiple times, messages received out of order, and concurrency issues arising from different parts of the system receiving or not receiving related messages in the right order, or at the right time. Network partitions force you to decide between consistency and availability. Good architecture and technology stacks can shield us from a lot of these problems, however if you start picking away at the edges you can invariably find problems that can still arise in complex distributed systems. »

Lessons from the Skunk Works

Lockheed-Martin’s Skunk Works has a hallowed place in the annals of engineering. Established in 1943 near a plastics factory in Burbank, California as a secretive, elite engineering group they built the first jet fighter for the United States, the P-80. Led by Kelly Johnson their chief engineer they completed this amazing feat in 143 days from the start of the design process to the first production model flying, under the severe resource and personnel shortages you would expect in a nation at war. »