Blog

Thoughts on web development, simplicity, and building things that work

The Five Stages of a Believable Cursor

What does it actually take to make a fake mouse cursor move like a real one? A hands-on tour through linear interpolation, easing, Bézier curves and the biomechanics of why arms curve — with interactive demos for each piece.

Read More →
AnimationJavaScriptUXBezier CurvesMaths

Zero-Knowledge without a Password

DarkAuth derives your encryption keys from your password and never lets the server see them. So what happens when there's no password? Here's the long, winding road to federation, SCIM and passkeys without giving up zero-knowledge.

Read More →
DarkAuthSecurityZero KnowledgePasskeysOIDCSCIMOpen Source

AutoRules: AI-Powered Code Validation

How I built a tool that validates every file in your codebase against custom rules using AI, running at 300 tokens/second for less than a cent.

Read More →
AICode QualitySecurityTestingOpen Source

DuckDB and OPFS for Browser Storage

How I built a todo list using DuckDB WebAssembly and Origin Private File System storage to create persistent browser-based database applications.

Read More →
DuckDBOPFSWebAssemblyFunctional ProgrammingWeb StorageTypeScript

From Frameworks to Functions

Challenge the norm of using big frameworks and discover the benefits of simple, functional programming approaches.

Read More →
Functional ProgrammingFrameworksExpress

Stop Mocking Internal Logic

Why you should stop mocking internal application logic and start mocking external dependencies with test servers instead.

Read More →
TestingMockingJavaScript

You Don't Need Redux

Explore why Redux might be overkill for your React application and discover simpler alternatives for state management.

Read More →
ReactReduxState Management