Blog
Articles, guides, and notes on software engineering.
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.
Recent Posts
Capacity Planning - Maximizing Resources through Site Analysis, Forecasting, and Placement
A review of Capacity Planning. Though an older book, it teaches the fundamentals of capacity planning. While it assumes on-premises, much of its thinking on analyzing, forecasting, and placing site resources still transfers to the cloud.
About Capacity Planning
Plan system capacity by analyzing performance requirements, measuring infrastructure, forecasting needs, and setting safety factors.
Database ID Design: UUID vs Auto Increment vs ULID — Which to Choose?
Compare auto-increment integers, UUIDs, and ULIDs as database IDs. Learn the trade-offs in performance, sortability, and distributed system compatibility.
NULL in Database Design: Common Pitfalls and Best Practices
Learn how NULL works in relational databases, the three-valued logic problem, common query mistakes with NULL, and schema design strategies to avoid NULL-related bugs.
One-liner to Unlock Password-Protected PDFs
Decrypt password-protected PDFs using QPDF—a powerful command-line tool for removing PDF password restrictions securely.
Kubernetes Components Explained: Pods, Nodes, and the Control Plane
Understand the core Kubernetes components—pods, nodes, API server, scheduler, etcd, and kubelet—and how they work together to run containerized workloads.
Jobs Theory
A review of Jobs Theory. It explains the mechanism of consumption from the view that customers hire products to get a job done rather than for the products themselves. A theory worth keeping in mind when facing what users truly want to solve.
Notes on Spanner Insights
Explore Cloud Spanner architecture, replication strategies, indexing, and performance optimization for distributed databases.
NGINX Buffer Directives Explained: Optimizing Proxy Performance
Notes taken while researching buffer sizes in NGINX. It looks at reverse-proxy buffer directives such as proxy_buffering, proxy_buffer_size, and large_client_header_buffers, and how tuning them affects performance.
A List to Understand SaaS Architecture
A compilation of resources to transition from knowing nothing about SaaS to fully understanding it.
Practical Email Technology Handbook: From Basic Mechanisms to Protocols, Server Setup, Sending Domain Authentication, Attachments, Encryption, and Security Measures
A review of a practical email technology handbook. It systematically explains email from basic mechanisms to protocols, server setup, sender domain authentication, encryption, and security measures, useful for catching up on email technology as a whole.
About Go's rune Type
Learn what Go rune type is and how it represents Unicode code points (int32 alias). Covers string vs. rune differences, range loop behavior, and multi-byte character handling.
One-Liner for Self-Signed Certificates in Go
Generate a self-signed TLS certificate in Go with one command using the built-in generate_cert.go tool. Produces cert.pem and key.pem for local HTTPS without openssl or mkcert.
Implementing Exponential Backoff and Jitter in Go
What is backoff with jitter? Exponential backoff multiplies the delay between retries, and jitter adds randomness so clients do not retry in sync. Learn both, with a Go implementation, retry limits, and timeouts.
Introduction to Thinking and Writing Techniques: Practical Logical Thinking Methods for Japanese
A review of Introduction to Thinking and Writing Techniques. An introductory book that explains techniques for thinking and communicating logically, tailored to Japanese writing. It helps you acquire the basics of logical and critical thinking in a practical form.
FuelPHP and PHP Update Project Report
Learn how to update FuelPHP applications from PHP 7.3 to 8.1 with monolithic architecture strategies and compatibility tools.
Changes to ServeMux Specification in Go 1.22rc
Explore Go 1.22 enhanced ServeMux routing: HTTP method patterns (GET /items), wildcard path params (/items/{id}), the /{$} exact-match wildcard, and Request.PathValue.
A Collection of Links for Reviewing gRPC and Protocol Buffers
Review essential gRPC and Protocol Buffers resources covering load balancing, Kubernetes deployment, and best practices.
About Mob Programming
Recently, I experienced mob programming for the first time in my life, so I'm jotting down notes to remember the benefits of the experience.