MyTVShows is dead. Long live MyTVShows
This is the story of how I built a web app used by thousands of users without knowing anything about programming, and why I had to shut it down.
Let’s start from the beginning.
Back in 2007, I was seeing a lot of TV shows at the same time (House, Prison Break, Grey’s Anatomy, Heroes, Lost, How I Met Your Mother, Californication, etc…). As you can probably see, keeping track of what episodes I’ve seen for each show was a nightmare. Today every media center has the ability to keep track of what you’ve seen. Even most TV set-top-boxes can do it. But back in the day, there was nothing I could find (other than having an XLS file and doing it by hand) that could help me track my TV shows efficiently.
So, just for fun, I started to think about the idea of building something of my own. I had the skills to create the front-end (HTML+CSS) but I had little no zero experience with the back-end (databases and making everything else just work). The only background I had was working with WordPress templates and some PHP logic like “if” and “else”.
So I used Google.
Google was very effective as a tutor on how to do stuff. You just ask “how to connect a PHP file to a MySQL database” and follow the instructions. Done. Next.
And just like that, I built a MySQL database and a PHP back-end to support an app I called TV Shows.
At first, it was just something for me to use, but my friends all had the same problem I had (keeping track of their TV shows) so they asked me for an online version.
The best I could do at the time was to provide the code for anyone to install on their computers. Hell, you can still download it today thanks to the Web Archive!
Everything still had to be inserted manually, and it had an iTunes look and feel to it, but it worked.
My tech-savvy friends installed it on their computers but they said other non-techy people might like to use it too and they won’t know how to install it. And so, a few months and a lot of googling later, MyTVShows was born as a web app.
I managed to add an import module so that the show’s data could be automatically imported from TheTVDB (using their API) instead of having to add every episode by hand. And new users started to flock in every single day!
The glory
Everything happened so fast. Suddenly, users started to sign up to use the service. I had people volunteering to translate the service in multiple languages. The first version was already prepared to be translated (using PHP’s gettext) and so, in a matter of just a few months, it was translated into Portuguese, Spanish, French, Czech, Slovenian and Bulgarian.
Everything was running smoothly, new features were being added every week and despite this being just a pet project, I managed to balance my everyday work with MyTVShows, so it didn’t have a negative impact on my daily job.
Until the first problems started to arise.
Too many users
Because I built the database by myself without any knowledge of what I was doing, it didn’t perform very well under heavy load. I started to have too many users when the original idea was to build something just for my personal use.
After consulting with some friends who actually know how to do this kind of stuff, I started to make optimizations to the database and to the code in order to improve performance.
Then came the Spaniards
It was August, I was on holidays and a famous Spanish blogger writes a post about MyTVShows. Suddenly, the signup form explodes with a flock of new users from Spain, and the problems I had before grew exponentially. The website became sluggish and crashed frequently.
I moved it to a VPS and maxed out the CPU and RAM but it only lasted for a few days. With new users coming in, it quickly consumed all the resources the machine had to offer.
Rewriting attempt 1
Together with a friend, we started to gather ideas for new (and long-awaited) features we would like to implement in a completely redesigned version.
We started working on it after work and on weekends. I did the UX and the front-end (HTML/CSS), and he handled the database and the rest of the coding, but for several reasons, the project had to be abandoned, as my friend couldn’t keep working on it any longer due to other projects taking all of his time.
Rewriting attempt 2
After a few months, I had the opportunity to try again with two other friends, a back-end developer and a front-end developer who wanted to help keep MyTVShows alive (they were also users of the service).
Again, I handled the UX (made some improvements to the interface I had already done in attempt 1) and they handled the database and the coding.
But, after a few weeks of working after hours, again they both had to leave the project due to personal reasons (one of them had his wife complaining he didn’t spend much time with her as he should :)
Just like in attempt 1, we were working for free on our spare time. I planned to share the future revenue (advertising and a new subscription plan) evenly with them after the website went live, but still, we were working for free…
So, I was left alone again, but this time with the project almost half done. So I just needed to find someone to finish what we’ve started.
I figured that if I reached to one of my friends again, I would end up with the same result, so I knew I had to pay someone to get the job done.
Crowdfunding campaign (rewriting attempt 3)
I started looking for companies to work on building MyTVShows, but the price was too high. So I started looking for freelancers on Freelancer.com
I posted the project description and I got a few dozen answers from mostly Indian companies that said they would be able to do it for around 1.500€
I figured, why not?! But I still lacked the money to do it. So I started a crowdfunding campaign.
I set a goal of 1.500€ in 30 days.
It reached 1.813€, and after the IndieGoGo and Freelancer.com fees, I was left with almost 1.500€ to hire someone to work on MyTVShows.
Thank you to all the backers of this project!
I hired one of the Indian companies for 1.514€, as they seemed very professional during their approach and also during the talks we had about the project.
They said they would complete the project in a month and started working immediately after I sent them the product specifications and all the HTML pages ready to be implemented.
I had to pay after each milestone was ready, so I created a milestone for each section of the website and some for the database migrations that had to be done to move all the content from the old MyTVShows to the new.
It all seemed good when they started delivering sections of the website. Login, Signup, Show page, Season page, etc… But then, on the more complicated pages, they started to fail on delivering what I asked them to do.
It was all written in a specification document, what each page should do and how it should work. But still, they managed to fail to implement the features the way I described. I had to do Skype calls with the developers explaining each feature, exactly as I wrote them in the documentation, and again, when they finally delivered it, it failed to do what was expected to do.
It was a nightmare!
At this time, money was running out, they had spent almost 3 months working on the project (and not 1 month as they said they would take) and the core feature (importing shows from TheTVDB.com) was not working as expected, as it was creating duplicates of every show.
Also, the pages that seemed to work OK at the beginning, were lacking important features in the code itself. They only implemented the things that were visible on the screen. Anything thas was just on the code, like OpenGraph tags was left blank or with the placeholder text of the HTML I sent them.
I even had to manually implement the IF’s on some of the pages that would have a different layout if the user was logged in or not, and if he was following a show or not.
The Beta
We eventually managed to put a beta version online. The import from TheTVDB.com was still creating duplicates and the databases weren’t merged yet (users in the beta would start with a clean install just to test the system until we managed to merge the databases).
But then, development stopped. Money had run out, and they stopped answering my calls about the work that still had to be done to complete the project.
Some strange things happened in between, like some developers messaging me on Skype saying they would help me, but not through the company I hired, and that they knew why the project was not working as expected…
I can’t remember the details of those conversations and Skype apparently doesn’t save these records for more than 90 days for me to retrieve them.
And so, yet again, I was left with a half-working prototype I had to deal with. And yet again I asked for help from some of my friends but they said the code was so bad it needed to be redone from scratch in order for MyTVShows to handle all the users it had.
So, it was all for nothing. After 3 attempts, and some other competing projects on the rise (like the wonderful Trakt.tv, which I use), I figured it was not worth my time and worries trying to bring back MyTVShows.
I made arrangements for my current users to download and/or migrate their data to other services before shutting down.
And so, earlier this year, I pulled the plug.
I still think MyTVShows was the best way to manage your TV Shows, even today (trakt.tv comes close, but it can sometimes be complicated to use/navigate). So it’s a shame I had to let it go after almost 9 years online.
MyTVShows is dead. Long live MyTVShows!