TL;DR: HubSpot is open-sourcing its fast, Jinja-compatible templating language runtime for Java.
HubSpot's Content Optimization System (COS) was originally developed in python, and the templating engine chosen to power it was Jinja. Jinja provides a robust and powerful foundation in which to craft page templates, in a syntax derived from django templates. While python was a fine choice at the start, and allowed us to rapidly iterate on the COS, we started to run into growing pains and scalability issues with python and django. Over the past year, we've been reimplementing parts of the system in Java.
It's 2014. Everything needs an app, and HubSpot's 5th Annual Charity Auction was no exception. Until this year, our silent auction worked the traditional way: people writing their bids on pieces of paper, walking away, and maybe coming back every once in a while to see if anyone had outbid them. Does this work? Sure. Would it be way cooler (and more fun) to let people bid with a mobile app? Definitely!
As it turns out, this isn't a new idea. A number of silent auction apps already exist, and our auction organizers looked into them. A recurring issue with each solution was that they cost hundreds to thousands of dollars. When you're raising sums in the tens-of-thousands range, that's a substantial loss. And despite the cost, most of the "apps" were either mobile websites, or native apps that simply wrapped the mobile website. Either way, the user experience suffered.
I used to hate building operating system images. It was an arduous process that took up too much of my time. I would put off building them as much as possible. Need a change? No, do you really need that change because I need to devote a few hours to this. Churning out a new image was a slow, error prone, and frustrating task and was a friction point at times between the our TechOps team and other teams. Now with the help of Packer they are an order of magnitude faster to create and much easier to reliably build. Below is how we got there.
There is a set of product questions we often discuss internally and with folks outside of HubSpot. A couple of weeks ago, we hosted a panel for Northeastern's Women in CIS to discuss some of the most frequent questions as seen through the lens of different people on the engineering team – from designers and product managers to software developers and tech leads. Below are some of the highlights, but feel free to check out the video for more detail.
In a recent campaign to improve our front-end web performance at HubSpot, we learned a simple but important lesson:
Async != Fast