0%

0000000

0x00

Journal · page 2

Writing

Field notes on full-stack engineering, DevSecOps, self-hosted AI and real-time browser graphics. Written from the work, not about it.

25 entries7 categoriespage 2 of 3

  • Self-Hosted AI11 min read

    n8n MCP Agent Workflow in Production: Where the Agent Stops

    In an n8n MCP agent workflow, the agent drafts and n8n holds publishing. Postiz's schedulePostTool takes a type of draft, schedule or now, so the limit is a parameter n8n must pin.

  • Browser Creative11 min read

    Web Audio Scheduling Drift: Right in Code, Late in the Room

    A Web Audio metronome on setTimeout drifts because the JavaScript timer and the audio clock are two clocks. A lookahead scheduler on currentTime fixes it, measured before and after.

  • Self-Hosted AI8 min read

    Claude API OCR on Financial-Aid Letters: Check the Math, Not the Reading

    LLM OCR on financial-aid letters: a strict schema, deterministic normalising, sums that must reconcile, and flags for people. Reading the page is only the first check.

  • Embedded and IoT7 min read

    ESP32 Provisioning and MQTT Reconnects: Offline Is Normal

    ESP32 firmware has to treat offline as normal: Wi-Fi provisioning that does not fight the radio, capped reconnects with backoff, an MQTT outbox that expires in 30 seconds, and a local gateway.

  • Infrastructure8 min read

    Trivy and Snyk Gates in GitLab CI: What Should Block?

    A Trivy and Snyk security gate in a GitLab CI pipeline earns its place by blocking the right merge: fixable critical and high findings stop, the rest report, and every ignore expires.

  • Self-Hosted AI6 min read

    Qdrant and BGE-M3: Hybrid Search Without a Second Model

    BGE-M3 produces dense and sparse vectors from one pass, so Qdrant can run hybrid search for production RAG without a second embedding model: prefetch both, fuse with RRF, filter early.

  • Next.js6 min read

    The Payload Migrate Hang: a Flag That Did Nothing

    payload migrate hangs in CI when a dev-mode marker row waits on a y/N prompt no runner can answer. The documented flag does not reach that command. Deleting one row does.

  • Browser Creative4 min read

    face-api.js Privacy: Verify It in the Network Tab

    A privacy claim worth trusting is one you can check. The Network tab on a live face-api.js app shows the model weights load once, then zero requests while the camera runs.

  • Infrastructure7 min read

    AWS to Self-Hosted Migration Cost Starts With Paperwork

    An AWS to self-hosted migration for sensitive data moves stateless services first and databases last, after procurement and KYC. The real cost is the operations you take back in house.