The Story Behind
Two and a half years ago, we knew almost nothing about birds. To us, they were just⦠birds. Like there was one species called "bird." We never paid much attention to them, and when we heard them singing, it was just birds singing.
Everything changed in the late spring of 2023.
One evening, we came home to find a nest on the wreath hanging on our front door. The next day, a bird arrived to lay her eggs. It took us a while to figure out she was a house finch. We set up cameras. We watched, fascinated, suddenly aware of this entire world we had been blind to.
But the story did not end the way we hoped.
One day, the mother finch began kicking her eggs out of the nest, one by one, until only two remained. Then she left and never came back.
We brought them inside and put them in an incubator, not knowing what to expect. We turned the eggs periodically. One day, we checked them under a light and saw a heartbeat in one of the eggs.
A week later, it hatched.
We were overwhelmed, watching this tiny creature break through the shell, slowly stretch itself out, and make its first chirps. But we were also anxious. We hand-fed it bird baby formula every hour. It would chirp loudly whenever we approached, as if asking to be fed, then fall calm and quiet after its meal.
But after seven days, it didn't make it.
We were heartbroken. But something in us had shifted. We couldn't just go back to not noticing.
We put up feeders and watched birds arrive. We started learning their names, their calls, their behaviors. We set up cameras to capture the surprising and funny moments at the feeders - including watching our system misidentify squirrels as birds. I guess that means they can get their fair share of bird food? After all, they are birds. Right?
We started exploring other aspects of bird identification too: the Merlin app, the BirdNET model and eventually the BirdNET-Pi project. I became fascinated with how it worked. I started digging into the codebase and wanted to give it a modern spin. A perfect place to build and learn.
I was lucky enough to have language models to help revive my rusty coding skills, and to watch these tools evolve rapidly alongside my project. Back then, I would copy and paste code through a chat interface, use the tree command to show folder structure, and ask what files to create. Now, two years later, Claude Code handles most of the heavy lifting while Codex reviews and checks its work. I finally brought it all together into a full-stack system.
All of this started with that finch: the mom who left, and the little one who put up a fight for seven days. It showed us what resilience looks like. It brought us closer to nature. It made us want to do more to take care of our natural world, to spread the joy of being connected with nature, and to inspire others to discover all those little wonders that are just out there, waiting for us to notice.
β Yudong