Writing

Notes & deep dives

What I'm building, what I'm learning, and the engineering trade-offs behind it — performance, distributed systems, and the parts of the job that don't fit in a commit message.

Start here

Three pillar essays — production judgment, distributed systems, and platform work. Read in order or jump to the one that matches your loop.

  1. 6 min readCase studyCutting a data API from 21s to ~250msWarehouse DML on the request path was the bug. Stage 1 fixed writes; stage 2 fixed reads. Neither stage was query tuning.
  2. 9 min readBuilding a collaborative editor with CRDTsReal-time collaboration is a relay problem, not a referee problem. Yjs CRDTs, an append-only update log, and snapshot + tail replay for fast joins.
  3. 12 min readCase studyLessons from building a mobile events social platformA React Native events-first social app — navigation traps, Firestore + RTDB messaging, WebRTC calling, Firebase security lessons, and the distribution playbook for TestFlight.
8 min readCase study

Building a microfrontend platform for data products

Federation type stubs, Auth0 CTE for downscoped tokens, and CI merge blockers for cache headers, CSP, and remote export drift.

  • Architecture
  • Micro-frontends
  • Module Federation
  • Auth0
  • Platform
9 min read

Triaging Shai-Hulud on my portfolio v2

npm audit fix --force pinned Next 9 and flooded the tree with CVEs. Shai-Hulud scanning found no worm IoCs — but still surfaced one real test-hygiene fix and a macOS false positive in Next telemetry.

  • Security
  • npm
  • Next.js
  • pnpm
  • Supply chain
6 min read

An Astro + Bun landing template experiment

I wanted a resale-ready marketing shell: one data file for copy, scroll-driven story sections, theme toggle, lead capture in demo mode, and e2e checks on deploy.

  • Astro
  • Bun
  • Static sites
  • DX
7 min readCase study

Bridging .NET and Spring across a message broker

Two stacks, one broker, zero custom translation layer. AMQP on the producer side, JMS on the consumer side, and idempotency everywhere in between.

  • Distributed Systems
  • Messaging
  • ActiveMQ
  • AMQP
  • JMS
  • .NET
  • Spring Boot
5 min read

Building a browser music visualizer with Goose

A weekend-side-project: drop-zone upload, waveform/bars/circular modes, and letting Goose handle the boilerplate while I focused on the analyser edge cases.

  • React
  • Web Audio
  • Goose
  • TypeScript
10 min readCase study

Self-hosting Llama-2 13B GPTQ on a GPU pod — and why I should have used SSE

RunPod + vLLM + Llama-2 13B GPTQ: auth-on-first-frame WebSockets, batch generate() chunked for UX, and the transport I wish I had chosen — HTTP streaming or SSE like experiment A.

  • vLLM
  • LLM
  • GPTQ
  • WebSocket
  • SSE
  • Infrastructure
8 min readCase study

Building a Gemini AI backend with SSE, hybrid matching, and Redis caching

Managed APIs first: Firebase context, hybrid interest/purpose/location scoring, Redis prompt cache, and POST /message/stream with true Gemini token streaming — not the GPU WebSocket experiment.

  • Gemini
  • Fastify
  • SSE
  • AI
  • Node.js
6 min readCase study

Shipping an Expo app through TestFlight

From expo-doctor and audit:ios to App Store Connect metadata — the operational playbook for getting an Expo app from dev build to TestFlight upload.

  • Expo
  • React Native
  • iOS
  • Mobile
6 min readCase study

Securing Firebase for a social mobile app

A cybersecurity audit on an Expo + Firebase social app: permissive Storage, Firestore profile leakage, and the fixes that actually matter before TestFlight.

  • Firebase
  • Security
  • React Native
  • Mobile
5 min read

Building Perpetual Gems: Angular SSR, i18n, and a repair intake API

Perpetual Gems at perpetual-gems.vercel.app: eight-locale ngx-translate, repair workflow UX, and a small Express API for secure form posts — Angular SSR without reaching for Next.

  • Angular
  • TypeScript
  • i18n
  • Express
  • SSR
4 min readCase study

Expo sandboxes: camera, Expo Router, and React Three Fiber

Before the archived social mobile codebase: camera capture, file-based routing sandboxes, and a Three.js scene through expo-gl — practice reps on the path to production Expo work.

  • React Native
  • Expo
  • Three.js
  • Mobile
7 min read

Modernizing a winter-study roguelike with Vite and ROT.js

Before React reconciled the DOM for you, this game called game.render() after every turn — display.clear(), redraw the map, repeat. That lesson survived a Vite 7 refresh.

  • JavaScript
  • Vite
  • ROT.js
  • Games
  • Rendering
6 min read

macOS wallpaper picker with SwiftUI and the Unsplash API

WallpaperApp: SwiftUI grid, presigned-style downloads to ~/Library/Caches, NSWorkspace.setDesktopImageURL, and a 2026 refresh path with async/await, Photos, and Screen Saver APIs.

  • Swift
  • SwiftUI
  • macOS
  • Unsplash