Articles & Project Notes
Notes on software architecture, Node.js, Java, backend engineering, and lessons from real projects.
A minimal Node.js backend for Stripe Checkout — SQLite via node:sqlite, 9 webhook events handled, full test suite, and a step-by-step Hostinger deployment guide.
The problem with most modernization projects is that teams rush to rewrite before they fully understand what the old system was actually doing.
The theorem is mathematically true and physically meaningless at human scales. What it actually teaches engineers about randomness, scale, and why "it'll work eventually" is not a plan.
The theorem guarantees that a random process will eventually produce any finite string — but "eventually" can mean longer than the age of the universe, many times over. How this applies to fuzzing, cryptographic key spaces, procedural generation, and why absence of observed failure is not the same as demonstrated robustness.
Read article →A minimal Node.js backend for Stripe Checkout using Node's built-in node:sqlite — no native compilation needed. Handles 9 webhook event types with an idempotency-safe audit log, includes a full test suite with Node's built-in test runner, and ships with a complete Hostinger deployment guide and Stripe keys reference.
Read article →A focused Node.js CLI tool that handles the full pipeline from content generation to WordPress publishing — resolves categories, fetches markdown, converts to HTML, uploads featured images, and creates posts or pages via the WordPress REST API. Supports batch runs, status flags, and page templates.
Read article →Most modernization projects fail not because the old code is bad, but because teams skip the comprehension work before touching anything. Legacy systems carry institutional knowledge — edge cases, business rules, and failure modes accumulated over years. The strangler fig pattern and characterization tests are the right tools for working with them safely.
Read article →After years with Express, the schema validation model and performance profile of Fastify changed how I think about API design. Schema-first routing, scoped plugin encapsulation, and built-in response serialization make it a better default for serious Node.js backend work — and the ecosystem gap has largely closed.
Read article →