Blog

Articles, guides, and notes on software engineering.

Approach to Architecture Design
Architecture 2023-11-23

Approach to Architecture Design

Master staged architecture design approach to configuration diagrams for clearer thinking, better team alignment, and preventing over-design.

#Architecture#Design

Recent Posts

Distributing Go Applications with GoReleaser
Application 2023-11-11

Distributing Go Applications with GoReleaser

Using GoReleaser to cross-compile and distribute Go application binaries.

#Golang#GitHub Actions
Command to Generate ADR Template Files
Application 2023-11-10

Command to Generate ADR Template Files

Implement a Make command to auto-generate Architecture Decision Record templates with automatic numbering and status tracking capabilities.

#Architecture Decision Record
What is GraphQL? A Complete Guide with Practical Examples
Application 2023-11-09

What is GraphQL? A Complete Guide with Practical Examples

Summarizing what I researched while practicing GraphQL.

#GraphQL
Resources Referenced for Creating an HTTP Router
Application 2023-10-30

Resources Referenced for Creating an HTTP Router

Explore resources for building HTTP routers including radix trees, trie structures, and benchmark comparisons in Go.

#Router#HTTP#URL Routing#Link Collection
What is a Service Mesh? How Istio and Linkerd Work Explained
Infrastructure 2023-10-29

What is a Service Mesh? How Istio and Linkerd Work Explained

Learn what a service mesh is, how the sidecar proxy pattern works, and what problems Istio and Linkerd solve for service communication inside a Kubernetes cluster.

#Service Mesh
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
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