Software Engineering Articles
Browse Hector Yeomans articles about Go, TypeScript, microservices, backend architecture, data systems, and pragmatic software engineering.
Build a Tiny Certificate Watcher in Go
Step-by-step guide to build a Go certificate watcher that validates TLS cert and key pairs, reports expiry, and reloads on file changes.
Secure Errors in Go With a Small Layered App
A practical walkthrough of secure error handling in Go using an HTTP, service, and repository architecture.
Knex.js and pg-boss in One Transaction
A practical knex.js transaction + pgboss pattern that keeps database writes and pg-boss jobs consistent in one PostgreSQL transaction.
Does Vibe Coding Kill Open Source? Notes on a New Paper
A plain-English breakdown of "Vibe Coding Kills Open Source" and practical ways maintainers, users, and AI toolmakers can keep OSS sustainable.
The Architectural Shift: Moving to MikroORM's Unit of Work
Why MikroORM feels different from Prisma/TypeORM, and why the Unit of Work pattern matters for complex domain logic.
Chess TUI in Go: Move History and Game State
Part 2 of building a chess TUI in Go: integrate a chess library, validate moves, track history, and delegate board state.
Building a Chess TUI in Go (Part 1): Laying the Foundation
Learn how to build a terminal chess interface in Go using Bubble Tea. This first part covers TUI fundamentals before adding chess logic and Stockfish integration.
Managing Go Tools the Right Way: From tools.go to go tool
A practical guide to Go 1.24's go tool directive, using OpenAPI code generation to compare modern tool management with tools.go.
The Best Code I Wrote Was The Code I Refactored
How a split-brain unsubscribe bug forced a refactor of an email marketing integration into a smaller, safer backend design.
Database Decomposition in Microservices
Summary of Chapter 4 from Monolith to Microservices: Practical strategies for splitting monolithic databases and managing data consistency in distributed systems.
Splitting the Monolith: Incremental Migration Strategies
Summary of Chapter 3 from Monolith to Microservices: Practical approaches to decomposing monolithic systems using patterns like Strangler Fig and Branch by Abstraction.
Charting the Path: Planning Your Migration to Microservices
Summary of Chapter 2 from Monolith to Microservices, focused on planning migrations with clear goals and organizational alignment.
Monolith to Microservices: Series Introduction
Introduction to a blog series exploring Sam Newman's Monolith to Microservices book, covering the fundamentals of microservice architecture and evolutionary patterns.
Importing INE Shapefiles into a Spatialite Database
Step-by-step guide to importing Mexico's National Electoral Institute shapefiles into a Spatialite database using macOS and QGIS.
How to Use GORM and Golang Migrate
Complete guide on setting up GORM with Golang Migrate to manage PostgreSQL database migrations in Go applications.
Convert node package with Typescript and Rollup
Step-by-step guide to converting a Node.js package from JavaScript to TypeScript using Rollup.js as the build tool.
Golang and interfaces misuse
Understanding the proper way to use Go interfaces by following the principle of defining interfaces where they're used, not where they're implemented.
Typescript, Jest and Axios
How to mock Axios requests in Jest tests when using TypeScript and calling Axios as a function rather than using specific methods.
Software as stitching
Exploring how most software development involves stitching together APIs and third-party services, drawing parallels to the art of sewing.
Resilience with Disyuntor - Circuit Breaker
Implementing the Circuit Breaker pattern in Node.js using Disyuntor to build resilient distributed systems and handle service failures gracefully.
ES6 Arrow Functions and Lexical Scope
Exploring ES6 arrow functions and their lexical scoping behavior compared to traditional function binding in JavaScript.