2012 at STYLIGHT Engineering in Review


Last year has been a fun ride for all of us at STYLIGHT. I’d like to kick-off our blog with looking back what we should have avoided and what worked really well. Here it goes!

Top 3 new tools we used

New Relic
I knew it existed, but I finally gave it a spin after being to the Hamburg Developer Conference. Seeing it in action was awesome, it’s just like having a profiler running always. And with a really good user interface! Here’s what our response time looked like before and after we deployed New Relic:


Guess when we installed it and found our performance bugs. Still it’s expensive but we found it totally worth the money. But do talk to them on volume discounts!

Even though there is puppet for managing servers, every so often we need automate things with respect to the order of the task just sometimes need a more lightweight solution. That’s where fabric comes in and has taken its place in the home folders of our engineers by storm. Give it a spin, be it rebasing and pushing to github or a rolling deploy of servers, it’s all just a few lines. And there’s really easy support for doing things in parallel!

It’s scalable image processing in the cloud. It’s an intriguing idea: Use CloudFront and have as an upstream the image processing script of your own. Then just set the expiration date far enough in the future, that you essentially need to compute the image only once, because now it’s cached for all times. Voila, an easy to use image hosting, which can perform your custom transformations via URL. Of course their service overs way more than just some simple transformations. Check it out!

Top 3 stupid mistakes we made

Maxing out INT
Hitting the boundary of INT on an auto_increment field by using INSERT INTO … ON DUPLICATE KEY UPDATE which really does increase the auto_increment counter even though it updates only

All those special chars
Generating a search engine friendly URL from a string with non-ascii characters: did you know that in Sweden you’d do ä -> a but in Germany you’d have to convert ä -> ae. Isn’t the pluralism in Europe fun?

Just signup with GMail…
Using private GMail accounts for everyone in a 50+ people organisation. When we first started STYLIGHT we just operated out of our private GMail accounts. Once we grew, we just recommended everyone GMail, so people signed up. Even though we have a Google Apps account for some years now, not up until mid last year we took the effort to migrate everyone. But by then it was almost too late. Ever tried to migrate a complex Google Docs setup with permissions and like? Nightmare and Google doesn’t offer any tools! Scripting certain things on your own works, but we finally made good experience with shuttlecloud


Top 3 things we replaced

Ok, not everywhere and we only managed it half-way through up until now. We’re moving it all to python now. Once we’ve completed the transition, we share our learnings 🙂

MySQL replication
We’ve switched from Master-Master replication + mysql proxy to Percona cluster + ha_proxy. Goodbye replication lags! We’ll post soon more details about our migration

Blueprint CSS
Jumping on the bootstrap bandwagon really paid off for us. Not only did we shorten the development times on the frontend (and got responsive design as a bonus), but we also dramatically beautified the look of our backend tools. It’s fast forward from no CSS to slightly styled bootstrap – what an eye candy!

What did you change within the last year? Let us know on twitter: @stylight_eng!



  1. “PHP
    Ok, not everywhere and we only managed it half-way through up until now. We’re moving it all to python now. Once we’ve completed the transition, we share our learnings :)”

    Why? Care to share?

  2. Our PHP is 2007-style, including many hacks. Python as a language is cleaner here. Plus at the time we started the transition, some technologies such as the async tornado framework we’re using now, weren’t available for PHP.
    And finally, taste within the engineering team 😉

Leave A Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.