Notebook
Whatever is holding my attention.
Notes from building with AI agents, plus whatever else teaches me something.
All posts
2026
- Embeddings rot too. Running pgvector in production.
- Stop shipping retrieval changes on vibes
- Your RAG is confidently wrong without hybrid search
- Stop tuning everything. pgvector has three knobs that matter.
- Your agent's knowledge base is lying to you. Run these 14 checks.
- I read all 1,061 comments on Karpathy's llm-wiki gist
- Claude watermarks its text now. Let's panic?
- HNSW or IVFFlat? Choosing and building your pgvector index
- Every result scores 0.81. Your search is broken.
- Search text and screenshots with one pgvector column
- Vector search in Postgres isn't magic
- AI agent architecture patterns that survive production
- Stop adding prompts. Your agent needs control flow.
- pgvector vs Pinecone for RAG
- RAG with Postgres, Drizzle, and pgvector
- Building an MCP Server in TypeScript with NestJS
- Build an MCP Server from Scratch
- Self-hosting an LLM as a TypeScript Developer
- Running Homebrew on Linux with Multiple Users
- Drizzle ORM vs Prisma
- Running cron jobs in NestJS
- Kafka vs RabbitMQ
- Zod vs Yup
- Unit and e2e testing in NestJS with Jest and Supertest
- NestJS microservices with a real two-service example
- TypeScript conditional types and how infer works
2025
2024
- React Component Lifecycle
- Email special headers
- How CQRS is different than Event Sourcing
- RabbitMQ exchange vs queue, explained
- What the pgvector operators <->, <=>, and <#> actually mean
- PgVector indexing options for vector similarity search
- Counting GPT tokens
- Logging route handler responses in Next.js 14
- Redirect www subdomain with Cloudflare
- Logging requests in Express app
- Move Docker volume to bind mount
- Docker Compose won't pull the latest image unless you tell it to
- Using puppeteer executable for GSTS
- Next.js Hydration Window Issue
- Using Git rebase without creating chaos in your repo
- Why EQ is Your Next Career Upgrade
- Finding Your Raspberry Pi Address on a Mac
- How to store vector embeddings in Postgres with Drizzle ORM
- RabbitMQ RPC pattern in TypeScript
- Optimize webpage load with special tags
- What the hell is Open Graph?
- List of useful Chrome args
- My go-to Next.js ESlint config
- The trap of making everything dynamic
- PostgreSQL doesn't have ON UPDATE CURRENT_TIMESTAMP. Here's the fix
- Cannot find module '../build/Release/canvas.node' on macOS
- Combining RxJS observables - Part 1