Skip to content
// writing

Thoughts on code,
craft & exploration.

A mix of technical deep-dives, career reflections, and dispatches from the road.

Dividend Yield Is a Ratio, Not a Promise thumbnail
financeSep 2, 2026· 4 min
Dividend Yield Is a Ratio, Not a Promise
A high dividend yield can mean a company is generating serious cash, or it can mean the share price is falling faster than the payout. Here's how to tell the difference.
read more →
Obsidian URI: Your Vault Has an API You're Not Using thumbnail
obsidianSep 1, 2026· 4 min
Obsidian URI: Your Vault Has an API You're Not Using
Obsidian ships with a custom URI protocol that lets scripts, browsers, and phone shortcuts read and write your vault without you touching the app. Here's how the core actions work and where the Advanced URI plugin picks up the slack.
read more →
Async Svelte: Using await Directly in Your Components thumbnail
developmentAug 30, 2026· 4 min
Async Svelte: Using await Directly in Your Components
Svelte 5.36 lets you use await at the top level of a component, inside $derived, and in your markup. Here is how synchronized updates, boundaries, and $effect.pending() fit together.
read more →
What's Actually in Your Phone When You Tap to Pay thumbnail
financeAug 29, 2026· 4 min
What's Actually in Your Phone When You Tap to Pay
Your card number isn't in your phone. Here's what a digital wallet actually stores, why a stolen token is useless on its own, and why merchants care about tokens for reasons that have nothing to do with security.
read more →
DataviewJS: The Escape Hatch When Bases and DQL Run Out thumbnail
obsidianAug 28, 2026· 4 min
DataviewJS: The Escape Hatch When Bases and DQL Run Out
Bases handles most vault dashboards now, and Dataview's query language covers the rest. DataviewJS is what you reach for when neither can express the thing you actually want.
read more →
The Web Locks API: One Tab Does the Work, the Rest Wait thumbnail
developmentAug 27, 2026· 5 min
The Web Locks API: One Tab Does the Work, the Rest Wait
Your app already runs in five tabs at once, and they all think they are in charge. The Web Locks API gives the browser a real mutex so only one of them does the work.
read more →
How US Regulators Sorted Crypto Into Five Buckets thumbnail
financeAug 26, 2026· 5 min
How US Regulators Sorted Crypto Into Five Buckets
For years, whether a token was a security came down to a lawyer's read of a 1946 orange grove case. In 2026 the SEC finally published a taxonomy, and then proposed rules to go with it.
read more →
Writing an Obsidian Plugin Is Smaller Than You Think thumbnail
obsidianAug 25, 2026· 4 min
Writing an Obsidian Plugin Is Smaller Than You Think
Most people patch around a missing Obsidian feature with a Templater script and a CSS snippet. The plugin API is often the shorter path, and the surface area you actually need is tiny.
read more →
Form-Associated Custom Elements: Web Components That Belong in a Form thumbnail
developmentAug 24, 2026· 4 min
Form-Associated Custom Elements: Web Components That Belong in a Form
Custom elements can be real form controls. Here is how formAssociated, ElementInternals, and setValidity retire the hidden-input hack for good.
read more →
Next.js Partial Prefetching: One Shell Per Route, Not One Per Link thumbnail
developmentAug 23, 2026· 4 min
Next.js Partial Prefetching: One Shell Per Route, Not One Per Link
Next.js 16.3 stops firing a prefetch request for every link in the viewport and caches one reusable loading shell per route instead. Here's what changes and how to turn it on.
read more →
// the newsletter
Don't miss the next one