MichaelOldroyd.co.uk

Designing robust and predictable APIs with idempotency

Networks are unreliable. We’ve all experienced trouble connecting to Wi-Fi, or had a phone call drop on us abruptly. The networks connecting our servers are, on average, more reliable than consumer-level last miles like cellular or home ISPs, but given enough information moving across the wire, they’re still going to fail in exotic ways. Outages, routing problems, and other intermittent failures may be statistically unusual on the whole, but still bound to be happening all the time at some ambient background rate. To overcome this sort of inherently unreliable environment, it’s important to design APIs and clients that will be robust in the event of failure, and will predictably bring a complex integration to a consistent state despite them. Let’s take a look at a few ways to do that.

Handling local certificates with mkcert

Automating Server Setup with Ansible

There’s no doubt that building a web server from scratch is a great learning experience, and one that I recommend all WordPress developers undertake. Doing so will give you a greater understanding of the various components required to serve a website, not just the code you write. It can also broaden your knowledge on wider …

An introduction to immutable infrastructure

Why you should stop managing infrastructure and start really programming it.

Docker error starting userland proxy

Expected behavior Actual behavior Information Diagnostic ID from "Diagnose & Feedback" in the menu. a reproducible case if this is a bug, Dockerfiles FTW page URL if this is a docs issue or the na...

Understanding The Tomcat Classpath

Understanding The Tomcat Classpath - Common Problems And How To Fix Them  A common question that pops up on lots of Apache Tomcat user forums is how to configure Tomcat's classpath to include this or that JAR file that is needed by a web application. Like many of the issues that trouble new Tomcat users, this problem is usually quite easy to fix - so easy that it's hard for users to understand the solution, because the documentation assumes that people will always pick the easiest way of doing things.

Redirect stdout from child processes to supervisord

Learn how to configure supervisord such that it redirects stdout of its child processes to its own stdout.

Maven Versioning Strategy

Envoy: C++ L7 proxy and communication bus

Field Dependency Injection Considered Harmful

Field injection is a popular practice in Dependency Injection frameworks. But It has serious tradeoffs and should be generally avoided.