Blog
The translator who emailed me
I stood up a whole self-hosted Weblate instance to invite translators. A missing email setting silently blocked the first one who showed up — until he emailed me directly. By the next morning: Italian at 40%.
"This event only": the edit that quietly did nothing
Editing a single instance of a recurring event is one of the sharpest edges in the calendar model. A bug in Calendula, and why recurrence makes "just save it" surprisingly hard.
The week my calendar app stopped being just mine
Calendula was a thing I built for myself. Then strangers started relying on it, filing issues, debating design in the comments — and it turned into something with a small community around it.
Compose for widgets, RemoteViews underneath
Jetpack Glance lets you write home-screen widgets in Compose. But it compiles down to RemoteViews — so the old constraints still bite through the nice API. Three Calendula bugs that proved it.
Hello, world
First post — what this site is and how it's built.
Why my calendar app has no internet permission
Calendula can't talk to the network — and that's the whole design. A look at building on Android's CalendarContract instead of reinventing a sync stack.
Open standards as a constraint, not a checkbox
CalDAV, iCalendar, OpenTasks, DecSync — why I treat open standards as a hard boundary for what the Floret apps are allowed to do.