A Side Project Story: Octave Cloud

It all started around 2013: I was going through a course on Machine Learning by Andrew Ng.

The practical part of the course depended on GNU Octave (open source math toolkit), but installing it on a Mac was a huge pain. I did manage to do it, but noticed that many people on forums complained about the same thing.

So I had a brilliant idea — wouldn’t it be great if Octave was available via SaaS model? With fancy features like built in code editor, command line and plots?

Node, React & Docker

I built the first prototype in one night on June 8, 2013. I used NodeJS 0.10-ish with socket.io on the server side and CodeMirror with some plugins on the frontend.

In October that year I rewrote the frontend in React — the experience of doing so was amazing! React was young (createClass/autobind/mixins) but its programming model “clicked” with me. I remember hanging out in their IRC channel looking for help with autoscrolling. I was really impressed at how quick and friendly the response was (thanks @sophiebits!).

The initial version of the backend would just run octave in a dedicated folder. My second iteration used Docker, which at the time was very new and unproven. It all ran on a Digital Ocean 2GB RAM droplet.

The killer feature was displaying plots inline in a REPL. You can see it on this gif:

It worked through a clever hack: I pre-configured Octave to use gnuplot with special arguments that made it save the graph to a file (instead of showing it on the screen). My NodeJS backend listened to filesystem changes and notified the frontend when it detected the update.

Product market fit

I tried to promote octave.im for the students of the ML course. I posted the link on forums a couple of times and added it to the course wiki page (that was surprisingly very hidden). The reception among students has been really positive, but the course moderators weren’t happy: they wanted some kind of validation that it’s a serious thing (which it wasn’t).

Overall I had more than 3500 people sign up over the course of several years. Unfortunately I didn’t keep any metrics screenshots. The twitter account, @OctaveCloud, got 57 followers (organically).

Speaking of which, I used Mixpanel and loved its simple API and dashboards. They even sent me a free T-shirt :)

Total profit: -$420

As every other hacker out there I also hoped to make it sustainable, so in October 2015 I added $4 monthly subscription with 2 weeks trial. To be honest I wasn’t very serious about it at that point. I just wanted to play with Stripe, see if people would actually pay. And they did! Overall I have collected about $300 in revenue.

An interesting thing that I noticed was that people subscribed and then stopped using the product, without unsubscribing (I did have the unsubscribe button on the profile, no questions asked). I ended up manually cancelling a bunch of subscriptions on Stripe without updating the app DB, so people could still use the service (which they didn’t anyways).

In numbers

  • 308 commits
  • 3,500 accounts created
  • 450,000 commands executed
  • $300 total revenue
  • $720 spent on hosting

Screenshot, for posterity: