Blog
Articles, guides, and notes on software engineering.
Architecture Decision Records (ADR) Explained: How to Document Technical Decisions
Learn what Architecture Decision Records (ADRs) are, why documenting technical decisions matters, and how to write effective ADRs for your engineering team.
Recent Posts
About Design Docs
Write effective Design Docs for software architecture. Master documentation lifecycle, review process, and team collaboration strategies.
Implementing Slack App Slash Command Using Cloud Functions
Implement Slack app slash commands using Google Cloud Functions with Go, Slack API, and serverless architecture.
SLI, SLO, and SLA Explained: A Practical Guide for Engineers
Learn the differences between SLIs, SLOs, and SLAs in site reliability engineering. Understand how to define service level objectives that balance reliability and velocity.
Static Analysis of Clean Architecture Layers in Go
Enforce clean architecture layer dependencies in Go using go-cleanarch for static analysis and architecture validation.
Scrum Master vs Product Owner: Roles and Responsibilities Compared
Clarify the roles of Scrum Master and Product Owner in Scrum. Learn distinct responsibilities, how each role interacts with the development team, and common misconceptions.
Convert Markdown Files to PDF (Supports mermaid, emoji, toc)
A simple document management tool to convert Markdown files to PDF, supporting mermaid, emoji, and toc.
Technologies Supporting bmf-tech
Explore Docker, Golang, Vue.js, Nginx, Prometheus, and Grafana powering modern blogging infrastructure and monitoring systems.
Migrated the Blog System
Discover how bmf-tech evolved its blog platform across three major generations: WordPress, Laravel CMS, and Go CMS.
Mastering Web Performance Tuning: Practical Speed Optimization Lessons from ISUCON
Mastering Web Performance Tuning: Practical Speed Optimization Lessons from ISUCON
Understanding Finance Thinking from Scratch: Growth Strategies for Employees and Companies
Understanding Finance Thinking from Scratch: Growth Strategies for Employees and Companies
Catching Up on New Features from PHP 7.4 to PHP 8.1
Learn new PHP 8.1 features including typed properties, arrow functions, union types, match expressions, and attributes.
Obtaining SSL Certificates from Let's Encrypt Using DNS-01 with Lego
Obtain Let's Encrypt SSL certificates efficiently using DNS-01 challenge method with Lego client tool and Conoha API provider integration.
Implementing a Load Balancer in Golang
Implement a round-robin L4 load balancer in Go from scratch. Covers reverse proxy with httputil, round-robin scheduling, and active and passive health checks.
Reflection on 2021 and Goals for Next Year
Personal year-end reflection on 2021: engineer growth, what worked and what did not, plus goals set for 2022.
Building a Monitoring Platform with Containers
Build a container-based monitoring platform using EFK stack and Prometheus for logs, metrics, visualization, and alerting.
How to Stream Keynote Presenter Display with StreamYard
A guide on streaming Keynote presentations using StreamYard while displaying the presenter view.
Introduction to Building an HTTP Router with net/http
This article explains how to create a custom HTTP router using Golang's standard package net/http.
Participated in ISUCON11
Explore ISUCON11 performance tuning strategies including pprof, alp logs, N+1 queries, and MySQL optimization techniques.
Implementing Datadog APM in ECS on Fargate Environment
Implement Datadog APM on ECS Fargate for PHP applications with distributed tracing and performance monitoring configuration.