My Tweetfave side project has just passed a major milestone – over 1 million Tweets delivered!
Tweetfave is a simple service which sends emails with all tweets you’ve marked as favorites (or in today’s terminology “liked”). I launched this publicly over 6 years ago in May 2013 and it’s been running along quietly since then.
The chart below shows the cumulative total number of tweets delivered through the service. At the end of August 2019 we just passed the 1 million mark (on pace for about 1.1 million by the end of the year):
It’s kind of impressive the amount of usage given the small number of users. Overall Tweetfave has had almost 300 people sign up and try it; currently 110 users are still active. The numbers are definitely skewed towards a few power users: the top 20 users account for almost 80% of the total usage. In fact, despite being “customer #1”, I’m only the 18th most active user on the system :)
So, what are some lessons learned along the way?
Building it was straightforward with PHP and libraries for everything. It wasn’t necessarily easy (in particular learning the Twitter API), but all the building blocks came together pretty smoothly. Everything I needed had PHP libraries, including the Twitter API, Mustache templates, composing/sending email, and the MySQL database. I wrote up more about all the software and services used back in 2013.
Left alone, it just kept working. For the most part the service just kept running along. There were a few outages along the way from Twitter and AWS S3. There were also a few updates needed to keep up with Twitter API changes, for example when support for longer tweets rolled out in 2016. One problem is there is no monitoring to speak of, but since I still use the system a lot I’ll eventually notice when things are broken.
Minimal marketing results in minimal usage. At I time I launched Tweetfave I pinged people I knew who might like it and got a few takers. I would also tweet about it occasionally and there were a few referrals from other users. For the most part I think people stumble across and try it out and some buy generic celecoxib online stick around. I imagine a real focus on marketing could drive more users; maybe some day in the future :)
Original feature set was pretty complete. If I was more bold I might call the original launch my Minimal Viable Product which in some sense it was. I’ve really only made a few more feature tweaks over time, the biggest of which was adding RSS feeds in 2015.
Email delivery can be tricky. One area I didn’t have much experience with was deliverying so much email. For the majority of time I used SendGrid who were great. (I used their tech support multiple times which is very impressive considering I was always at the free level.) Recently I switched to mailgun because I continued to have delivery problems to Hotmail/Outlook account; those are all working now. I’m still small enough to be on the free tier; it’s running about 3000 emails/month recently, with about 32% open rate which seems pretty good. Also, switching email providers when your interface is just SMTP is very easy.
Infrastructure needs some updates. The service is running on an unsupported and very old PHP (5.5.9) and unsupported Ubuntu (14.04). I also need to move the MySQL data from my shared web host account over to Digital Ocean (the service and website are already there). Once MySQL is updated, I need to revisit some database issues when tweets contain Unicode characters. There is not a lot of test code which makes me nervous to make big changes, so perhaps as part of this I’ll finally add some better tests.
Still useful as a bookmarking/read it later service. I originally created Tweetfave to help fit my model of reading Twitter and it’s still effective for me today. Like many “read it later” type services, I suffer from not always going back and reading everything but it’s very handy to have them all there in my inbox. Email is powerful for these types of services and I’ve got a few more related ideas that I’d like to build.
If you made it this far, give Tweetfave a try and let me know what you think (brian AT cantoni.org)!