- I take ideas from inception to operation.
- I solve your product and technology problems.
- I do solemnly swear that nothing you read here is generated by AI. I wrote every single word.
Architecture is gardening.
Note This is the first article in a series of articles I intend to write that describe my interpretation and understanding of the practice of architecture in large software projects. I intend to write about the following topics in this series: Architects are Gardeners. (This article) What, more specifically IS software architecture? What do Architects or architects do? How can we build sustainable practices of architecture that in turn build sustainable architectures?...
A framework for creating strategy
Recently, I wrote my very first technology strategy. Overall I’d say the process went pretty well. Of course writing the strategy is intimidating to begin with, but once I started I quickly realised that the much more intimidating thing is actually working to implement the strategy after it’s written. I felt and still at times feel like fleeing to the woods to live as a wolf as a result of this realisation but I’m pretty sure my life insurance has exclusions for fleeing to the woods in order to live as a wolf....
The Role of a Software Developer
What if the role of the software developer is not actually about writing software? What if the most important thing I can do today isn’t to write a sweet recursive function that delights and confuses the next human that reads it in equal measure? As our industry has matured, the roles of technical staff in an organisation have changed. Increasingly, companies require that technical folk interact with customers. Some people like this....
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....
Trialling One Day Sprints
1-day sprints are a fantastic way of turning the traditional time pressures a team might face from negative to positive. They act as a time constraint on the team and force clarity, agility and feedback into your work system in far more significant amounts than you might already have. They can act as circuit breakers for teams struggling to meet sprint goals. They can create momentum in and outside of the team and encourage teams to focus on producing the smallest impact possible for your users....
Implementing a team topology
Any organisation that designs a system (defined broadly) will produce a design whose structure is a copy of the organisation’s communication structure. — Melvin E. Conway Introduction Team topologies are a concept created and popularised by Manuel Pais and Matthew Skelton. They describe a way of reforming your organisation shape in such a way that improves the architecture of your software while reducing cognitive load and directing more energy and focus towards the streams of value that flow through your organisation....
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....
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....
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)....
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....