Building in Public January 24, 2021

SongBox's MRR recovery and another example of me being an idiot.

Mick @Primer

A few weeks ago I posted about how SongBox MRR had taken a dump down it's own trouser legs. Well it got worse than what's detailed in that post. It sank down to the low £400s.

I couldn't figure out why and I put it down to a December / January slump as most people are tight for money around this time of year.

However I got an email from one of my long term paying members who said the track uploads functionality was broken. I didn't think this could be right as I hadn't touched the app in many weeks, and DEFO hadn't touched the uploads functionality in much longer than that.

Anyway I had a look and what I found was a script I was pulling in via CDN was no longer functioning. The CDN location was no longer valid. Fuck.

So anyway I fixed it. Don't need the detail, the point is I fixed it and since then my MRR is recovering. I'm back above £500 ($680) and people are signing up and then moving on to a paid plan pretty frequently. Check this out:

All but one of those is a new customer from yesterday / today. I fixed the bug in the middle of last week. I now need to email everyone who signed up since early December and beg them to come back and give us another shot.

So I realise most people aren't as idiotic as me but the lesson here is: don't assume your app can't be broken just because you haven't changed anything 🤣

Anyway.... onwards.

  1. 8

    Mick I reckon you're at the stage Bannerbear was at in May/June 2020 (see only your timescales are longer. 2021 could be the year for SongBox. Don't get distracted by other stuff!

    1. 2

      Thanks man I appreciate this... because the distractions are creeping in lol.

      I'm aware of it though, and I'm on it.

      Thanks again. Your comment has actually given me a needed kick.

  2. 5

    We learned this the hard way too. Send a notif to yourself or your team when something breaks. You don't want to wait for customers to tell you it's broken, because when that happens there are already more customers leaving without telling you. Always assume that 1 person complaining = there are 5 other people experiencing the same problem but they choose to be silent.

    1. 1

      Weird! I see that customers don't bother themselves to contact the support.

      1. 3

        Yeah customers don’t contact you. In my experience they mainly just leave.

  3. 3

    Not sure if it's relevant for this product, but this is why I feel it so important to use your product daily. Before you have robust monitoring & error catching this is the best way to see things before your customers!

  4. 2

    Nice that you found the issue. Now you can take SongBox to new heights. ✈️

    1. 2

      Here’s hoping man!!

  5. 2

    Noticed it a few times now, if there is a bug on the website, it's very rarely that any user writes you a message about it - more likely they all leave and you notice by accident weeks or months later. Not sure what to do about it, at the end I guess you need to retest everything once in a while.

  6. 1

    Same thing happened to me just last week. CDN stopped functioning (no idea why) but luckily I was using my website at the exact moment it stopped so I was able to fix it quickly. Definitely need to write some tests.

  7. 1

    I don't know what exactly your app does, but I would recommend setting up a dashboard that updates at least hourly where you can monitor total unique active users and number of successful X (uploads?) each day. The downside is obsessively checking it and letting it distract you from deep work :)

  8. 1

    Here's what I've learned in decades of programming:

    1. Never trust third parties. It can be API, links, library, whatever. Everything you don't control.
    2. Trust them even less than that.
    3. Isolate them as much as possible from the code you've written. Be prepared to swap them to another alternative.
    4. If possible, have some end-to-end tests to test the connection and the data you're receiving.
    5. The best: use your own app daily.

    And after reading way too many studies on burnout / imposter syndrome: don't call yourself an idiot. Everybody makes mistakes.

    1. 1

      With regards to point one, I have a friend who is always wary of getting “cloud fucked”.


      Obviously he’s referring to your business or product being crippled by sources out with your control.

      1. 1

        ahaha "cloud fucked" is perfect, love it.

  9. 1

    Thanks for sharing... For server side issues I use a bash script that tries to recover from problems, restarts the system if necessary and sends emails if the problem persists... It saves from paying someone to do that. That reminds me that I need to more on the client side to deal with errors.

    I would not rely on an external script for anything critical like making money. Better to have a page that takes a few extra milliseconds to load than to risk losing money and customers.

    1. 2

      Bash script is the solution to every problem. Seriously. It's a quick way to just monitor everything you want. It's dirty most of the time, but it's effective, so who cares.

      If I remember right Patrick McKenzie speak about that in one of his article.

  10. 1

    Its really annoying when something like that happens. I've had something like that in the past, hadn't changed anything but it randomly broke without me knowing. At least you found the issue and things are looking up again 😀

    If I may plug my own product, I released private beta signups yesterday for Its a crash and error reporting service so if anything fails within your project you'll get an alert. Currently supports Android/ReactJS/PHP and custom crash submissions if you are using a language not currently supported (plan on adding many other platforms in due course). Its focussed to be simple and lightweight and for fellow indiehackers and startups.

    1. 2

      I'm using to get notifications about errors. How does your product differ from Sentry?

      1. 1

        Its essentially the same type of service. It looks like they've changed a little bit since I last looked at Sentry, but when I was personally looking for crash monitoring as a solo developer (not necessarily making any money) it was too expensive to be feasible and had a lot of features and bloat that I likely wouldn't need. Crash Catch is fpcusses to be very simple and lightweight to use, and affordable so even a solo developer can get receive errors on their projects.

        1. 1

          Makes sense. Good luck with your product!

          1. 1

            Thanks, think I'll need it 😄

    2. 1

      Ill check this out. Thanks

  11. 1

    This is the best kind of problem to that you figured out and can now hopefully recoup from. I hate it when it stays a mystery (I hit those too often).

  12. 1

    Wow, and I told you not to worry in that other thread. Whoops 😅

    I wonder if there was a way this could have been caught earlier? Any system that could have notified you?

    1. 5

      It's possible to register error listeners on elements and log the error whenever something goes sideways.

      I believe this would've saved @Primer:


      If you load resources dynamically, you would do

      const script = document.createElement("script");
      script.src = "";
      script.type = "text/javascript";
      script.onerror = (error) => {

      Similarly, to catch all JS errors, you would do

      window.onerror = (error, url, lineNumber) => {
        myApi.logError(error, url, lineNumber);
      1. 1

        Nice one: copied, pasted and stored in the code fridge for later use.

Recommended Posts