Writing

Notes from inside the systems

No tutorials on things I have not run. Every article here comes out of a decision I had to make, defend, and then live with in production.

  • Full Stack2
  • Backend3
  • AI2
  • DevOps1
  • Engineering2
Subscribe via RSS
Read Selling With the Wi-Fi Down: An Offline-First POS in Tauri 2.0
Full stack12 min

Selling With the Wi-Fi Down: An Offline-First POS in Tauri 2.0

A till that stops working when the internet does is a till that loses money. Here is the outbox-plus-idempotency contract that lets a Tauri desktop POS sell offline and replay safely into a Django backend - without double-charging anyone.

  • Tauri
  • React
  • SQLite
  • Django
Read
Read Decomposing a Monolith Without a Rewrite
Architecture10 min

Decomposing a Monolith Without a Rewrite

Seams before services. How to extract modular services from a legacy monolith incrementally - with the data ownership rule, the strangler pattern, and an honest list of what you give up the moment a function call becomes a network call.

  • Architecture
  • Microservices
  • Django
  • Refactoring
Read
Read Leases Over Locks: A Crash-Safe Work Queue in PostgreSQL
Distributed systems9 min

Leases Over Locks: A Crash-Safe Work Queue in PostgreSQL

How FOR UPDATE SKIP LOCKED plus expiring leases gives you a distributed, crash-safe work queue without adding a broker to your architecture - with the reaper, backoff and priority scheduling that make it production-grade.

  • PostgreSQL
  • Distributed Systems
  • Queues
  • Python
Read
Read Four Stages of Deduplication: Spend Your Compute Where It Matters
AI engineering10 min

Four Stages of Deduplication: Spend Your Compute Where It Matters

A cost-ordered cascade - URL hash, content hash, SimHash banding, then BGE-M3 semantic comparison - that kills the vast majority of duplicates with an index lookup and reserves embeddings for genuinely ambiguous pairs.

  • Deduplication
  • SimHash
  • Embeddings
  • pgvector
Read
Read At-Least-Once Is a Promise You Have to Keep
Backend9 min

At-Least-Once Is a Promise You Have to Keep

Redis Streams consumer groups give you delivery guarantees; they do not give you correctness. What idempotent handlers, delayed retries, dead-letter streams and stale-message reclaim actually look like in production.

  • Redis
  • Streams
  • Reliability
  • Python
Read
Read Schema-per-Tenant Django: Isolation You Cannot Forget to Apply
Architecture11 min

Schema-per-Tenant Django: Isolation You Cannot Forget to Apply

Row-level tenancy is one missing WHERE clause away from a data breach. Schema-per-tenant moves isolation from something developers remember into something the database enforces - and here is what it costs.

  • Django
  • PostgreSQL
  • Multi-Tenancy
  • SaaS
Read
Read Holding 10k Daily Users Before You Buy a Bigger Server
DevOps10 min

Holding 10k Daily Users Before You Buy a Bigger Server

Connection exhaustion, N+1 queries, missing composite indexes and recomputed dashboards - the four things that actually limited a Django SaaS, and why PgBouncer came before hardware.

  • PostgreSQL
  • PgBouncer
  • Django
  • Performance
Read
Read One API, Three Clients: A Dashboard, a Phone and a Turnstile
Full stack9 min

One API, Three Clients: A Dashboard, a Phone and a Turnstile

What changes when the same backend has to serve a React dashboard, a React Native app and a biometric device on a gym LAN - untrusted clocks, offline buffers, and why the hardware client reshaped the API contract.

  • API Design
  • Django
  • React Native
  • IoT
Read
Read Let the Agent Propose, Not Write
AI engineering9 min

Let the Agent Propose, Not Write

The single boundary that separates an LLM feature you can point at production data from a demo you cannot - plus schema-validated extraction, provider fallback and cost accounting as engineering concerns rather than prompt concerns.

  • LLM
  • Agents
  • Gemini
  • LangChain
Read
Read A Release Should Be One Git Tag
Engineering practice8 min

A Release Should Be One Git Tag

Every manual step in a release is a step someone will skip at 11pm. How tag-driven CI, generated changelogs, semantic versioning and Poetry lockfiles turned publishing a Python package into a single command.

  • Python
  • Poetry
  • GitHub Actions
  • CI/CD
Read

Topics covered

  • API Design
  • Agents
  • Architecture
  • CI/CD
  • Concurrency
  • Deduplication
  • Deployment
  • Distributed Systems
  • Django
  • Docker
  • Embeddings
  • Gemini
  • GitHub Actions
  • Idempotency
  • IoT
  • LLM
  • LangChain
  • Leadership
  • Microservices
  • Multi-Tenancy
  • Multilingual NLP
  • Offline Sync
  • Offline-First
  • Open Source
  • Performance
  • PgBouncer
  • Poetry
  • PostgreSQL
  • Python
  • Queues
  • RBAC
  • React
  • React Native
  • Redis
  • Refactoring
  • Reliability
  • SQLite
  • SaaS
  • SimHash
  • Streams
  • Tauri
  • Versioning
  • WebSocket
  • pgvector