Solving the puzzles posed by a broken, corroded mechanical gizmo found by sponge divers in the waters off a small Greek island might seem, at first thought, unrelated to the problems of debugging a software service or improving the user experience of a new mobile app. But, as Alexander Jones in A Portable Cosmos (Oxford University Press, 2017) recounts the researches into what is now called the Antikythera Mechanism, discovered in 1900 as part of the cargo of a shipwreck, some surprising parallels with current software development practices come into view.

Fragment A of the Antikythera Mechanism. Source: Wikimedia Commons. License: CC BY-SA 3.0.

Ever since the bronze fragments of the Mechanism were…


I’m working on a smallish project to build service endpoints in PHP using the Slim framework. (We’ve used other frameworks in the past but have recently begun to converge on Slim as our go-to because it is lightweight but supports the PSR-7 HTTP message interface standard, which is a requirement for interoperability with several other libraries we use. As part of this work, I also recently converted my model code to a PSR-4 autoloader.)

The Slim documentation makes it abundantly clear that Response objects are immutable: each method that accepts a Response as an argument returns a copy of that…


Last year, the team working on improving NPR’s Content Management System (CMS), called Seamus, built its first application using the Apache Struts 2 framework. It was actually a migration from a Struts 1 application, so we had a substantial suite of actions that were already coded, organized into modules. The Struts 2 package concept handles our modules well.

We have standard logic that we want to execute for the invocation of any action (authentication, logging, timing, etc.), so we recoded our Struts 1 filters as interceptors.

Then there is exception handling. It took me several readings of the documentation and…

David Gorsline

Citizen. Opinions expressed here are mine alone.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store