picks
46 articles
Considering Engineering in the Age of AI
Establish prompt governance with Golden Dataset validation, LLM-as-Judge evaluation, and prompt injection security.
LLM Prompt Management and Evaluation Platform Using GitHub Agentic Workflow
Manage LLM prompts as code using GitHub Agentic Workflows: Copilot-powered automation with golden datasets and evaluation.
What is Platform Engineering? Building Internal Developer Platforms
Learn what platform engineering is, how internal developer platforms (IDPs) work, and how platform teams reduce cognitive load and improve developer productivity.
Considering Architecture Strategy
Understand architecture strategy as systematic policy for building and evolving systems, covering vision, principles, and scalability planning.
Good Architecture Strategy, Bad Architecture Strategy
Exploring the differences between effective and ineffective architecture strategies.
Why and When to Write an Architecture Strategy
Develop architecture strategies to eliminate ad-hoc technology decisions and establish technology standards across teams.
Differentiating Architecture Strategy, Tactics, and Design
Differentiate architecture strategy, tactics, and design using 5W1H framework to clarify why, what, how, when, where, and who decisions.
Difference Between Requirements and Constraints
Distinguish requirements from constraints in software design using ISO 29148 definitions for effective architecture trade-offs.
The Importance of Explicitly Stating Constraints and Trade-offs in Technical Decision Making
Document technical decisions by explicitly stating constraints and trade-offs to enable future re-evaluation and org growth.
Key Points to Consider When Writing an ADR
Master ADR writing by focusing on atomic decisions, documenting trade-offs, team discussions, and technical writing principles for architecture.
What is the Architecture Advice Process (AAP)?
Implement Architecture Advice Process for decentralized decision-making with ADR and architectural governance frameworks.
Structure of My System Specification Document
Learn to structure system specification documents with sections for architecture, data models, APIs, and sequence diagrams for design clarity.
Things to Consider When Writing Architecture Documents
Guidelines for creating effective architecture documents in system design.
Bounded Contexts
Understand bounded contexts in domain-driven design to clarify word meanings, organize responsibilities, and improve system design.
Cohesion and Coupling
Understand cohesion and coupling as software design metrics. Learn the 7 levels of cohesion (coincidental to functional) and 6 levels of coupling (content to data) with practical examples.
The Abstraction Trap in Architecture Design
Why sharing domain logic can quietly turn into architectural debt, while technical concerns can safely be shared — with nuance around authorization and PII-sensitive logging.
Considering the Shelf Life of Design
Consider design shelf life across business, organization, product, and technical perspectives. Balance constraints and trade-offs.
Access Control Patterns Using OPA
Explore four access control patterns using Open Policy Agent including Allow/Deny, SQL generation, and AST approaches with responsibility separation.
Implementation of Access Control System for Microservices Using OPA
Implement fine-grained access control for distributed microservices using Open Policy Agent and declarative Rego policy language.
Basic Patterns of Cache Strategies
Learn the five cache strategies: Cache Aside, Read Through, Write Through, Write Back, and Write Around. Covers read/write flows, consistency trade-offs, and mermaid diagram walkthroughs.
About Processing Models of Web Applications
Architect web applications with Event Loop, Thread, and Process models for IO-bound and CPU-bound concurrent workloads.
Measuring Scalability
Measure system scalability using throughput, latency, efficiency metrics, mathematical models like Amdahl's Law, and practical benchmarking.
Starting Guide to Load Testing
A guide to understanding and starting load testing.
Devoured System Design Resources
A compilation of resources related to system design.
ACID vs BASE: Understanding Database Consistency Models
Compare ACID and BASE consistency models. Understand the trade-offs involved, when to use each, and how the CAP theorem connects to your database design choices.
CAP Theorem Explained: Understanding Distributed Database Trade-offs
Understand the CAP theorem and PACELC theorem with clear examples. Learn the distributed system trade-offs between consistency, availability, and partition tolerance.
Technologies Supporting bmf-tech
Explore Docker, Golang, Vue.js, Nginx, Prometheus, and Grafana powering modern blogging infrastructure and monitoring systems.
Transaction Overview
Understand database transaction fundamentals including ACID properties, concurrency control, and isolation for data integrity.
MySQL Transaction Isolation Levels: Preventing Dirty Reads, Phantom Reads, and More
Learn MySQL's four transaction isolation levels, the anomalies each prevents (dirty read, non-repeatable read, phantom read), and how to choose the right level.
MySQL Locks Explained: Preventing Deadlocks and Improving Performance
Understand MySQL locking mechanisms—table locks, row locks, gap locks, and intent locks. Learn how deadlocks occur and how to prevent and diagnose them effectively.
What is a Database Index? How It Works and When You Need It
Understand how database indexes work internally—B-tree and hash structures—when to add or avoid indexes, and how to measure index effectiveness using EXPLAIN.
Understanding Terminal Specifications for TUI Development
Explore terminal specifications, raw mode, ANSI escape sequences, and termios for TUI development with practical Go implementations.
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.
From Custom HTTP Router to New ServeMux
Migrate from a custom HTTP router goblin to Go 1.22 enhanced net/http ServeMux. Covers new routing patterns, performance comparison with third-party routers, and when ServeMux is enough.
Understanding IO and CPU Characteristics in Ruby and Rails
Understand Ruby GVL, Puma concurrency, IO-bound vs CPU-bound workloads, thread/process tuning, and GC impact on Rails performance.
Considerations and Solutions for Pagination Impact in OPA
Master pagination with Open Policy Agent, offset pagination, cursor pagination, and access control filtering.
What's the Difference Between Product Development and Platform Development?
Exploring how product development and platform development differ across three dimensions — decision criteria, design philosophy, and investment perspective.
Viability Conditions for Building a Platform
How do you decide whether to build an internal platform? This article organizes the viability conditions from the perspectives of core/supporting/generic subdomains, comparison with external services, leverage, and organizational capacity, and examines how far domain analysis alone can take you.
What is Team Topologies? How to Structure Engineering Teams
Learn Team Topologies—the four team types (stream-aligned, platform, enabling, complicated-subsystem) and three interaction modes for effective software delivery organization.
Why Software Development Teams Should Define MVV
Understand MVV definition for software teams, mission clarity, vision alignment, and team personality development.
How to Deal with Uncertainty in Software Development Projects
Address software project uncertainty through agile planning. Distinguish known unknowns from unknown unknowns to minimize risks.
Understanding Story Points Using the Cynefin Framework
An idea on how to think about the criteria for story points.
A Retrospective Framework 'bmf' to Encourage Selection and Focus
Introducing a new retrospective framework to enhance focus and selection.
Career Portfolio Creation Guide
Create a strategic career portfolio to clarify skills, assess market value, set goals, and optimize daily decision-making.
Improving Code Performance with Go
Learn practical Go performance optimization: pprof profiling, benchmark tests, escape analysis, memory allocation reduction, and real examples from optimizing a custom HTTP router.
About Sets
Summarizing the basics of sets.