# Thoughts & Stories: Software Development

> Sharing my experiences, learnings, and adventures in tech and beyond.

URL: https://www.matthewswong.com/en/blog/category/software-development/

- [Back-of-the-Envelope Capacity Estimation: QPS to Servers](https://www.matthewswong.com/en/blog/back-of-the-envelope-capacity-estimation/)
- [Hexagonal Architecture (Ports and Adapters) in TypeScript](https://www.matthewswong.com/en/blog/hexagonal-architecture-ports-and-adapters/)
- [Bounded Contexts in Domain-Driven Design and How to Find Them](https://www.matthewswong.com/en/blog/domain-driven-design-bounded-contexts-explained/)
- [Modular Monolith Architecture: When It Beats Microservices](https://www.matthewswong.com/en/blog/modular-monolith-architecture-guide/)
- [Strangler Fig Pattern: Monolith to Microservices Migration](https://www.matthewswong.com/en/blog/strangler-fig-monolith-to-microservices-migration/)
- [System Design for Developers: What It Is and How to Learn It](https://www.matthewswong.com/en/blog/system-design-explained-for-developers/)
- [Open Source Maintenance from Indonesia: The UTC+7 Timezone Tax](https://www.matthewswong.com/en/blog/indonesian-open-source-maintainer-sustainability/)
- [AI Commit Messages and Changelog Automation: Why Beats What](https://www.matthewswong.com/en/blog/ai-commit-message-changelog-automation/)
- [AI-Generated Tests: Coverage Rose, Mutation Score Did Not](https://www.matthewswong.com/en/blog/ai-generated-tests-coverage-honesty/)
- [Bundling LSP Servers in a Claude Code Plugin, and Its Cost](https://www.matthewswong.com/en/blog/claude-code-plugin-lsp-bundling-guide/)
- [Migrating Claude Code Dotfiles into a Versioned Plugin](https://www.matthewswong.com/en/blog/claude-code-dotfiles-to-plugin-migration/)
- [Claude Code Plugin Marketplace Curation: What Earns a Slot](https://www.matthewswong.com/en/blog/claude-code-plugin-marketplace-curation/)
- [Claude Code Plugin Eval: Catch a Skill That Never Activates](https://www.matthewswong.com/en/blog/claude-code-plugin-eval-test-suite/)
- [Claude Code Plugin vs Skill: When to Bundle a Workflow](https://www.matthewswong.com/en/blog/claude-code-plugin-vs-skill-bundling/)
- [Claude Code Interactive Mode: Shortcuts and Prompt Tricks](https://www.matthewswong.com/en/blog/claude-code-interactive-mode-shortcuts/)
- [Claude Code LSP Plugins: Real Code Intelligence for Claude](https://www.matthewswong.com/en/blog/claude-code-lsp-code-intelligence/)
- [Claude Code Errors: What They Mean and How to Fix Them](https://www.matthewswong.com/en/blog/claude-code-troubleshooting-common-errors/)
- [Claude Code CLI Flags: The Ones Worth Knowing by Job](https://www.matthewswong.com/en/blog/claude-code-cli-reference-flags-guide/)
- [Claude Code Sessions: Resume, Branch and Name Your Work](https://www.matthewswong.com/en/blog/claude-code-sessions-resume-branch-naming/)
- [Claude Code Desktop Scheduled Tasks: Local Automation](https://www.matthewswong.com/en/blog/claude-code-desktop-scheduled-tasks/)
- [Claude Code for JetBrains: The Plugin and Its MCP Server](https://www.matthewswong.com/en/blog/claude-code-jetbrains-plugin-guide/)
- [Claude Code in VS Code: The Extension, Not the CLI](https://www.matthewswong.com/en/blog/claude-code-vs-code-extension-guide/)
- [Claude Code Accessibility: Screen Readers and Beyond](https://www.matthewswong.com/en/blog/claude-code-accessibility-screen-reader/)
- [Claude Code Fullscreen: Flicker-Free, With Trade-Offs](https://www.matthewswong.com/en/blog/claude-code-fullscreen-focus-view-tui/)
- [Claude Code Keybindings: Rebind, Unbind and Chords](https://www.matthewswong.com/en/blog/claude-code-keybindings-customization/)
- [Claude Code Status Line: Context, Cost and Cache Live](https://www.matthewswong.com/en/blog/claude-code-statusline-customization/)
- [Claude Code Terminal Setup: Shift+Enter, Bells, Themes](https://www.matthewswong.com/en/blog/claude-code-terminal-setup-notifications/)
- [Flutter Bluetooth Thermal Printer Setup: Panda 58mm POS](https://www.matthewswong.com/en/blog/flutter-panda-bluetooth-thermal-printer-setup/)
- [Build 58mm ESC/POS Receipts in Flutter With esc_pos_utils](https://www.matthewswong.com/en/blog/flutter-escpos-receipt-builder-58mm/)
- [Flutter Bluetooth Permissions on Android 12+ for Printers](https://www.matthewswong.com/en/blog/flutter-bluetooth-permissions-android-12-printer/)
- [Fixing Garbled Flutter Bluetooth Thermal Printer Receipts](https://www.matthewswong.com/en/blog/flutter-thermal-printer-garbled-receipt-fixes/)
- [Epson TM-T82: Windows Driver vs Raw ESC/POS Printing](https://www.matthewswong.com/en/blog/epson-tm-t82-driver-vs-raw-escpos/)
- [TDD With AI Coding Agents: A Practical Workflow](https://www.matthewswong.com/en/blog/tdd-with-ai-coding-agents/)
- [How to Test AI-Generated Code: Best Practices](https://www.matthewswong.com/en/blog/testing-ai-generated-code-guide/)
- [Verification Loops: The Core Agentic Coding Skill](https://www.matthewswong.com/en/blog/verification-loops-agentic-coding/)
- [AI Agents for Legacy Code Migration: A Guide](https://www.matthewswong.com/en/blog/ai-agents-legacy-code-migration/)
- [Spec-First AI Coding: Let the Agent Interview You](https://www.matthewswong.com/en/blog/spec-first-agent-interview-workflow/)
- [AGENTS.md vs CLAUDE.md: Agent Context Files](https://www.matthewswong.com/en/blog/agents-md-vs-claude-md/)
- [Vibe Coding vs Spec-Driven Development](https://www.matthewswong.com/en/blog/vibe-coding-vs-spec-driven-development/)
- [Integration Testing NestJS with Testcontainers and Postgres](https://www.matthewswong.com/en/blog/testcontainers-nestjs-integration-testing/)
- [TypeScript using Keyword: Explicit Resource Management](https://www.matthewswong.com/en/blog/typescript-using-keyword-disposal/)
- [pnpm Catalogs: Fix Monorepo Dependency Version Drift](https://www.matthewswong.com/en/blog/pnpm-catalogs-monorepo-versions/)
- [JavaScript Iterator Helpers (ES2025): Lazy map/filter/take](https://www.matthewswong.com/en/blog/javascript-iterator-helpers-es2025/)
- [Deno 2: Node.js and npm Compatibility for Existing Projects](https://www.matthewswong.com/en/blog/deno-2-nodejs-compatibility/)
- [TypeScript Goes Native: The 10x Faster Go Compiler tsgo](https://www.matthewswong.com/en/blog/typescript-native-go-compiler-tsgo/)
- [Effect-TS: Typed Functional Error Handling in TypeScript](https://www.matthewswong.com/en/blog/effect-ts-functional-error-handling/)
- [The TypeScript satisfies Operator: Real Patterns](https://www.matthewswong.com/en/blog/typescript-satisfies-operator-patterns/)
- [Flutter Offline-First Outbox Sync for a Field App](https://www.matthewswong.com/en/blog/flutter-offline-outbox-sync-field-app/)
- [One Contract, Two Backends: Offline Parity for Web and Mobile](https://www.matthewswong.com/en/blog/mock-real-repository-adapter-offline-parity/)
- [Event-Driven Architecture: When NOT to Use It](https://www.matthewswong.com/en/blog/event-driven-architecture-when-not-to/)
- [API Versioning Strategies: URL, Header, or No Version at All](https://www.matthewswong.com/en/blog/api-versioning-strategies-rest/)
- [Clean Code Principles Every Developer Should Know](https://www.matthewswong.com/en/blog/clean-code-principles/)
- [Microservices vs Monolith: When to Split](https://www.matthewswong.com/en/blog/microservices-vs-monolith/)
- [REST vs GraphQL: Choosing the Right API Design](https://www.matthewswong.com/en/blog/api-design-rest-graphql/)
- [Test-Driven Development: Write Tests First](https://www.matthewswong.com/en/blog/test-driven-development-tdd/)
- [Software Architecture: MVC, CQRS, Event-Driven](https://www.matthewswong.com/en/blog/software-architecture-patterns/)
- [PostgreSQL Performance: Indexing & Query Tuning](https://www.matthewswong.com/en/blog/database-optimization-postgresql/)
- [Next.js Performance: Core Web Vitals & Beyond](https://www.matthewswong.com/en/blog/nextjs-performance-optimization/)

---

- HTML version: https://www.matthewswong.com/en/blog/category/software-development/
- Bahasa Indonesia: https://www.matthewswong.com/id/blog/category/software-development/
- Site index for agents: https://www.matthewswong.com/llms.txt
- Sitemap: https://www.matthewswong.com/sitemap.xml
- API description (OpenAPI): https://www.matthewswong.com/openapi.json
