Short notes on useful things I've learned. Inspired by @simonw and @jbranchaud.
- Monoid - 2025-12-07
- Printing V8 bytecode - 2025-12-03
- Branded types in TypeScript - 2025-11-19
- Explicit resource management - 2025-10-09
- WebAssembly library initialization patterns - 2025-10-05
- FinalizationRegistry - 2025-09-25
- Faster formatting and linting - 2025-09-17
- Lightweight TypeScript support in Node - 2025-09-09
publishConfigin package.json - 2025-09-08- Git exclude - 2025-09-04
uv run- 2025-09-02- Absolute references in spreadsheets - 2025-08-31
- Blender - 2025-08-21
- Wasm modules in Node - 2025-08-05
- Sticky regexes and the
lastIndexproperty - 2025-07-30 - Better fast-check error messages - 2025-07-28
- Property-based tests with fast-check - 2025-07-27
- Collective action problem - 2025-07-18
- Exponentially-segmented arrays - 2025-07-16
- V8 Pointer tagging - 2025-07-11
- The HAMT popcount trick - 2025-06-26
- Debug Adapter Protocol - 2025-06-22
- Zig shadowing and builtins - 2025-06-08
- binaryen.js - 2025-05-25
- The
popcntandlzcntinstructions - 2025-05-18 - Single-pass code generation - 2025-05-04
- logrotate - 2025-04-27
- Backups with Borg and borgmatic - 2025-04-20
- Two-way sync with Unison - 2025-04-13
- Managing a Bunny CDN config with Terraform - 2025-04-06
- Gmail backups with imapsync - 2025-03-30
- Migrating from GMail to Soverin - 2025-03-23
- EU-hosted LLMs for coding - 2025-03-20
- Managing dotfiles with a bare Git repo - 2025-03-16
- Cookie banners - 2025-03-08
- Styling for print - 2025-02-26
- Castlemacs and Magit - 2025-02-21
- WebP is awesome - 2025-02-14
- Get image dimensions at the command line - 2025-02-14
- Getting started with Zig - 2025-01-22
- Lightweight multitenancy for server-side JS - 2025-01-18
- Why silicon wafers are round - 2025-01-15
- Scripting GMail with Python - 2025-01-07
- Longer V8 stack traces - 2024-11-22
- Debugging shaders - 2024-09-23
- Shader performance profiling on macOS - 2024-09-13
- Installing Python type stubs - 2024-07-17
- PyScript - 2024-07-01
- Box blur - 2024-06-30
- Curvature combs - 2024-05-23
- JAX - 2024-05-22
- Rye and Poetry - 2024-05-16
- Corner plot - 2024-05-10
- Simplex - 2024-04-28
- The symtable module in Python - 2024-03-14
- esbuild dev server - 2024-03-07
- Run-time code generation in WebAssembly - 2024-02-22
- Data race - 2024-02-17
- Authentication in Playwright scripts - 2024-02-16
- Scratch's semantics - 2024-02-07
- Pareto frontier - 2024-02-07
- Bun dev server - 2024-02-03
- Source maps in Vite - 2024-01-25
- Finding deoptimizations - 2023-11-23
- Debug options for JS libraries - 2023-11-14
- Monoid
- Collective action problem
- Why silicon wafers are round
- Corner plot
- Simplex
- Data race
- Pareto frontier
- Printing V8 bytecode
- Branded types in TypeScript
- Explicit resource management
- WebAssembly library initialization patterns
- FinalizationRegistry
- Faster formatting and linting
- Lightweight TypeScript support in Node
publishConfigin package.json- Wasm modules in Node
- Sticky regexes and the
lastIndexproperty - Better fast-check error messages
- Property-based tests with fast-check
- Lightweight multitenancy for server-side JS
- Longer V8 stack traces
- esbuild dev server
- Bun dev server
- Source maps in Vite
- Finding deoptimizations
- Debug options for JS libraries
uv run- Scripting GMail with Python
- Installing Python type stubs
- PyScript
- JAX
- Rye and Poetry
- The symtable module in Python