Coin Fest Hacker House: from local contests to an international Web3 stage
The jump
Five years earlier I was a vocational-school kid building pages in plain HTML and CSS, riding the train home from my very first hackathon a town away, thrilled just to have qualified. At Coin Fest I was on a team of five, in a villa in Bali, surrounded by people from all over the world, and everyone around me was speaking English.
That gap is the whole story for me. Not whether we won (we didn't), but the fact that I was standing there at all.
The team
It wasn't a team of strangers. There was me and Hakim, the same Hakim from my very first hackathon back in 2019. There was Uud, a senior from school who had won first place at that same first hackathon, back when I was still a younger student just starting out. And there was Abid and Mas Daffa. Years later, here we all were, no longer students but working programmers and designers, on the same team.
Hakim and I drove to Jogja first, then flew Lion Air to Bali. Everyone converged at Denpasar airport, more or less, and from there it began.
We called the team Biasa Aja — "nothing special." Uud suggested it, and it stuck because it was simple and humble. That name says something about who we'd become. In 2019 we'd picked "WhyCode" because it sounded cool. In 2024, as professionals, we picked a name that quietly shrugged. I like that contrast more than I can explain.
Two teams, one villa
There were actually two teams of us who came: mine, and a friend's team, also five. My whole team rented a villa together; from the other team, only two joined us there. The villa had a pool, and between sessions we swam, wandered the area, and just enjoyed being somewhere new. If I'm honest, half of why it was so good was that part: the travel, the friends, doing something bigger than a campus competition.

But it was still a hackathon, and the work made sure we knew it.
How the event ran
Day one wasn't the hackathon yet. It was the opening, held somewhere else entirely, not the main Coin Fest Asia venue (I've forgotten exactly where). Pre-registration, a proper opening ceremony, and food you could help yourself to, endlessly. Mostly it was hours of just talking to everyone, soaking in the fact that we were really here.
Then we went back to the villa and got to work. Part of it was the ICP deployment tasks tied to our reimbursement, paid back in ICP. The idea was simple: learn the chain first, then build on it. The rest was hackathon prep: I sliced UI, Hakim built out the fish assets and the deck. At one point I got a 3D asset running and it actually worked, which felt like a small miracle. Someone was in the pool. The rest is a blur of half-finished tasks and good company, the loose and hopeful kind of crunch you have when you still think everything's fine.

Days two and three
The hackathon itself was at the main venue, and it was enormous. We took a car Gojek there, and even after arriving we had to catch a shuttle bus to reach the actual hackathon area. That is how far it was from the entrance.
The organizers took care of us. Every meal hour, while we were still coding, food and drinks just appeared for the taking. I still remember the chicken rice. I had braced for it to be spicy and it wasn't at all, probably because most of the crowd was foreign. The toilets were another story: mostly reeking, often waterless, tissue instead of a bidet. Still, I tracked down one Muslim-friendly toilet, and there was a prayer room too.
Late on the night of day two, deep into the grind, they handed out pizza, which in the moment felt like the funniest and kindest thing in the world. Then sleep became a scavenger hunt. Between that night and day three I got maybe two hours total. I hunted for somewhere comfortable, settled on a bean bag, dozed for a while, then couldn't drift off again. Close to dawn I gave up and moved to that air-conditioned prayer room, caught a sliver more sleep, woke for subuh, and went straight back to coding. That was the rhythm.
The stranger who cheered us on
It started as a nagging feeling on day one. That night, no matter what we tried, we couldn't get the ICP network to connect. We assumed it was a config problem and pushed on. By day two the feeling had a shape. I said it out loud, half to myself: "This kind of feels like Web2, doesn't it?" And then we were all asking each other the same thing: is this actually Web3, or not? Nobody was sure.
Right in the middle of that doubt, one of the international participants drifted over to our table and watched from behind us for a while. He asked what we were building, and we explained Fish Nation: the fish, the NFTs. He lit up. Awesome, he said. Really cool idea.
That was the strange, bittersweet part: he was praising us just as we were quietly sick about the Web3 problem, nodding along to a compliment we weren't sure we'd earned. But instead of letting us deflate, he kept encouraging us: plenty of time left, he said, keep going. A stranger cheering on an idea we already suspected was half-broken. I've never forgotten it.
The moment it fell apart
The suspicion needed confirming, so when two friends from the other team wandered over, just hanging out, we asked them to sanity-check us: does this look right? They told us plainly: no, it didn't. It wasn't on-chain the way it needed to be.
There it was. We'd built like it was Web2. Our app leaned on ordinary HTTP API requests, the way any normal mobile app would, when the whole point of ICP was to run the logic on-chain instead. A Web3 platform, and we'd been thinking in Web2 the entire time.
I want to be clear about this: it wasn't any one person's fault. Nobody on the team had truly internalized Web3 yet. I knew Flutter cold. I could build the screens, the flow, the feel of the thing. But knowing a tool is not the same as understanding a paradigm, and as a team we simply hadn't crossed that line. That, more than anything, is the gap between us and the teams that placed.
The final push
We presented anyway, and we gave it everything, running on barely any sleep.
Most of the other participants were foreigners. Every conversation, every bit of coordination, the presentation itself, all in English. Standing up to present, deg-degan in a whole new language, I kept thinking how a couple of years before, that alone would have terrified me. This time it didn't.

Why it still mattered
We didn't win. We were close, but close isn't first.
And I'd still do it again without thinking twice. The "almost" was its own kind of result. In five years I'd gone from a train ride home from a small-town SMK hackathon to an English-only international Web3 stage in Bali, with the same friends, no less. One of them was the senior who had beaten me here at the very start. I came back understanding something I couldn't have learned from a tutorial: that the hardest part of a new domain isn't the syntax, it's the mental model. We didn't lose because we couldn't code. We lost because we hadn't yet learned to think in Web3.
That lesson outlived the prize, and the trip, and the pizza. It's the reason this is the first thing I wrote here.