Writing
Notes on building software, Web3, cryptography and whatever I'm deep in at the time.
2026
- Building an MCP server: what to expose and what to keep out
A practical look at writing an MCP server in TypeScript, from the first tool to the decisions about scope, descriptions and trust.
- Writing Move after Solidity
What changes when assets are objects you own instead of rows in a contract's mapping, and the Solidity habits I had to drop.
- Encrypting in the browser, not on the server
What changes when a post is encrypted before it leaves the client, and why 'encrypted at rest' is a weaker claim than it sounds.
- Making an indexer safe to retry
Queues retry. Chains reorg. Workers crash halfway through. Here is how I stop an on-chain indexer from counting the same event twice.
- Three ways a DAO treasury goes wrong
Notes from writing a small proposal-and-vote contract: snapshot your voting power, update state before you send ETH, and decide what 'passed' means.
- Hello, world
A new home for my notes on building things, and a small robot that keeps an eye on you while you read.