The Two Trees in React
React encourages thinking about your UI as a tree. But there are two different trees that matter for understanding re-renders, and confusing them leads to performance problems and wasted effort.
I'm a proud dad. I play badminton, do paragliding and make my own pasta. I enjoy building software on the web platform. Currently I build with TypeScript and Go for the German Airforce.
I organize the Munich TypeScript meetup.
And yeah, my last name is Assmann.
A beautiful markdown editor that works offline, syncs across all devices, and keeps your words encrypted. End-to-end encrypted with no account required.
A relationship journal app that helps me being a better friend. My take on how good web apps can and should feel.
A typesafe internationalization library that does not require code generation
A coding agent that runs in the CLI and stores the session as editable markdown
I write about what I think, learn, do.
React encourages thinking about your UI as a tree. But there are two different trees that matter for understanding re-renders, and confusing them leads to performance problems and wasted effort.
Replicache removed the network from the critical path. Jazz removes it from the architecture. Local-first development that feels like Zustand and syncs like magic.
When building my own typesafe i18n library, TypeScript's default errors became hard to work with. I learned how to create custom error messages that tell you exactly what's wrong and how to fix it.
What I have been cooking recently.
A thick, fluffy pan pizza with an olive oil crust, mozzarella, eggplant, and chunky tomato sauce.
A classic quark cheesecake with a tender crust and custardy filling.
Fluffy, caramelized torn pancakes dotted with raisins and finished with powdered sugar.