Blossom under the Hood: Our Technology Stack

Written by Thomas Schranz, CEO and Product at Blossom
Sign Cartoon #5320 by Andertoons

Quite a few people have asked us about our tech stack so I figured I should write a post as a thank you to the people behind the technology that we use to run Blossom. Clearly standing on the shoulders of giants here.

Google App Engine

We’ve traditionally hosted everything ourselves, no matter whether it is a personal project, a project of a friend or a project for a client.

We’ve used PHP, Ruby, Python, Haskell, Java, JavaScript, Debian, Ubuntu, FreeBSD, Solaris (ZFS rocks), SQLite, MySQL, PostgreSQL, Varnish, Nginx, Mongrel, Lighttpd, Memcached, various taskqueues and a ton of other technologies that would probably fill a whole book.

The first time we hosted a pet project on Google App Engine was an enlightening experience. We immediately understood that while we enjoy and really care a lot about sysadmin challenges what we actually enjoy most is creating great products on reliable infrastructure.

The warm fuzzy feeling you get when you can stop to worry about database scaling issues, hardware failures or monitoring and restarting a herd of daemons is incredible.

While Google App Engine as a platform was somewhat restrictive in its early days, it has improved steadily and we are very happy campers.

Flask

We’ve been heavy Django users in the past and learned a lot from the community and the vast amount of top notch documentation it provides. But as Django was built with relational databases in mind it wasn’t a perfect match for Google App Engine. So we started to dig around for a good alternative.

Flask was exactly what we’ve been looking for. A lightweight database agnostic framework based on Werkzeug and Jinja2. Similar to Django it comes with outstanding documentation and a very supportive community.

Python

As you probably already have guessed Python is our language of choice for backend code, command line tools and data crunching. It is probably the least surprising choice in our stack. Python offers great libraries, clean syntax and a healthy community that cares about documentation, stability and pragmatic solutions.

Backbone.js

We’ve been very early adopters of Backbone.js and looking back it definitely is among the best technology choices we made. While Backbone is very lightweight it gives your codebase a lot of structure by providing a few simple building blocks like Views, Models and Collections.

Also browsing through its source code teached us a lot about event handling and pragmatic approaches for architecting frontend-heavy JavaScript applications.

CoffeeScript

CoffeeScript is a programming language that compiles to JavaScript. It was created by Jeremy Ashkenas, the author of Backbone.js and underscore.js. It enables us to write tons of JavaScript without actually having to fight with many of JavaScript’s quirks. Classes, cleaner syntax & semantics, lexical scoping and list comprehensions definitely go a long way.

Dart

Having worked with Google Closure, CoffeeScript and the Google Developer Tools in we’ve experienced how access to great tooling can drastically decrease complexity.

I think Dart is a very worthwhile tabula rasa bet on what an alternative to JavaScript could look like. It enables incredible tooling support, comes with optional typing, tree shaking (Dead Code Elimination), a package system and a promise of extraordinary performance down the road.

That’s why we are going to push Dart code into production at Blossom in the coming days. Stay tuned.

Ping me anytime you want to chat about tech stacks and trade-offs