2024
- Epic handshake: reorg half a seat to the left
How to avoid handoffs by defining the right roles
- Only 20 JavaScript runtimes left
Claim yours now before we run out!
2023
- <iframe>able finance
Designing and building embedded UIs
2018
- Learning about learning
Notes on study skills, meta-cognition, and how organizations learn — distilled from a vacation spent reading about learning.
2017
- Pure UI control
If Pure UI gave teams a shared language for display states, what’s the same idea for an interface’s behavior? A case for making control state explicit.
- What are the important problems in UI engineering?
Let’s escape the day-to-day to survey what’s coming next
- Preact in pictures
I gave a talk at tonight’s ReactJS Denver meetup about Preact.
- The new fast: advanced web performance best practices for 2017
Or: what Souders’ books didn’t tell you because it only happened in the last two years.
- Concurrent ML has a branding problem
And some suggestions from a complete outsider
- Synchronizable abstractions for understandable concurrency
Or: what is Concurrent ML all about?
- Preact internals #3: some fiddly little bits
How the virtual dom actually gets rendered to the DOM
- Preact internals #2: the component model
What makes React’s component model — composable, stateful, declarative — actually work, and how Preact implements both class-based and functional components.
- Preact internals #1: the easy parts
An introduction and gentle first steps in a series where we’ll read the Preact codebase and try to completely understand it.
- Mismatched assets with streaming service workers
An open question: when a service worker caches the header but streams the body, how do you keep CSS and markup from drifting?
2016
- Exhaustiveness checking in Flow
Flow’s exhaustiveness checking has a gap — but a cast to `empty` gets you the behavior the type system can’t quite express.
- Modeling business problems with ADTs in Flow/js
Tagged unions in Flow turn out to replace the worst part of ORM modeling: the big bag of nullable, secretly-correlated attributes.
2014
- React.js & Om talk
Videos and slides from a two-part introductory talk on React and then Om, given to the DC-area Clojure user group.
- Om experience report
First impressions of David Nolen’s Om — a thin ClojureScript wrapper over React — after building a small map-styling app over Christmas.
2013
- Constraint programming in the browser
My JSConf 2013 talk on Cassowary in the browser, plus a short reading list on constraint solvers for UI.
- You should speak at JSConf
How I went from no topic to a JSConf community-track talk in four weeks — and why you should try it too.
- Being inspired by Sketchpad
What Ivan Sutherland’s 1963 thesis still has to teach us — method dispatch, prototypical inheritance, and constraint-driven UI.
2012
- Stateful views
MV* frameworks handle stateless event bindings well, but drag-and-drop and other multi-step interactions want state machines.
- Deferred method combinator
Wrapping async dependencies with a higher-order function, so callers can keep treating a method as fire-and-forget.