What I learned from creating my first side project(that kinda clicked)
Tubetrotter: An Unexpected Journey in Travel Vlog Mapping
I never set out to map the world of travel vlogs. But sometimes, the most unexpected ideas take on a life of their own.
Tubetrotter is my first solo project to make it to the public internet. After years of working on team projects at various companies, I decided to tackle something entirely on my own. What started as a late-night idea inspired by a British panel show has somehow turned into a web app that people actually use.
This is the story of how a random burst of inspiration led to an unexpectedly semi-successful side project. It's been quite a journey.
The Spark of an Idea
It was just another night of me procrastinating sleep by watching "Would I Lie to You?" when Lee Mack pulled out this ridiculous map of petrol stations he'd supposedly visited. It was obviously a lie, but it got me thinking - what if I had a map of all the places I've been?
Reality check: my travel history was about as exciting as watching paint dry. But you know who does travel? YouTube vloggers. And just like that, at 2 AM, fueled by insomnia and an idea that wouldn't let go, Tubetrotter was born.
The Quick Prototype
Two hours later, I had a Google Map with five random videos pinned to it. It wasn't pretty, but it existed, which was more than I could say for most of my 2 AM ideas. This quick win was probably the only reason I didn't abandon the project immediately. Past me, thanks for that.
The Manual Grind
Excited by my prototype, I decided to map out videos from two of my favorite travel vloggers: Bald and Bankrupt, and Harald Baldr. Sounds simple, right? Well, past me thought so too.
I created a browser extension to add videos to my database. The process? Watch a video, figure out where it was filmed, manually input the data. Repeat. After about 300 videos, I was questioning all my life choices that led to this moment.
Finding a Better Way
Turns out, there was. The YouTube Data API became my new best friend, along with GPT-4 mini API for extracting location data from video titles and descriptions. Was it perfect? No. Was it better than slowly losing my mind doing everything manually? Absolutely.
The First Public Reception
When I finally worked up the courage to share Tubetrotter on some subreddits, the response was... well, people didn't hate it. But the real surprise came when I posted on r/InternetIsBeautiful. Suddenly, people were not just liking it, but suggesting new channels to add. It was like watching my weird little project grow legs and start running.
Facing Performance Issues
As Tubetrotter grew to house 5-6 thousand videos across 15-20 channels, the site's performance took a nosedive. Users were selecting all available channels (because of course they were), and loading times skyrocketed. My poor server was sweating bullets trying to keep up with the data requests, and I realized my data fetching was about as optimized as a sloth running a marathon.
Being primarily a backend developer, my first instinct was to throw more backend at the problem. "I know!" I thought, "I'll use Redis caching! That'll solve everything!" Spoiler alert: it didn't.
You see, I'd already indexed my MongoDB collections properly (pat on the back for past me), which meant Redis barely made a dent. We're talking a 5% improvement on a good day. Sometimes, being a developer means spending days implementing a solution that barely moves the needle. It's humbling, really, and a stark reminder that your go-to solutions don't always fit every problem.
The actual solution came from an unexpected direction - the frontend. Browser-side caching with IndexedDB turned out to be the game-changer. It was one of those moments where you feel simultaneously clever for figuring it out and a bit dense for not considering it sooner. Frontend solutions solving backend problems? Younger me would've been shocked.
Learning from User Behavior
Thanks to PostHog analytics, I got to watch how people actually used the site. Turns out, everyone loves to zoom in and out and click randomly, probably wondering if anything was happening. A simple loading indicator made a world of difference. Who knew?
Uncovering User Needs
Here's where it gets interesting. I noticed users were selecting all channels, and I couldn't figure out why. Then it hit me - they were trying to find videos from their home countries. It wasn't about specific vloggers; people just wanted to see familiar places.
Implementing this feature involved a crash course in reverse geocoding and some serious head-scratching about UI design. The result? Two search options: by Channel and by Country. It felt good to solve a real problem, even if it meant admitting I didn't understand my users as well as I thought I did.
Lessons Learned
1 - Don't be afraid to start with manual processes. I began by mapping videos by hand. It was tedious, but it validated the concept before I invested time in automation.
2 - Build things that don't scale - then scale them. My browser extension for manual data entry wasn't sustainable, but it got the job done until I could implement the YouTube Data API and GPT-4 mini.
3 - Listen to your users, even when it's not what you expect. I thought people wanted to follow specific vloggers, but they were actually looking for videos from their home countries. This insight shaped the entire direction of Tubetrotter.
4 - Performance optimization isn't a one-time task; it's an ongoing journey. What works for 100 videos might crawl with 5000. I learned this the hard way when my Redis solution barely made a dent.
5 - Sometimes, the solution comes from an unexpected place. As a backend developer, I was skeptical about frontend caching. But IndexedDB turned out to be the game-changer Tubetrotter needed.
6 - The way users interact with your app is the right way - build towards that. I had to let go of my preconceptions and focus on what users actually wanted, not what I thought they should want.
7 - Small UX improvements can make a big difference. Adding a simple loading indicator significantly improved user satisfaction. Never underestimate the power of clear feedback.
Looking Ahead
Honestly, I'm not entirely sure. Tubetrotter has grown from a late-night idea into something people actually use, which is both exciting and terrifying. There's still so much I want to do with it, but for now, I'm just enjoying the ride.
This project has been a journey of "I have no idea what I'm doing" to "I have some idea what I'm doing, maybe." It's been frustrating, rewarding, and everything in between. But most importantly, it's been one hell of a learning experience.
So yeah, that's the story of Tubetrotter so far. If you've made it this far, thanks for sticking around. Now, if you'll excuse me, I have a bug to fix that's been driving me crazy for days. Wish me luck!