Blog
Articles, guides, and notes on software engineering.
Delegation Over Inheritance
Learn duck typing and Liskov Substitution Principle. Build resilient Go applications using delegation patterns over inheritance.
Recent Posts
Why Interfaces Change Less Frequently Than Implementations
Understand why Go interfaces change less frequently than implementations, stabilizing contracts while allowing implementation flexibility.
Why the Singleton Pattern is an Anti-Pattern
Examine why the Singleton pattern creates architectural problems and dependency injection provides superior design alternatives.
Understanding Terminal Specifications for TUI Development
Explore terminal specifications, raw mode, ANSI escape sequences, and termios for TUI development with practical Go implementations.
Test Doubles Explained: Mocks, Stubs, Fakes, and Spies
Learn the differences between test doubles: mocks, stubs, fakes, dummies, and spies. Understand when to use each type and how they improve unit test isolation and clarity.
Trends and Strategies for System Design Interviews
Trends and Strategies for System Design Interviews
Street Coder
Street Coder
Session-based and Token-based Authentication Methods
A comprehensive comparison and explanation of session-based and token-based authentication methods, covering technical details and implementation considerations.
Understanding Functional Programming
Understanding Functional Programming
What is the Architecture Advice Process (AAP)?
Implement Architecture Advice Process for decentralized decision-making with ADR and architectural governance frameworks.
Created a Spec Repository
Discover the bmf Framework and Cynefin-based story point estimation methods. Access community specifications and best practices.
Driving Domain with Data Modeling - Towards Distributed and Loosely Coupled Core Systems
Driving Domain with Data Modeling - Towards Distributed and Loosely Coupled Core Systems
Exploring Processes, Goroutines, and Memory in Go
Explore Go virtual address spaces, process isolation, goroutine memory sharing, stack and heap behavior.
Introduction to Prolog
Introduction to Prolog
The Penguin Who Became a Seagull
The Penguin Who Became a Seagull
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.
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.
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.
About Processing Models of Web Applications
Architect web applications with Event Loop, Thread, and Process models for IO-bound and CPU-bound concurrent workloads.