The Third Floor at ethBerlin
ethBerlin is full of rooms you have to find yourself.
At the back of the third floor there's a big, quiet room with good light and big windows. You can really focus here. The food's a long way off, so people bring back fruit and water to share.
I'm there with SDP β Social Dist0rtion Protocol β making one of their treasure hunt games for the hackathon. Ronan's beside me. He made hardhat-deploy. He regularly does things with Solidity that nobody else thought possible, and he wins hackathons the way some people finish crosswords. I'm the opposite: a novice, learning to code again after years away. We became friends because we both stubbornly choose Svelte over React.
One of the hackathon tracks is "meta" β hack the hackathon itself. So I find Ligi, one of the organisers, and ask him: what's the one thing that's been bugging you since last year?
His answer: they're stuck on a Google Calendar backend. Again.
They know they want open, privacy-respecting calendars, but they're locked in, and changing platforms always gets pushed back for the constant urgencies you deal with.
So I start building an anonyming calendar frontend thing with Zupass, the ZK ticketing platform, gating access. Three days of fighting JavaScript. Zupass is built for React. Svelte is ESM, and the CJS/ESM incompatibilities in Zupass are brutal β so I have to cut into it, finding the pieces I need to pull out.
At one point I've been stuck for hours on a module problem I'm too embarrassed to ask for help with. Especially not Ronan who's sat beside meβ the man builds frameworks for fun. But during a casual check-in, he clocks that I'm stuck and just helps.
I meet a dad on the third floor. I have a new baby at home. He tells me about Diaper Free β blows my mind. We talk about parenting between hacking sessions. At one point, he helps me find something in Zupass too.
Five Minutes Left
Between running the SDP game and hacking, I'm up for three days straight. Pretty sure this is only possible because of my new dad superpowers.
We get down to the final hours. I joke to Ronan: "you're gonna end up making a new framework instead of shipping your game." He grins. He'd actually done exactly that.
We say: let's just submit whatever we've got. Neither of us think we have a hope, but at least we'll have a record that says we were here.
I've been peeling back Zupass's abstraction layers all weekend. With an hour left, I decide to cut to the root. Implement PSE's Semaphore library directly. Clean. It works. Just no UX.
A minute left. I don't have a name. I tell Ronan. He looks at me, in a French way, and says in his French accent: "well Zkal of course, with a zk."
I'm chatting with friends at the auditorium door when my name gets called. I place first in the meta track and I don't believe it. When I walk to the stage, I feel like I'm tuning into someone else's body from another dimension.
Then the dad's team wins a prize for their social game.
And Ronan wins in smart contracts. Of course he does.
I genuinely wanted to make something useful for DoD, not win a hackathon. So I commit to getting it done.
The hackathon wraps up. DoD does rounds, doing shots with the hackers. I catch a conversation with Afri, another organiser, worried about the no-show problem β how competitive side events and RSVP inflation had even affected ethBerlin that year.
Then I go home. New baby. Difficult situation. A bunch of logistics collapsing at once. Zkal stays a priority in my head, but time is a thing I don't have.
That Slow Squeek is The Sound of Doors Closing
We stay in touch. Each time something shifts, I reach out to Ligi, take on the new direction. Their calendar privacy problem evolves into the RSVP problem β no-shows are ruining blockchain weeks everywhere.
But the doors start closing, one by one. I can't make it to Thailand for Devcon. Part of my prize was a ticket. Ligi had wanted to use Zkal there. That stings doubly.
At another point, Ligi asks for Bluesky integration. Somehow.
This whole time, I know I need to carve out reliable, regular time every weeo to take responsibility for a real app. When I finally have it, it's almost a year later. I check in with Ligi.
Is this still useful?
He says yes, let's talk at CCC.
So I get to work.
The calendar idea has grown into something else. A real answer to the RSVP Problem. A whole cryptography architecture. An indexing system for events to have a public quality signal β a score built from how many attendees have real attendance history β without anyone's identity touching the public layer.
But the Zupass dev channels are a ghost town. Docs are out of date β they're building a new POD2 library. I dig into the codebase myself, trace the paths I need through 50k lines of code.
I push through because DoD matters.
At CCC, Ligi tells me they might bring DWebCamp to Berlin instead of doing ethBerlin this year. He sees Zkal as the schedule layer.
A few months later: the DWebCamp organisers are against it. They're embedded in centralised platforms β sched.com, Google Docs. DoD's hands are already full making the collaboration work with Pretix and Cryptpad.
DWebCamp is a five-day glamping event with ticket prices to match. When people pay, the RSVP problem solves itself. At least for the organisers of the paid event. If you paid 800 EUR for a ticket, you're not likely to flake out.
It's the right move for DoD. New opportunities for DWeb and Berlin. Plus, they've been burning hard for years, holding together a community that matters to the whole ecosystem. This helps share the load.
The downside is that a lot of the regular ethBerlin community won't be able to afford it.
And the RSVP problem Zkal was built to solve isn't a DoD problem anymore.
I figure I've worked on this seriously for almost half a year, I should give it one last shot. I get on a plane to Berlin for the DWebCamp setup event, an unconference.
Besides, I just want to give back to DoD, and I can see they've still go so much on their plates. I've run lots of unconferences before, and I see signs their prep isn't happening, so I offer to help. Even to organise it if they need.
A lucky break
A DoD organiser reaches out on Matrix, and through the conversation I realise β she's from the same team as the dad from the third floor. The one who told me about Diaper Free. The people I'd hacked alongside, whose Devconnect tickets I'd shared when I won more than I needed. It turns out they later built Meerkat β a Zupass-based Q&A system.
There's one problem that was nagging at me. The whole system runs on attendance history, and at launch, nobody has any. My ideas all revolved around DoD and other event organisers bootstrapping old attendance history.
But if someone participated in Q&A at any Ethereum talk in the last two years, Meerkat could have the historical attendance proofs zkal needed.
Back to Berlin
I get invited to help run the unconference the day before, while I'm packing my bags for the airport.
At the unconference post-drinks, I'm thinking about something Ligi had mentioned earlier that day: that zkal could improve the unconference part of DWebCamp. I try to talk to a DWeb team member about what they actually use in sched.com β which features matter, what I should be thinking about. He'd turned up after the unconference, not realising I'd helped see it through.
He waves me off. Says they're going with Pretix, too many competing services to look at. There are other people he clearly wants to meet so the conversation dies. He's not listening when I explain the reason they're going with Pretix is Ligi, that he also asked me for zKal β or that zKal could work as a Sched replacement compatible with Pretix.
A few days after the unconference, Ligi finally has time to catch up with me about zkal, and sees everything that's been built. The DWeb collab is already straining with DoD's use of decentralised tooling. But zkal could replace their centralised form system for the Berlin Blockchain Week site.
He just needs to bring that to others at DoD.
He says he'll get back to me.
That was almost a month ago.
Nice-to-Have
I know it's nothing personal, and I know I missed my chance to respond their needs at first, but also I can't ignore the facts.
Organising events and communities is demanding, and "fix our calendar" never quite gets the time it needs between all the rest.
But the RSVP problem persists. The people in the woods at DWebCamp won't feel it. Everyone else at Berlin Blockchain Week will.
Cypherpunkβ’ is now gentrified. An empty aesthetic. The corpo Blade Runner vibe is a punk rock jacket at H&M.
Most "privacy" events are run on centralised platforms with shitty T&Cs (cough Luma cough), promoting speakers with bios on X.
Their talk just doesn't match their walk.
They actually push privacy-interested people into the surveillance graph, by forcing them to engage in those tools to participate.
But they play the hype game well, to position themselves as leaders.
The community that actually leads pro-privacy tooling in practice is getting pushed to the fringes.
We know there's no need -- and no excuse -- for Luma and Discord if you're a privacy advocating event.
I'm worried we'll disintegrate now, without ways to find each other.
Better Games
I'm talking to a friend at SDP. SDP are the crew doing the treasure hunt games with at ethBerlin, back when this whole thing started.
We're looking at zkal and the idea of calendars for blockchain week that surface small focused meetups through verified attendance β and something clicks.
Finding the right events is a treasure hunt, it just doesn't feel fun right now.
You know how etherscan.deth.net works? Take any etherscan.net contract link, add deth. in the domain, and you get an IDE with the contract loaded.
What if you could do that with Luma?
Take any luma.com event link, swap in a shadow domain, and get a page listing companion meetups β the focused, ten-person-at-a-bar gatherings that the main event doesn't care about.
You can also use your Meerkat proofs, and more hidden meetups reveal themselves.
The people who've been showing up to related things get first access. Everyone else can see how many verified attendees have already committed. Berlin Blockchain Week becomes a game of discovering the rooms that matter to you, not an over-stuffed fomo calendar.
It doesn't need to be championed through DoD channels. Doesn't need anyone's permission. A game that solves the RSVP problem by making finding the right room fun.
The architecture is there. The concept needs collaborators β people who run meetups in Berlin, people who've never hosted but care about a topic enough to book a table at a restaurant for people to trade notes on it. I've organised plenty of meetups. I'll personally support anyone who wants to try.
Third Floors For Everyone
I keep coming back to the third floor.
How we shared fruit because the food was far away. How Ronan helped me with a problem I was too proud to ask about. How a conversation about diapers turned out, a year later, to be the missing piece.
That's what good community infrastructure produces. Not the serendipity itself β the conditions for it. DoD created those conditions by carefully creating an accessible space, and inviting a high density of like-minded people into it.
zkal can still help people build those conditions at a small scale, around topics that matter to them.
There won't be an ethBerlin this year, but we can still create the same rooms.
Whether it works depends on whether enough people want the same thing.
I think they do. I just need help to find them.