The Helpful Web - How AI will bring the next evolution of accessibility

Better buttons, cleaner HTML markup, stricter adherence to WCAG - we’ve been investing in digital accessibility for over twenty years, and that investment has opened doors for millions of people worldwide. We are nearing a plateau. I believe that the next order-of-magnitude gain in accessibility won’t come from ever-tighter contrast ratios or perfection in semantic HTML. We’ve reached the point of diminishing returns. We might build current best practice levels of accessibility faster and more effectively with better technology. Still, we are bound in our current approach to accessibility by the interfaces we ship. The next leap in accessibility cannot come from better execution of traditional interfaces; it can only come from changing the interface. Changing the interfaces means making them adaptive. Making them personal and responsive in ways that statically designed software can never achieve. ...

October 13, 2025 · 17 min · Alex

Introducing the QUERY HTTP Verb

Introducing QUERY The IETF has published a document detailing the QUERY verb. The Query verb neatly solves the problem of asking APIs for LOTS of data or conditional data. In other words, QUERY enables API providers to provide a means for clients to ask the server about data, where the client isn’t sure what data is available. A worked example Working in Agri-tech, I often want to find out information about animals. Unfortunately, that information can live across many systems, with many identifiers (primary keys or other). In one context I’ve experienced, Dairy Animals can be identified and referenced by five or more different identifiers - so what do you do if you don’t know all of them? ...

November 25, 2021 · 7 min · Alex

SQL Joins with Sequelize

While working on an API for my day job last week, I needed to do a SQL Inner Join with Sequelize and Typescript in a web API. Here’s how I achieved it. Environment: Things move quickly in the JS ecosystem. Here are the library versions used in the subject API at the time of writing: "dependencies": { "@types/express": "~4.0.39", "@types/sequelize": "^4.27.21", "express": "~4.16.2", "sequelize": "4.38.0", } Context: I have an identifier in one system that I need to correlate with an identifier in a second system, but I could only do that via an intermediate identifier, also in the second system. A good case for a SQL Join. ...

October 11, 2020 · 5 min · Alex

Running Deployments with Github Actions

In a previous article I wrote about Getting Started with Github Actions . In it, I talk about the basics of Actions, how they work, what the language looks like and how you can get started. If you’ve never used Actions before, I highly recommend you have a quick read of that before reading this, as I build on some of the ideas presented there. Continuous Integration (CI) versus Continues Deployment (CD) versus Continuous Delivery (unhelpfully, also CD) Put simply, continuous integration is the act of continually moving your changeset into the wider codebase, as frequently as it makes sense for your use case. CI is an essential practice because it drives us as engineers to produce smaller changes more often, and these small changes tend to be less risky individually. Those small changes also lead us to deliver value to our users more rapidly, and more often. ...

July 13, 2020 · 11 min · Alex

Getting Started with Github Actions

Continuous Delivery is a foundational skill that your organisation needs to be good at if it is to remain responsive and ’lowercase a’ agile. A full solution for continuous delivery tends to include (but isn’t limited to): The ability to create artefacts that we can release to production, across many products, teams, branches, environments and repositories. The ability to quickly validate an artefact as a candidate for release (through applying the testing triangle - unit, integration, acceptance, smoke and so on). The ability to release code to production without necessarily activating it for users (typically through feature flags, canary built and graduated rollouts). The ability to rapidly respond if a release candidate we later find to be problematic (again through canary builds, graduated rollouts, and by quickly rolling back software found to be problematic). The ability to audit or understand what code is where, what state that code is in, and why that code is where it is. More concretely, a decent CI/CD solution will: ...

May 28, 2020 · 13 min · Alex

Spring Boot - Comparing Liquibase and Flyway

What are Spring Boot, Liquibase and Flyway? The Spring Ecosystem When you need to create a web application or an API in Java, be that RESTful, SOAP or GraphQL; whether you’re looking at synchronous HTTP, Asynchronous or Reactive, Messages on Queues or Event Sourced with Kafka, it’s hard to go past the Spring Ecosystem. If nobody ever got fired for buying IBM, you could probably say that nobody ever got fired for creating a Spring-based application. ...

April 23, 2020 · 9 min · Alex

Low Maintenance Home Labs

How do you keep up to date with changes in technology? How do you get your startup off the ground from a technical standpoint? What can you do to build out your tools and processes in a sustainable, low risk way? Finding space for continual learning at work can be tough. If you, like me have a passion for technology but have transitioned away from a technical role and miss fiddling with technology on a daily basis, you might consider creating a lab at home to keep your skills sharp, and stay up to date on industry trends and best practice. ...

September 7, 2018 · 12 min · Alex

Building Continuous Delivery for Healthlink

My team at Healthlink have just finished a proof of concept around Continuous Delivery. Here’s the writeup, sanitised for the internet. Context We’re a Health IT company based out of New Zealand, and run an set of products that provide messaging integrations between Healthcare organisations across New Zealand and Australia. Our applications are a mixture of desktop and web service based, and we’re currently undergoing a massive change process from Waterfall to Agile and from a bespoke services company to a truly product focused company. ...

October 5, 2016 · 7 min · Alex

Overtime's Tech Stack

Overtime New Zealand is a social video game league for corporates. Companies get together and play games against each other for bragging rights, e-peen and other critically important reasons, like proving that you’re better at Dota 2 then X_MAIN_RIVAL_FIRM. So without Further ado, here’s what we’re running at the moment. I’ll go through our components technology by technology: Most importantly, Docker We couldn’t do what we wanted to do with Overtime’s CI / CD without docker. Initially I created docker-compose containers for instances of Docker Registry, Nginx, and MongoDB and our Web App. The plan was to containerise those components because it would allow us to scale up instances of our web app and MongoDB in case our load got crazy high. An ambitious design requirement, but much better for the long run. In fact nearly every design decision we’ve made technologically has been focused on “What will make our lives easier in the long term”. We do this voluntarily so making money immediately and as quickly as possible isn’t such a huge issue for us! It’s nice. ...

January 14, 2016 · 4 min · Alex

Continuous Delivery

The work that I’ve been doing for the past few months has been pretty interesting. At the moment it takes developers working on one of our ventures about an hour and a half to two hours to deploy code to a test or prod machine. It used to take a second venture a similar amount of time to do the same task, but the process we’ve implemented for them has reduced that significantly. Once the process is completed across both ventures, our team will have reduced that deployment time enough, that the product owners for those ventures will effectively gain 20% more points for work per sprint. ...

October 28, 2015 · 3 min · Alex