Fergus On:

Information Security. Software Engineering. Radio and Electronics. (And the occasional hike.)

Automating Code Generation With Docker

Code generation across a team leaves everyone on slightly different versions with fragmented workflows. I wrap generation tools in utility Docker images instead: consistent tooling, no local installs, same output every time.

Go: Easy data transformations via composition

Go's struct embedding cuts out the convoluted data transformation layers you'd write in other languages. I compose structs to filter properties, merge data sources, and control memory—without extra abstraction getting in the way.

Go: Implicit Interfaces and being an Englishman Abroad

Go's implicit interfaces look underwhelming until you define them at the consumption point, not the implementation. I've watched developers new to Go miss this entirely by forcing familiar OOP patterns. Keep interfaces small and local—cleaner architecture, no boilerplate.

You can help Europol fight Child Sexual Exploitation

Europol needs help identifying everyday objects in the background of child exploitation images. You look at photos of common items—a plug socket, a brand of crisps—and flag anything you recognise. Takes minutes, might crack a case.

You should probably learn how Git works.

Most developers know enough Git to get by, then hit something ugly and panic. Learning reflog, bisect, and hooks properly turns Git from version tracker into actual leverage—fewer mistakes, faster fixes.