Skip to content
● internet trash panda

Hi, I'm Sean.

Co-founder & CTO at B3, building a crypto agent & decentralized inference. Previously Coinbase. I sweat the small details in software, and leave the good parts (components, free tools & writeups) out in the open here.

Sean Geng

Components

all →

Writing

all →
An agent that hallucinates a transaction is an incident preview

An agent that hallucinates a transaction is an incident

A chatbot that's wrong wastes a sentence. An onchain agent that's wrong moves money you can't claw back. The moment you point a model at a wallet, the interesting part stops being the model. Here's what 'everything around it' actually is.

ai
crypto
agents
Onchain, vibe coding breaks in week two preview

Onchain, vibe coding breaks in week two

Vibe coding is the right tool for a prototype because nothing's at stake. Onchain, a wrong output is a wrong transfer, so the demo working tells you almost nothing about whether you can trust it with a wallet.

ai
crypto
agents
Let the model propose. Let deterministic code dispose. preview

Let the model propose. Let deterministic code dispose.

Every onchain bot I've shipped has the same hard boundary: probabilistic judgment on one side, deterministic consequences on the other. The model turns messy language into a number. Code the model can't touch turns that number into an action. Every time the boundary blurs, the blur is where the loss came from.

ai
crypto
agents
Rendering mermaid diagrams as hand-drawn tldraw, at build time preview

Rendering mermaid diagrams as hand-drawn tldraw, at build time

Mermaid's default output is fine, but it always looks like a tool drew it. tldraw can redraw the same diagram in a warm, hand-sketched style, and if you do the conversion at build time, you ship plain SVGs with zero client JS. Here's a framework-agnostic remark plugin that does it, with light and dark variants and content-hash caching.

tldraw
mermaid
markdown
Prefetching on intent: a library that loads the page before you click preview

Prefetching on intent: a library that loads the page before you click

The same prediction that warms a focus ring as your cursor approaches can do something far more useful: start loading the next page. intently watches where the cursor is heading, prefetches the link you're aimed at, and prerenders the one you're committed to via the Speculation Rules API. Why I built it when quicklink, instant.page, and ForesightJS already exist, and where it actually helps.

performance
prefetch
javascript
Interfaces that move before you do preview

Interfaces that move before you do

Most UIs wait for a click. The good ones react to intent: a focus ring that warms as your cursor approaches, a button that leans into you, a nav item armed before you arrive. The math is a point-to-rectangle distance and a falloff curve, and it's a few lines of pointermove. Plus where it earns its keep and where it quietly breaks accessibility.

frontend
interaction-design
css