Skip to main content

Blog

Software Development

Articles on software engineering practice — architecture patterns, testing, clean code, and the craft of building maintainable systems.

58 articles

Back-of-the-Envelope Capacity Estimation: QPS to Servers
Software DevelopmentOctober 202612 min read

Back-of-the-Envelope Capacity Estimation: QPS to Servers

Go from daily active users to QPS, storage, bandwidth, cache size and server count, with a worked photo-sharing example and a TypeScript estimator.

Read More
Hexagonal Architecture (Ports and Adapters) in TypeScript
Software DevelopmentOctober 202611 min read

Hexagonal Architecture (Ports and Adapters) in TypeScript

What hexagonal architecture is, how ports and adapters keep business logic free of frameworks and databases, and a NestJS and Postgres example you can copy.

Read More
Bounded Contexts in Domain-Driven Design and How to Find Them
Software DevelopmentOctober 202611 min read

Bounded Contexts in Domain-Driven Design and How to Find Them

What a bounded context is, why Item means three things in ERP sales, inventory and accounting, and how to find boundaries and wire contexts with a context map.

Read More
Modular Monolith Architecture: When It Beats Microservices
Software DevelopmentOctober 202611 min read

Modular Monolith Architecture: When It Beats Microservices

What a modular monolith is and when it beats microservices: one deployable, a public API per module, a Postgres schema per module and lint-enforced boundaries.

Read More
Strangler Fig Pattern: Monolith to Microservices Migration
Software DevelopmentOctober 202611 min read

Strangler Fig Pattern: Monolith to Microservices Migration

How to migrate a monolith to microservices with the strangler fig pattern: a routing facade, one slice at a time, data ownership, rollback and when to stop.

Read More
System Design for Developers: What It Is and How to Learn It
Software DevelopmentOctober 20269 min read

System Design for Developers: What It Is and How to Learn It

System design is deciding how components, data and failures fit together. A plain-language guide with a worked sizing example and a learning path.

Read More
Open Source Maintenance from Indonesia: The UTC+7 Timezone Tax
Software DevelopmentSeptember 202610 min read

Open Source Maintenance from Indonesia: The UTC+7 Timezone Tax

The operating procedure for maintaining an npm package from UTC+7 alongside a day job: batched triage, issue forms that stop unactionable reports, a published response window, and a scope small enough to defend.

Read More
AI Commit Messages and Changelog Automation: Why Beats What
Software DevelopmentSeptember 202610 min read

AI Commit Messages and Changelog Automation: Why Beats What

A commit message generated from a diff only summarises what git show already proves. Where the why lives, what a hook can verify, and one shell bug.

Read More
AI-Generated Tests: Coverage Rose, Mutation Score Did Not
Software DevelopmentSeptember 202612 min read

AI-Generated Tests: Coverage Rose, Mutation Score Did Not

An agent asked to write tests reads the implementation and asserts what it currently does, which is why the suite is green before you have read a line of it. Here are the four shapes those tests take, the mutation testing run that exposes them, what that run honestly costs, and the prompt change that stops producing them.

Read More
Bundling LSP Servers in a Claude Code Plugin, and Its Cost
Software DevelopmentSeptember 202612 min read

Bundling LSP Servers in a Claude Code Plugin, and Its Cost

A plugin can declare language servers, which changes what the agent knows about your code: it can ask for a definition instead of guessing from a grep. Here is the declaration, which servers are worth bundling, and what four of them actually cost.

Read More
Migrating Claude Code Dotfiles into a Versioned Plugin
Software DevelopmentSeptember 202611 min read

Migrating Claude Code Dotfiles into a Versioned Plugin

A PostToolUse hook in this repository started reviewing every edit twice, and the script was not the problem — I had copied it into a plugin and left the original in settings.json. Here is the file-by-file map out of a dotfiles directory, and the precedence rules that decide which copy runs.

Read More
Claude Code Plugin Marketplace Curation: What Earns a Slot
Software DevelopmentSeptember 202611 min read

