We Use That / Bitdeli

What startups use to get stuff done

Build Your Own sandwi..Analytics
Posted on 20 Aug 2012 in

Who are you, and what do you do?

I am Ville Tuulos. I co-founded Bitdeli with my brother Jyri Tuulos. We want to democratize analytics by providing a fun and productive environment for sharing and building scripts that measure your business.

We admire applications that look and feel amazingly simple and yet are super powerful under the hood. This is our guiding principle for Bitdeli.

After 6 months of busy hacking, we launched the first version of Bitdeli in February 2012. Thanks to great feedback we have been getting since the launch, we will be releasing a big update this fall. Stay tuned!

What is your technology stack?

Bitdeli is powered by the combination of Erlang and Amazon Web Services. Erlang itself is one of those things that is at the same time simple and amazingly powerful. It is designed for building highly-available distributed systems, i.e the backbone of your infrastructure. For that purpose it works better than anything else. For non-concurrent components, we use Python), Javascript and C), and have them supervised by Erlang.

Bitdeli is designed to be a native citizen of public clouds like AWS. It is surprisingly different to design a data-intensive system specifically for the cloud compared to dedicated hardware. After hacking Disco, an open-source implementation MapReduce, for over three years and now Bitdeli, this topic is becoming close to my heart.

One of the biggest benefits of this approach is that the system can mostly deploy itself automatically based on the actual load. Instead of using a service like Auto Scaling at AWS, we manage the process in our own Erlang code with a little help from Boto. It is not turtles all the way down though. At the very bottom we are using Fabric to bootstrap the environment.

On the client side, Jyri is an eager user of Backbone.js and JQuery. For visualizations, we have been going back and forth but currently we are happy with D3. The new version of Bitdeli will be using Twitter Bootstrap although we try to avoid making it too obvious.

What software do you use to run your business?

Our code lives in several Git repositories, some of which are hosted at GitHub. Based on my earlier expriences, it is super important to agree on a common workflow for Git right from the start. To keep things simple, we decided to follow this well known branching model and these simple guidelines for commit messages.

Rebar is an excellent build tool for Erlang which also does great job in managing dependencies using Git. In addition to Rebar, http://basho.com has contributed a whole bunch of useful, high-quality libraries for Erlang - thanks Basho!

Regarding human-to-human communication, we rely on Google Apps (mostly Gmail), Flowdock and Trello. I had hard time believing that any chat service could beat IRC but I have become addicted to tags, attachments and search in Flowdock. Trello works well for seeing the big picture with one glimpse.

We use Pingdom to monitor our infrastructure and Olark to chat with our users. Our mailing list is managed by MailChimp - they are also our golden standard when it comes to any user-facing communication. Emails sent by the system are handled by MailGun. We take a look at their documentation or Stripe when we need an example of a beautiful and developer-friendly API.

For backup and storage, we use both Dropbox and Rsync.net. Rsync.net provides a stable and no-nonsense storage service, which most importantly is independent from Amazon. Don’t put all eggs in one cloud. For the same reason some of our non-elastic servers are hosted by Linode.

What business software do you most wish existed?

Someone should create a service that provided a real-time benchmark over all cloud and VPS providers. Naturally it would need to be fully automated, as the environment is constantly evolving.

I wouldn’t mind if they acted as a broker, dealing us cheapest available computing capacity from any provider given our requirements at any point of time.