January 7, 2020

Dockerised Workspaces: an example with Python & Scrapy

Most of my daily workflow is heavily reliant on Docker; and although it’s a highly respected tool in your average engineer’s arsenal, I still think it’s underappreciated in some scenarios. One of those scenarios for me is in producing small isolated workspaces. A core component of my backup strategy involves Dockerised “workspaces”; simply directories with a Dockerfile, a Makefile or shell script, and some child directories which are largely used as volumes. Read more

December 18, 2019

Simplest CQRS Implementation: Improvements and better practice

In my previous post I wrote a very simple implementation of the CQRS pattern and shared it via Gitlab; it was purely an illustration for the purposes of the blog post, and therefore it lacked some of the niceties that you’d expect in a “real” codebase. Let’s jazz the example up with linting, proper comments/documentation, unit testing, and automated builds. As in the previous example, you may want to keep up by browsing the repository and checking out any of the commits that are referenced. Read more

December 18, 2019

Writing the simplest CQRS implementation possible

On the rare occasion that CQRS is used correctly, it can be absolutely brilliant; it offers complete decoupling of read and write operations, simplifies access to the data layer, and enables architecturally simple designs. Unfortunately though it’s often used as a wheel to break a butterfly, and it’s simplicity is lost as it’s not matched with the underlying requirements. In this post I want to explore the simplest implementation of CQRS possible: one that I’ll write as I write this blog post. Read more

December 6, 2019

Horror Stories: Dropbox Driven Deployments

It was quite an exciting time: I’d just spent the last 6 months building a new engineering team from the ground-up, mentoring existing members of staff, and undertaking a complete overhaul of technical processes at a relatively large enterprise. I was keen to get to grips with a similar challenge, and began my first day with a wide-eyed smile and a large dose of optimism. First order of the day: a one-on-one with the CEO and a chat about the future of the company. Read more

April 11, 2019

Automating Code Generation With Docker

Code generation can be really useful; need to generate some models from an OpenAPI spec or a Protocol Buffer definition? No problem! Unfortunately in a team environment this can pose a few problems though: What happens when new members of staff join the team and have newer versions of the generation tools? Should generated files be checked in source control - and if so, how can you ensure that no manual modifications are present? Read more

March 11, 2019

Data Transformations for APIs via Struct Composition in Golang

I enjoy writing Go. It lacks the magic and obfuscation present in other languages, whilst possessing an intuitive syntax that still allows the concise expression of complex ideas. It’s awesome. What’s less awesome, unfortunately, is that the flexibility of the language often leads to it’s simplicity being overlooked; and this is no more apparent than in data transformation layers. If you find yourself regularly writing convulated transformers, then there’s a good chance that you’re not actually understanding the language properly. And what’s the point in writing Go if you’re simply going to write Java/C#/PHP? Read more

February 24, 2019

Go Generate: Quick, Easy, and oh so Powerful

If you’ve had the misfortune of talking to me about development over the past year, you may well have noticed me evangelising about Go. It’s true: I’ve become guilty of something I previously mocked colleagues for. Perhaps it’s because the book “The Go Programming Language” reminds me of the first ever programming book I picked up - “The C Programming Language” - when I was around 13? Maybe it’s the simplicity and distinct lack of “magic” that the language has? Read more

© Fergus In London 2019

Powered by Hugo & Kiss. Source available on Github.