I still remember that first evening I opened my terminal to build on Midnight's testnet. Everything looked fine on the surface. The documentation was there, the example repos were there, the SDK was set up. I just needed to start. Simple enough, I thought. A few weeks later, a network update dropped and I found out I had been building on sand. The examples I had been following were broken. The SDK had moved. The code I had trusted most was now useless.

I sat with that for a bit. Not angry, just quiet. There is a particular feeling when you realize the problem was never your skill or your effort it was that the floor shifted under you without warning. That feeling is hard to explain to someone who has not been in it.

For context, I had recently left a software engineering job to go deeper into zero-knowledge protocols. That was not an easy call. ZK cryptography is genuinely hard, sitting at a crossroads of mathematics that takes years to properly understand, and I was starting from near zero. But something about what Midnight was building kept pulling me back. Most projects in this space treat privacy like an optional extra, something to figure out once the core product is stable. Midnight treated it as the core product. That distinction felt important to me. Still does.

Getting comfortable with Compact, their smart contract language, was not too painful since it borrows a lot from TypeScript. What was painful was the testnet itself. It is a living environment that updates constantly, and those updates do not wait for your submission deadline. The example repo I was working from was layered deep, with no clear starting point. I wasted real hours just finding my footing. By the time I had a working setup, the clock was already against me.

The African Blockchain Championship deadline landed right on top of my midterm exams, and I pulled out. Told myself it made sense. The code was not ready, the timing was bad, moving on. But that decision sat with me longer than I expected. I kept second-guessing it, wondering whether I was being genuinely realistic or just looking for a reason not to submit something incomplete. Honest answer is I still do not fully know.

Then the ABC team sent an email saying the deadline had been extended. I read it twice before I believed it. I went back in immediately. Except by then the network and the SDK had both been updated again, so I was essentially rebuilding from scratch. New errors, new incompatibilities, same layers of confusion. It should have been demoralizing. Instead I found myself in this odd state where the harder it got, the more locked in I became. I cannot fully explain that either.

Somewhere in the middle of all that debugging, I started writing small scripts just to cut down on the repetitive setup pain. Nobody asked me to. There was no strategic reason. I just needed the process to feel less brutal. One script turned into another. Each thing I fixed showed me two more things that were broken. And slowly it became obvious that this friction was not unique to me. Every new developer coming to Midnight was going to hit the same exact wall, spend the same thirty plus minutes on configuration, and wonder if they were doing something wrong. They were not doing anything wrong. The onboarding experience just had not been built yet.

Then on a Midnight Discord community call, I heard that a tooling hackathon was running. That was the moment everything clicked into place. The scripts I had written just to survive my own workflow suddenly had a larger purpose. I shifted focus, stepped back from my original submission temporarily, and started turning those scripts into something a complete newcomer could actually use.

That became Scaffold Midnight, a starter template on GitHub. Then I took it further and built it out as an npm library called create midnight app. It handles the full setup process automatically wallet creation, faucet requests, balance checks, API configuration, CLI updates, import changes across files. Thirty minutes of setup became a few minutes. I am still actively developing it, currently at version 2.1.7, still working toward full compatibility with the latest Compact release. It is not finished. I think about it every morning.

One specific moment from that build is worth mentioning. I wanted to let developers request testnet tokens directly from the terminal, without ever leaving their editor. The obvious route was calling the official Midnight faucet from the command line. Cloudflare Turnstile shut that down. I spent an entire afternoon testing paid CAPTCHA bypass tools. None of them were reliable. Then I thought about the genesis wallet, which has a publicly available private key. Instead of hitting the faucet, I wrote the logic to simulate a transfer directly from the genesis wallet to the developer's wallet. Not a permanent solution, and I am aware it will not hold up at scale. But it works today, and today is what matters when you are trying to help someone get started without friction.

When the tooling project was submitted, the reception from the judges caught me off guard. I placed first in the CLI track. But honestly what hit harder than the result was being invited onto a community call as a speaker. Not as someone with questions, but as someone with something to share. Running a workshop at the ABC hackathon and watching other developers get past the setup phase in minutes instead of struggling through it alone that mattered more to me than any placement.

I did go back and complete my original ABC project too. I built Privote, an anonymous voting platform designed for censorship resistant elections. The starting point was Afrobarometer data showing that in around 34 African countries, between 30 and 40 percent of citizens do not believe their vote is counted fairly. That is not a statistic to build a cool demo around. That is a real breakdown of trust in democratic participation, and zero-knowledge technology is one of the few tools that can actually address it at the structural level. The submission came with limitations. Wallet integration failed close to the deadline and I had to ship a custom Chrome extension just to make the interaction work. But the contract compiled and ran on the Midnight testnet. For version one of something that needs to exist, that was enough.

Looking back at all of it, the thing that surprised me most was how much the quiet work ended up mattering. The tooling, the scripts, the workshop I ran while technically competing against the people I was helping. The infrastructure layer never gets the credit that the visible product layer gets. I have made my peace with that. The contribution that saves the next person thirty minutes of unnecessary pain is real, even if no one is watching when it happens.

What I am building toward now is a browser-based Midnight playground, where anyone can write Compact and test it on the network without installing anything locally. Entry barriers are what keep ecosystems small. Lower the entry point, and you change who gets to participate. Change who participates, and you change what gets built. That is the work I want to keep doing.

@MidnightNetwork $NIGHT #night