Notes

Notes on privacy engineering, infrastructure and audio production.

All notes

  1. January 2023 · AI

    A Guide to Node.js Natural Language Processing (on LogRocket, opens in a new tab)

    What natural language processing looks like in Node.js, with working examples of text classification and sentiment analysis.

  2. May 2023 · Data

    Node.js Web Scraping Tutorial (on LogRocket, opens in a new tab)

    Building a web crawler in Node.js that scrapes sites in parallel with worker threads and stores what it finds, then comparing it with open source crawlers.

  3. May 2026 · Privacy

    Pairwise pseudonymous IDs, the hard way

    How I designed pairwise subject IDs for OIDC at ConsentKeys: the constraints, why we used HKDF with per-app salts, and the rotation problem.

  4. December 2019 · Performance

    How to Use Chrome DevTools to Find Performance Bottlenecks (on DigitalOcean, opens in a new tab)

    Using Lighthouse audits and the Performance tab in Chrome DevTools to measure a page and track down what is slowing it down.

  5. May 2026 · Operations

    Private meshes, bare metal, and real sovereignty

    How we run Petrichor Labs on bare metal: tenant isolation on a private mesh, failover drills, CVE triage, and alerts on what users actually see.

  6. December 2019 · Backend

    How to Set Up a Node Project with TypeScript (on DigitalOcean, opens in a new tab)

    Setting up a Node.js project with TypeScript from scratch: compiler config, linting and a small Express server, so a growing codebase stays manageable.

  7. March 2026 · Infrastructure

    Sovereign hosting outside the US CLOUD Act

    How the US CLOUD Act shaped the design of Petrichor Labs, why we host in Canada, how we check vendors, and what we don't claim.

  8. June 2020 · Frontend

    Working with the JavaScript Cache API (on LogRocket, opens in a new tab)

    A tour of the browser Cache API: storing, matching and deleting responses, and where it fits when building progressive web apps.

  9. December 2025 · Audio

    Programming drums that don't sound programmed

    How I program drums in Ableton for my drunkgiantbird records: self-sampled hits, effort-driven velocity, scripted timing drift and a moving tempo track.

  10. February 2020 · Frontend

    Build an Isomorphic Application with Nuxt.js and Node (on LogRocket, opens in a new tab)

    What isomorphic apps are, built out as a pet adoption site in Nuxt that loads its data on the server before rendering the page.

  11. January 2021 · Frontend

    How to Access the Correct this Inside a Callback (on LogRocket, opens in a new tab)

    Why this points somewhere unexpected inside JavaScript callbacks, and the ways to bind it to the object you actually meant.

  12. December 2019 · Frontend

    How to Build a Universal Application with Nuxt.js and Django (on DigitalOcean, opens in a new tab)

    Building a universal app with a Django REST API on the back end and Nuxt.js rendering the front end on the server.

  13. September 2019 · Frontend

    5 Vue DevTools Hacks You Should Be Using (on LogRocket, opens in a new tab)

    Five ways to use Vue DevTools to inspect and change a running Vue app, so debugging takes less guesswork.

  14. June 2019 · Frontend

    Router Options Compared: Vue Router, Voie, Vue-routisan and Vue-route (on LogRocket, opens in a new tab)

    Comparing four routing libraries for Vue side by side, and why Vue Router is usually the one to pick.