Notebook
Programming, systems, and whatever else holds my attention.
Essays, notes, and technical writing in one place. No panels, no dashboard, just the archive.
Notebook
Essays, notes, and technical writing in one place. No panels, no dashboard, just the archive.
02-20-2026
The trap of making everything dynamic
04-11-2025
A try at type-safe groupBy function in TypeScript
04-10-2025
Email special headers
04-10-2025
Adding prettier to eslint
04-09-2025
Storing Vector in Postgres with Drizzle ORM
04-09-2025
Upgrading my blog to Next 15
03-28-2025
Canvas macOS issue
03-26-2025
tsx doesn’t support decorators
03-21-2025
Validating NestJS env vars with zod
03-21-2025
Extending Window: types vs interfaces
03-08-2025
Loading env file into Node process
03-07-2025
Add update date field to Postgres
02-22-2025
Using node API for delay
11-29-2024
React Component Lifecycle
08-18-2024
How CQRS is different than Event Sourcing
08-14-2024
RabbitMQ exchange vs queue
08-13-2024
PgVector similarity search distance functions
07-31-2024
PgVector indexing options for vector similarity search
07-24-2024
Using puppeteer executable for GSTS
07-03-2024
Why EQ is Your Next Career Upgrade
06-30-2024
Counting GPT tokens
06-19-2024
Logging route handler responses in Next.js 14
06-17-2024
Redirect www subdomain with Cloudflare
06-16-2024
Logging requests in Express app
06-15-2024
Move Docker volume to bind mount
05-30-2024
Next.js Hydration Window Issue
05-16-2024
Using Git rebase without creating chaos in your repo
03-16-2024
Implementing RPC Calls with RabbitMQ in TypeScript
03-15-2024
Optimize webpage load with special tags
03-13-2024
What the hell is Open Graph?
03-11-2024
My go-to Next.js ESlint config
03-10-2024
List of useful Chrome args
03-09-2024
Combining RxJS observables - Part 1