Blog

Articles, guides, and notes on software engineering.

Parallel Testing with PHPUnit on CircleCI
Testing 2023-10-21

Parallel Testing with PHPUnit on CircleCI

Execute PHPUnit tests in parallel on CircleCI using shell scripts to generate dynamic configuration and split containers.

#CircleCI#phpunit

Recent Posts

Contextual Logging with slog
Application 2023-10-08

Contextual Logging with slog

Learn contextual structured logging in Go using log/slog (Go 1.21+). Covers custom slog.Handler, structured JSON output, and injecting trace IDs from context into every log entry.

#slog#contextual logging
More Effective Agile
Development Process 2023-10-01

More Effective Agile

More Effective Agile

#Agile#Book Review
Modular Monolith Architecture: A Practical Guide and When to Choose It Over Microservices
Architecture 2023-09-25

Modular Monolith Architecture: A Practical Guide and When to Choose It Over Microservices

Learn what a modular monolith is, how it differs from microservices and traditional monoliths, and when it is the better architectural choice for your team.

#Modular Monolith
CQRS Explained: When to Use Command Query Responsibility Segregation
Architecture 2023-09-18

CQRS Explained: When to Use Command Query Responsibility Segregation

Learn what CQRS (Command Query Responsibility Segregation) is, how it differs from CRUD, and when applying it actually improves your system design and scalability.

#CQRS#Microservices
The Saga Pattern Explained: Managing Distributed Transactions in Microservices
Architecture 2023-09-17

The Saga Pattern Explained: Managing Distributed Transactions in Microservices

Learn how the Saga pattern manages distributed transactions in microservices. Compare choreography vs orchestration-based sagas and their practical trade-offs.

#Microservices#Saga Pattern#TCC Pattern#Distributed Transactions#2phase commit
Side Effects of Go's response.WriteHeader
Application 2023-09-11

Side Effects of Go's response.WriteHeader

Learn why calling Go response.WriteHeader multiple times triggers the superfluous call warning. Covers how the first status code wins and how to fix duplicate WriteHeader in HTTP handlers.

#Golang#Tips
Proposal to Extend ServeMux Functionality in Go Accepted
Application 2023-08-31

Proposal to Extend ServeMux Functionality in Go Accepted

The proposal to add dynamic routing and path parameters to Go net/http ServeMux was accepted. Learn what this means for third-party routers like goblin and the future of routing in Go.

#Golang#Router#HTTP
What is BFF (Backend For Frontend)? Benefits and Implementation Guide
Architecture 2023-08-29

What is BFF (Backend For Frontend)? Benefits and Implementation Guide

A summary of what I researched about BFF.

#BFF
Notes on Building a Notification Platform
Architecture 2023-08-28

Notes on Building a Notification Platform

Understand notification platform design for multi-channel delivery including email, push, SMS integration.

#Notification
100 Tips for Go: How to Address Common Developer Mistakes
Application 2023-08-27

100 Tips for Go: How to Address Common Developer Mistakes

100 Tips for Go: How to Address Common Developer Mistakes

#Golang#Book Review
About Go's http.RoundTripper
Application 2023-08-22

About Go's http.RoundTripper

Learn what Go http.RoundTripper interface is and how to use it as HTTP client middleware. Includes a custom RoundTripper for request logging and response latency measurement.

#Golang
Implementing Fan-In and Fan-Out in Go
Application 2023-08-21

Implementing Fan-In and Fan-Out in Go

Implement fan-in and fan-out concurrent patterns in Go using channels and goroutines. Fan-in aggregates multiple producer outputs; fan-out distributes one input across multiple workers.

#fan-in#fan-out
About Template Method and Strategy Patterns
Application 2023-08-20

About Template Method and Strategy Patterns

Master Template Method and Strategy patterns—two behavioral design patterns for controlling process flow and runtime method selection.

#Strategy#Template Method
Distributed Services with Go
Application 2023-08-18

Distributed Services with Go

Distributed Services with Go

#Golang#Book Review
Running k3s with multipass
Infrastructure 2023-08-17

Running k3s with multipass

Exploring the use of multipass to run k3s for personal development applications.

#multipass#k3s
Implementing Sliding Window
Algorithms and Data Structures 2023-08-17

Implementing Sliding Window

Implement sliding window algorithms for efficient subarray searching with optimized time complexity and rate limiter applications.

#Sliding Window
Monorepos Explained: Benefits, Drawbacks, and When to Use Them
Architecture 2023-08-11

Monorepos Explained: Benefits, Drawbacks, and When to Use Them

Understand what monorepos are, the tooling involved (Nx, Turborepo, Bazel), and the practical trade-offs between monorepos and polyrepos for growing engineering teams.

#Monorepo
Practical Go Language
Application 2023-08-05

Practical Go Language

Practical Go Language

#Golang#Book Review
Search Patterns in Binary Search Trees
Algorithms and Data Structures 2023-08-04

Search Patterns in Binary Search Trees

Learn DFS and BFS search patterns for binary search trees, including preorder, inorder, and postorder traversal methods.

#Binary Search Tree#DFS#BFS