Dec 2, 2010

Language at MailChimp

I’m decidedly talking about Programming languages and not so much the swear jar in Ben’s office.

While we write the majority of our software in PHP, we do actually use other languages and technologies in our stack. We regularly use PHP, C, Lua, Python, Objective-C, Java, Ruby and more. So what the heck do we do with all those languages? All sorts of nifty stuff.

We use C in performance critical situations like search and indexing for parts of MailChimp. C is also used in Omnivore and some secret stuff I can’t tell you about. It’s a handy language but sort of feels like a sledge hammer in some cases. That’s where Lua comes in.

Lua is nice because it’s pretty fast and makes it easy to call into C code and back. We use Lua for data analysis prototyping, Omnivore, and much more secret stuff.

Python is another handy language that we use for for data analysis and custom, specific purpose, tools. We also use it for desktop automation when doing things like generating screenshots or thumbnails. Similarity indexing and recommendation systems are also written in Python.

Our Mobile Lab creates iPhone and iPad apps using Objective-C and Apple’s iOS SDK. Pyow!, Golden Monkeys, Chimpadeedoo, and ChimpNews are all written in Objective-C.

Although we don’t use Java in our infrastructure we do use it for Android apps. We recently released our first Android app, ChimpNews. It’s really just a way for us to get our feet wet with Android and we’re already working on bringing our other apps, like Golden Monkeys and MailChimp, to Android. Chimps dig Android.

We use Ruby for both scripting (of more secret stuff) and smaller web apps built on the Rails and Sinatra frameworks. The web apps often support our mobile apps. For example, Golden Monkeys and ChimpNews are supported by Rails apps that handle things like fetching data from the MailChimp API and sending push notifications to both iOS and Android devices.

We view languages as tools and do our best to pick the tool for the task and resources at hand.