Articles
Notes from shipping AI products and backends
28 practical articles on LLM apps, RAG, backend engineering, DevOps and the craft of working as an engineer — written from production experience, not from the docs.
Vibe Coding
AI-paired engineering. Claude Code, Cursor, agents, prompts.
Editors & Agents The tools that turn an editor into a collaborator.
Vibe Coding · 4 min
Vibe coding with Claude Code
How to delegate, when to drive, and what changes about software engineering when an agent is paired with you.
Vibe Coding · 3 min
Cursor: the editor as conversation
An editor where chat is a first-class citizen and inline edits replace the autocomplete stream.
Vibe Coding · 5 min
Agents and MCP: the long-running coding session
When 'one chat, ten edits' becomes 'one prompt, a whole feature.' What MCP actually does, and why it's the protocol I expected without realizing I expected it.
Vibe Coding · 4 min
Aider, Continue, and the CLI-first workflow
Editor-integrated AI is great. CLI-integrated AI is sometimes better. When and why I reach for Aider instead of Cursor.
Workflow & Prompts How to actually drive these tools day-to-day.
Vibe Coding · 4 min
Prompt engineering for engineers
Stop calling it 'engineering' until you treat it like one. Versioning, eval-driven iteration, and the prompt patterns that survive contact with production.
Vibe Coding · 5 min
A practical scorecard for AI coding tools
How to actually compare Cursor, Claude Code, Aider, Continue, and Copilot. The criteria that matter, the ones that don't, and what changes between teams.
AI / ML
LLMs, RAG, embeddings, fine-tuning, evaluation.
Foundations The mental model engineers need before shipping LLM features.
Retrieval & Embeddings RAG, vector search, hybrid retrieval — without hand-waving.
AI / ML · 5 min
RAG patterns that actually work
Naive top-k similarity is where most RAG systems start and where most of them fail. Here's what to do instead.
AI / ML · 5 min
Embeddings + vector DBs without the magic
What an embedding actually is, how vector search works under the hood, and how to pick between pgvector, Qdrant, and Pinecone.
Tuning & Eval Fine-tuning, prompt tuning, and how to know if any of it works.
AI / ML · 5 min
When fine-tuning beats prompt engineering
Most fine-tuning attempts are premature. Here's how to tell when you actually need it, and what cheaper alternatives to try first.
AI / ML · 5 min
Evaluating LLM apps: past the demo
The gap between 'looks good in the demo' and 'works at p99 in production' is where most LLM apps die. Here's how to measure your way across it.
Operating LLMs Cost, latency, fallback, observability for LLM apps.
Backend
Postgres, Redis, APIs, distributed systems, ops.
Databases Postgres + Redis, the workhorses behind everything.
Backend · 4 min
Postgres: the 12 settings that matter
After tuning a hundred Postgres instances, these are the dozen knobs I actually touch. Everything else is mostly noise.
Backend · 5 min
Redis: cache, queue, lock, mistake — pick one
Redis is fantastic at four things and dangerous when you mix them. A pragmatic field guide for production use.
APIs & Auth Designing and securing your service interface.
Backend · 5 min
API design without the cargo cult
REST vs RPC vs GraphQL is the wrong question. Here's a checklist that keeps you out of the worst API design mistakes.
Backend · 5 min
Auth: JWTs, sessions, OAuth, what to actually use
A decision tree for picking the right auth approach. JWTs are not the answer to every question, sessions are not obsolete, and most teams over-engineer this.
Distributed Systems Queues, consensus, idempotency, the things that bite at scale.
Backend · 3 min
Distributed systems for backend devs
Idempotency, retries, and the eight fallacies that bite you when one service becomes ten.
Backend · 5 min
SQS, RabbitMQ, Kafka — when to pick which
Three different jobs, three different tools. The decision tree, the pitfalls, and what to do when 'just use Postgres' is the right answer.
Operations Observability, caching, the "how does it run in prod" layer.
Backend · 4 min
Observability: traces beat logs
Logs find what you knew to look for. Traces find what you didn't. The pragmatic case for OpenTelemetry as the foundation of production debugging.
Backend · 4 min
Caching: where to put it, how it bites you back
Caching is the easiest way to make a slow system fast and the easiest way to make a correct system wrong. A field guide to the layers.
Personal Branding
Career, money, freelance, remote, GitHub, networking.
Online Presence LinkedIn, GitHub, blogs, networks — your public surface.
Personal Branding · 5 min
Building a LinkedIn presence that doesn't feel like LinkedIn
Show your work. Skip the inspiration porn. The audience is smaller and more valuable than you think.
Personal Branding · 5 min
Your GitHub is a portfolio
Most engineers' GitHub profiles are accidental. The ones that earn jobs and credibility are intentional. A short guide to making yours useful.
Personal Branding · 6 min
Technical writing as a career multiplier
The most under-priced skill in software. How to start writing publicly, what to write about, and how the compounding works.
Personal Branding · 5 min
Networking for engineers who hate networking
If 'building your network' makes you cringe, you're doing it wrong. The version that actually works for introverted engineers.
Career & Money Salary, freelance, remote — the engineer's income engine.
Personal Branding · 7 min
Making money as a software engineer (without selling out)
A taxonomy of income streams — salary, contracting, products, royalties — with rough numbers from someone who's tried most of them.
Personal Branding · 7 min
Freelancing as a backend engineer — the real playbook
How to find clients, what to charge, what to refuse, and how to avoid the loneliness trap.
Personal Branding · 7 min
Remote work, done well
What actually changes when you stop sharing a room with your team — and the habits that keep you sharp instead of slowly drifting.
Personal Branding · 7 min
Salary negotiation for engineers (with scripts)
The compensation gap between 'engineer who negotiated well' and 'engineer who didn't' is six figures over a career. The exact moves to make.
Prefer to learn this with me?
I train engineers and teams in full-stack, DevOps and AI, one-to-one or in groups.