Product Manager based in Czechia.
I build things that solve real problems and write about what I learn.
Currently working on Limit: Social Bookmarks - an iOS app for Bluesky.
Product Manager based in Czechia.
I build things that solve real problems and write about what I learn.
Currently working on Limit: Social Bookmarks - an iOS app for Bluesky.
A very short history can work I continue my small experiment with short books. This time, the history of China. Can it work? China is not exactly a small topic. This is a very small book. I read The Shortest History of China by Linda Jaivin. And for me, it worked surprisingly well. I came in knowing very little. Just the usual clichés, some periods, vague timelines. Nothing solid. The book moves fast — through emperors, collapses, reunifications, invasions. But it hits the important beats and lingers just long enough on the turning points. ...
Barbar wasn’t a savage I was reading Against the Grain by James C. Scott the other day. At one point, he casually mentions the origin of the word barbarian. And it stuck. Originally, the Greek barbaros didn’t mean savage. It meant “someone who doesn’t speak Greek.” That’s it. No moral judgment. No claim of superiority. Just: your language sounds like blah-blah to us. Foreign. Outsider. Different. Then the meaning moved Over time, barbaros stopped being about language. It became cultural. Then moral. Then political. ...
Claire Keegan Small Things Like These Some books don’t raise their voice. They don’t rush. They don’t try to convince you. Nothing explodes. There are no twists designed for discussion threads. No dramatic reveal halfway through. And that turns out to be more than enough. I didn’t know about the Magdalen laundries in Ireland before reading this book. The book doesn’t lecture or explain. The tension here is mild. Deliberately so. The story tightens slowly, quietly, almost politely. And because of that, the ending doesn’t shock — it lands. ...
Business negotiations ain’t a movie Business negotiations don’t look like the movies. No sharp suits walking away in slow motion. No last-second one-liners that magically fix everything. What they really look like is coffee gone cold, long pauses, and people doing math in their heads while pretending they’re not. It’s relationships. It’s patience. It’s trade-offs you don’t brag about later. This is how I negotiate compensation in long-term business relationships. Not theory. Not LinkedIn wisdom. Just scars, timing, and knowing who you still gotta work with next year. ...
Business negotiations rarely look like they do in movies. No dramatic one-liners. No instant wins. What they do involve is relationships, patience, and a lot of practical trade-offs. This article walks through how I approach negotiating business compensation in long-term, real-world partnerships — scars included. I’m not a professional negotiator. No life depends on my negotiation skills. Luckily. Still, I’ve spent enough time negotiating to have a few scars and a couple of useful opinions. ...
ATProto lexicon; PDS-owned records; AppView-gated community lists; web next. The Idea Here’s the itch: I save links everywhere, and every app treats that like a favor I should be grateful for. I don’t want gratitude. I want ownership. So I built bookmarks that live in my PDS, not in some hostage drawer. Lists work like playlists — the same link can sit in Research, Weekend Reads, and Chaos Gremlins at the same time — and everything starts private until I decide otherwise. The lexicon stays deliberately small. If the data can’t walk out the front door with me, I’m not interested. ...
ATmosphere: AI-friendly protocol for communities There was a time when building a social app meant reinventing the wheel. You had to own the backend, the user accounts, the content format. Then AT Protocol showed up and quietly flipped the script. Suddenly, it’s an open multiverse — think Marvel, but instead of superheroes, you have communities and apps. The rules of physics (protocol, identity, data) are shared. Everything else? Up for grabs. ...
The Big Picture When I set out to build Limit: Social Bookmarks, an iOS client for Bluesky, I initially implemented App Passwords authentication. It worked, but the user experience wasn’t great - users had to navigate to settings, generate an app password, copy it, and paste it into the app. I wanted something better, so I decided to tackle OAuth 2.0. This is the story of building a complete OAuth solution with DPoP (Demonstrating Proof of Possession) support, spanning from Cloudflare Workers backend to a native iOS app. ...