Engineering Notes
Why the engineering decisions were made. The reasoning, the trade-offs, and the failures that taught us each lesson.
No Deps, No Build
On building zero-dependency, no-build web applications with Bun for nonprofits, education, intranets, and small teams - and why appropriate complexity is a feature, not a compromise.
On-Premise, or at Least Your Own VPS
On cost, control, privacy, GDPR, local network performance, and what happens to your business when the internet goes down or a cloud provider's building catches fire.
The Database Is Not a JavaScript Object
A case for writing SQL directly - not because ORMs are wrong, but because the developer who reaches for one without learning what it replaces has chosen a ceiling.
Use the Tools That Work for You
On choosing tools by what makes you productive, not by what the community has decided signals the right kind of developer.
Use the Right Tool
On enforcing a modern browser baseline for internal applications, the real cost of backwards compatibility, and why the browser your staff uses is a business decision, not a technical given.
Quality Doesn't Matter ... Until It Does
Why quality standards must differ between social apps and enterprise software - and how investor pressure, low barriers to entry, and AI are driving a visible decline in the software that actually runs businesses.
The Database Is Probably Permanent
Why most teams never replace their primary database engine, and why designing for portability costs more than it returns. Covers stored procedures, views, triggers, DDL tooling, codegen as an ORM alternative, and the generator pattern behind Reepolee.
Why Bun's SQL Dies in CLI Scripts (and How to Fix It)
How Bun's internal SQL connection pool interacts with the event loop in CLI scripts, why idle connections fail to keep the process alive, and two fixes: reserve() for transaction-scoped connection affinity, setInterval() for fire-and-forget scripts. Both disappear inside Bun.serve().
The Dunning-Kruger Curve Has a Sweet Spot - and It's Hiring You Mid-Level Engineers
On the engineering talent market, why mid-level engineers compound faster than the extremes, and how AI tools specifically reward developers who are competent enough to direct them but curious enough not to trust them blindly.
We Make Our App Fail Loudly on Missing Environment Variables
On startup validation, silent fallbacks, and the principle that a process that won't start with bad config is safer than one that runs quietly with it. Covers Bun's env handling and a simple pattern for making misconfiguration impossible to miss.