Sunsetting a Live Service

“People think focus means saying yes to the thing you’ve got to focus on. But that’s not what it means at all. It means saying no to the hundred other good ideas that there are. You have to pick carefully.”

-Steve Jobs

As a developer who’s started more projects than I can count, it’s good to take a look at one’s portfolio from time to time and do a bit of a spring cleaning.

What

BaDumChh was a daily joke texting service that I launched a few years ago. You can read about its inception here. TL;DR I was really excited about this idea for a long time and even ended up doing a relaunch after it was running for a while already.

Why

This decision was not easy. BaDumChh was close to my heart and not only was I a user of it, but I originally built this service for myself. So why did I decide to sunset it? A few reasons:

Not Curated Content

I always strived for BaDumChh to be a self-sustaining service that could run on its own. And it was that. But without moderation of jokes, there were some days where the joke that was sent out was inappropriate, offensive, or just not funny. This wasn’t the type of quality that I wanted tied to my name.

Growth

Growth was non-existent. I had only a small handful of people on the service and that number hadn’t changed in years.

Business Model

While payments were implemented and could run without intervention from myself, there were no paying users. And since this was a texting service, I was actually paying for this out of my pocket.

Needless to say, when I found myself looking ahead to the future and trying to focus on quality projects that I’d be proud to put my name on, BaDumChh didn’t make the cut.

How

Because BaDumChh was a live service and had many moving pieces, I had to make sure to come up with a graceful exit plan.

Using a feature I had built into the service a while back, I was able to schedule a message to all users on a certain Friday.

Once this message was sent out, I pushed up changes to the site that I had made ahead of time that would alert incoming users of the discontinuation of the service. These changes included:

  • Invalidating the API
  • Invalidating webhooks
  • Invalidating cron scripts
  • Updating the home page to say that the service has been discontinued
  • Updating the Twilio endpoints to have a proper response

After these were pushed up, I still had to make some updates to the environment itself. That included:

  • Removing the cron jobs entirely
  • Deleting environment variables for live services
  • Deleting the test environment
  • Emptying the database with user’s information. I value my user’s privacy.
  • Deleting the subscription plans in Stripe

I also have a scheduled calendar notification in 1 month to release the Twilio phone numbers I used. I wanted to keep these around for a transitionary period in case someone were to reach these.

Lessons/Ode

Some things that I experienced first hand from running BaDumChh:

  • ‘If you build it, they will come’ is not real.
  • If you want consistent and good quality, you cannot rely purely on an algorithm. You must either curate the content, or have some sort of democratic system (a la Reddit upvotes).
  • Know when to say ‘good bye’.

I don’t regret creating BaDumChh. I am a big believer in learning from one’s failures and moving forward. Otherwise, I wouldn’t be where I am today, and I’d like to think I’m in a pretty good place. I absolutely love the system I created for this service, even if it will no longer see the light of day. The only personally identifiable information I kept on my servers were user’s phone numbers. The whole system ran on its own without administration (though this was eventually part of its downfall). The login process was smooth as butter. And it even ended up putting a smile on some people’s faces. But alas, the time has come to focus.

Providing Better Meta Tags for the Rest of Us

Story 1 – Meta Tags

With messaging systems trying to satiate information-hungry users, it’s fascinating to see how standards are popping up around the decades old infrastructure of the internet. I’m talking, of course, about the meta tags and their evolution, or lack thereof. When sharing links on popular platforms, the new standard is to show a preview of the link so that users can know what they’re about to click on. Facebook introduced a new standard to help unify sites around the web and make information more easily scrape-able. Since then, there have been more standards added on to the age-old infrastructure of meta tags.

Story 2 – Serverless Architecture

A quite fascinating and paradigm-shifting technology is peeking its head on a lot of cloud platforms: serverless/Functions as a Service (FaaS). The possibilities that this technology opens up are not only quite endless, but also pretty darn cool. The premise is that one can deploy a simple function and only pay for the length of time that the function took to complete running. This is a great addition to micro-services and can instantly lower an API’s costs. Since well-designed API’s are stateless anyway, one doesn’t need a server constantly up, but only spun up as needed. It’s easy to see that FaaS can very easily turn API hosting on its head. And given my great interest in backend architecture and API design, I’ve been itching for a good excuse to play around with serverless architecture.

Story 3 – The Convergence

Meet Better Meta, the API that allows you to quickly and easily fetch any site’s meta tags in a digest-able JSON format, built on AWS’ Lambda. Better Meta is the perfect example of an API that can run simply in AWS Lambda with minimal resources and provide valuable information in a readable format for other developers to use in their applications. This allowed me to play with Lambda and get a feel for the serverless world and API’s, work with XPath (the scraping needs to be done somewhere, right?), study a bit of the history of the internet and evolution of meta tags, and of course, provide a valuable resource for fellow developers. Happy meta tagging!

BaDumChh and the Beloved Retro ‘Apps’

I hereby announce my newest project, BaDumChh; a daily one-liner joke texting service.

The idea for BaDumChh came to me one evening during a startup weekend when I was working on something completely unrelated. I simply wanted to create a fun, quick app that could run (and hopefully sustain) itself, built on Twilio’s phone system. I was so excited about this idea originally that I had trouble sleeping that night just thinking about the possibilities and how I would go about implementing a service like this, where I’d get the renewable jokes from, a business model, etc.

Throughout the development of BaDumChh, and even more so now, I realized what I love so much about this idea (even more than the guaranteed smile on my face once a day) – the fact that this is a texting service and not a mobile application.

In a world that is constantly evolving and being populated with countless apps for any and all needs you can imagine (and probably some you can’t imagine), I’ve grown to miss some of the simpler days without having to download an app specific to each need or constantly see how many notifications I’m behind. That is one of the beauties that the Twilio API enables. Sure, I can’t send push notifications to my users. Or easily charge them through in app purchases. Or send app updates. But why use push notifications when I can text my user? It makes communication that much more personal. And if I set up my own payment system, I can avoid the standard 30% cut that instantly comes of the top from app stores. App updates? I can push up changes to my back-end any day and all of my users will be on the new, updated version instantly. That also means I have one code base to maintain, not 2 (or more if I wanted to support more than just iOS and Android). Not to mention that while most cell phones ever have text message capabilities, only smart phones (of a certain operating system, version, etc.) can support apps.

I was recently introduced to another app that works through texting instead of an app, Digit.co. Digit Savings will hook into your bank account and inform you of your spending habits and move money aside for you in a separate Digit Savings account. All of this through texts. That tiny fact makes me respect this up-and-coming start up all the more. Digit also does not even provide an app option (as of November 2015).

Another startup that works through texts is GroupMe. GroupMe enables groups to chat easily through a single phone number instead of the mess that group messages can be (especially on a dumb phone). The interesting thing about GroupMe is that while they operate through texts, they also have an app that you can use instead of texts. Through the app you get a few more benefits like sending and receiving unlimited messages (they have a monthly quota for texts), favoring messages, emojis and images, and no message length limit (which is and always will be a limitation of texts).

So what is the ‘better’ option, a text message app, or an app as we’ve all grown to know and love? I don’t think there’s a right answer (what a cop out answer…); I think it very much depends on what you’re trying to do. But in today’s super busy, hustle and bustle daily routine world, BaDumChh will remain a simple and elegant service that will put a smile on your face the old fashioned way.