Your Modules Are Lying to You
ESM and CommonJS expose values through different contracts. Learn how bindings, object references, evaluation order, caching, cycles, and interop shape module behavior in Node.js.
The edge cases of software engineering.
ESM and CommonJS expose values through different contracts. Learn how bindings, object references, evaluation order, caching, cycles, and interop shape module behavior in Node.js.
A reliable text-watermark detector can find an engineered statistical signal, but that result alone cannot reconstruct authorship, intent, or policy compliance.
How statistical text watermarks encode machine-readable signals in ordinary prose, how detectors recover them, and how copying, editing, and rewriting affect the result.
Object storage is separate from application state: how partial uploads, stale URLs, key collisions, CDN caches, and deletion create inconsistencies, and how to design for cleanup and recovery.
JSON looks like a faithful representation of JavaScript data, but JSON.stringify and JSON.parse can silently alter or discard information at system boundaries.
Databases are where correctness becomes shared state: how invariants break under concurrency, when transactions help and when they don't, why reads go stale, and how to design for retries, migrations, and recovery.
How a layoff and a security clearance wait turned into a year of open source projects, technical writing, and discovering what happens when work and side projects align.
Go 1.24 replaces the old bucket-and-overflow map internals with a Swiss Table-inspired design to improve cache locality, lookup speed, and memory efficiency.
The built-in Date API is full of traps: unreliable parsing, mutation, timezone confusion, and broken arithmetic. Here's what it's actually doing, and how Temporal finally fixes it.
Both chaos proxies gain structured --verbose observability, and every fetch-kit repo moves its release automation to a GitHub App with fixed Discord announcements.
Time is where application code meets uncertainty: clock skew, wall-clock corrections, ambiguous ordering, late schedulers, and business-calendar boundaries.
The network is where application code meets uncertainty: latency, retries, timeouts, duplicate side effects, degraded states, and ambiguous outcomes.
console.log() feels like a direct window into your program's state. It isn't. Here are the ways the console misleads you, and why each one exists.
I launched a newsletter for import chaos with new posts, practical engineering notes, and occasional release updates.
The fetch-kit ecosystem finally has a dedicated website at fetchkit.org, with overviews of all tools, examples, and the chaos arena.
npm, Yarn, pnpm, Bun, and Deno are not interchangeable install tools. They encode different assumptions about dependency layout, compatibility, reproducibility, and developer speed.
Stars and downloads tell you about popularity, not safety. Here's a practical checklist for evaluating an npm package's security, reliability, and long-term maintenance in 2026.
Building a Go-based CLI tool to export Confluence spaces to local Markdown files for RAG pipelines, offline docs, and Git-based knowledge management.
Tail-recursive code in JavaScript still risks stack overflow in real-world runtimes. Learn when recursion is safe and when to switch to iterative patterns.
A deep dive into the Go compiler pipeline: from lexing and parsing to SSA, optimization passes, and code generation.
You tightened your client with retries and resilience knobs. Sometimes that helps. Sometimes it quietly makes latency and reliability worse.
A production-ready TypeScript-first drop-in replacement for native fetch. V5.1.0 is out.
How to add convenience methods to a native Promise object without subclassing, wrapping, or changing what await returns.
ffetch-demo is a live browser arena for benchmarking JavaScript HTTP clients under controlled network chaos.
Throttling reduces noisy UI events, but naive implementations can drop the final state. Learn how trailing throttle guarantees correctness for resize, scroll, and high-frequency interactions.
Unify response caching and in-flight request deduplication with Cloudflare Durable Objects to eliminate duplicate work during cache misses in distributed systems.
Debounce smooths UI events but does not fix request lifecycle bugs. Learn how to prevent stale responses using AbortController, retries, and resilient fetch patterns.
Compare the performance of chaos-proxy in Node.js vs Go for HTTP chaos testing. See benchmarks, results, and practical advice for choosing the right proxy for resilient full stack app testing.
A production-ready TypeScript-first drop-in replacement for native fetch. V5.0.0 is out.
How to find the top-K items in Go using heap and streaming approaches.
Exploring the growing ecosystem of modern databases and the journey from the Database Zoo series to the upcoming book, The Database Safari.
Exploring how pagination strategies can impact GraphQL performance in Node.js applications.
Running a privacy-first disposable email service: Lessons from handling domain abuse flags, ServerHold suspension, and registry issues with nullmail.cc.
Advanced async in JavaScript: cancellation, timeouts, bounded concurrency, AbortSignal, and error handling for resilient Node.js and browser apps.
Learn how to eliminate redundant cache computations in distributed systems using Cloudflare Durable Objects.
Unit Testing in Go tutorial, published on freeCodeCamp.
Go's build system optimized for humans and machines: faster reproducible builds, smart caching, seamless CI/CD, and practical guidance to streamline modern developer workflows.
Master backpressure in JavaScript: how streams, fetch, and async code control data flow. Prevent memory spikes, latency collapse, and crashes in Node.js and the browser.
Explore why true cancellation is challenging in JavaScript. Learn the differences between cancellation, timeouts, and failures, and understand the limitations of Promises, async/await, and AbortController in handling async operations.
An in-depth look at Vector Databases, their architecture, use cases, and how they differ from traditional databases.
Go closures tutorial, published on freeCodeCamp.
Explore the concurrency model of modern JavaScript, including the event loop, async/await, and more.
A production-ready TypeScript-first drop-in replacement for native fetch. V4.1.0 is out.
Compare the performance of chaos-proxy in Node.js vs Go for HTTP chaos testing. See benchmarks, results, and practical advice for choosing the right proxy for resilient full stack app testing.
Learn how to use chaos-driven testing in full stack apps with integration tests that simulate network failures and latency. Discover practical techniques with chaos-fetch to build more resilient JavaScript and TypeScript applications.
Go pointers tutorial, published on freeCodeCamp.
An in-depth look at Probabilistic / Approximate Databases, their architecture, use cases, and how they differ from traditional databases.
Using chaos-fetch and chaos-proxy for lightweight chaos testing in dev/staging to improve app resilience and UX.
chaos-fetch is a TypeScript library for injecting network chaos - latency, failures, drops - into fetch requests. Easily simulate adverse network conditions in client-side code for robust testing and resilience. Now available as @fetchkit/chaos-fetch on npm.
FFetch is now @fetchkit/ffetch on npm, with improved support in the FetchKit ecosystem.