Keep Your Ownership Tree Shallow
UI code becomes hard to change when product decisions are buried across deeply nested components. Keep feature ownership shallow, make decisions visible, and enforce it with ESLint.
I'm a proud dad and engineer building syntwin.ai.
I spend a lot of time thinking about product and design. How software feels matters to me. I'm a local-first enthusiast and PWA fanboy.
When not coding, I'm with my family, cooking or doing some kind of sports. I also organize the Munich TypeScript Meetup.
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
UI code becomes hard to change when product decisions are buried across deeply nested components. Keep feature ownership shallow, make decisions visible, and enforce it with ESLint.
Learning TypeScript felt like the compiler was against me. But once I understood it as a tool, everything changed.
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.
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.