Claude Code Plugin Marketplace Curation: What Earns a Slot

Every entry in an internal Claude Code marketplace is a standing instruction running on somebody else's machine. Here is the editorial policy I run one by: what earns a slot, who owns it, and how it retires.

Read More
Claude Code Plugin vs Skill: When to Bundle a Workflow
Software DevelopmentSeptember 202611 min read

Claude Code Plugin vs Skill: When to Bundle a Workflow

A skill is a document, a plugin is a dependency. When one SKILL.md file is enough, when drift between copies means bundle it, and what a plugin costs.

Read More
Claude Code Plugin Eval: Catch a Skill That Never Activates
Software DevelopmentSeptember 202611 min read

Claude Code Plugin Eval: Catch a Skill That Never Activates

A plugin is a dependency other people install, so it needs a test suite rather than a demo. What an eval case looks like, why the no-plugin ablation arm is the part that tests activation, and the defect that ships when you skip it.

Read More
Claude Code Interactive Mode: Shortcuts and Prompt Tricks
Software DevelopmentAugust 202612 min read

Claude Code Interactive Mode: Shortcuts and Prompt Tricks

The prompt box does more than send text. Here are the sigils, the queue, side questions and the shortcuts worth learning first.

Read More
Claude Code LSP Plugins: Real Code Intelligence for Claude
Software DevelopmentAugust 202611 min read

Claude Code LSP Plugins: Real Code Intelligence for Claude

An LSP plugin gives Claude type errors after every edit and real navigation instead of grep. Here are the languages, the costs and custom servers.

Read More
Claude Code Errors: What They Mean and How to Fix Them
Software DevelopmentAugust 202612 min read

Claude Code Errors: What They Mean and How to Fix Them

Most Claude Code errors are configuration rather than bugs. Here they are by family, with the two commands to run first and the real fixes.

Read More
Claude Code CLI Flags: The Ones Worth Knowing by Job
Software DevelopmentAugust 202613 min read

Claude Code CLI Flags: The Ones Worth Knowing by Job

The CLI has dozens of flags and two dozen subcommands. Here are the ones that change outcomes, grouped by the job each one does.

Read More
Claude Code Sessions: Resume, Branch and Name Your Work
Software DevelopmentAugust 202613 min read

Claude Code Sessions: Resume, Branch and Name Your Work

A session is a saved conversation on disk. Here is what resuming restores, what it quietly drops, and the difference between branch and fork.

Read More
Claude Code Desktop Scheduled Tasks: Local Automation
Software DevelopmentAugust 202611 min read

Claude Code Desktop Scheduled Tasks: Local Automation

Desktop tasks run on your machine with your files and tools, and catch up when it wakes. That last part changes how you should write the prompt.

Read More
Claude Code for JetBrains: The Plugin and Its MCP Server
Software DevelopmentAugust 202612 min read

Claude Code for JetBrains: The Plugin and Its MCP Server

The plugin runs a local MCP server, shares your editor selection on every prompt, and carries one security consideration that is specific to running inside an IDE.

Read More
Claude Code in VS Code: The Extension, Not the CLI
Software DevelopmentAugust 202613 min read

Claude Code in VS Code: The Extension, Not the CLI

The extension bundles its own private CLI copy and still does not put claude on your PATH. Here is what it does better than the terminal, and what it cannot do at all.

Read More
Claude Code Accessibility: Screen Readers and Beyond
Software DevelopmentAugust 202611 min read

Claude Code Accessibility: Screen Readers and Beyond

Screen reader mode replaces boxes and redraws with labelled linear text a reader can follow in order. Here is what it changes and the settings that need no mode at all.

Read More
Claude Code Fullscreen: Flicker-Free, With Trade-Offs
Software DevelopmentAugust 202612 min read

Claude Code Fullscreen: Flicker-Free, With Trade-Offs

Fullscreen rendering kills flicker and flattens memory by drawing on the alternate screen. That costs you native scrollback and mouse selection, and both are recoverable.

Read More

More in this category