Monthly Archives: June 2013

Even Twitter Does Performance CI

I’m not shocked that Twitter does Continuous Integration. You would expect a big technology player like Twitter to be savvy enough to get CI in place for not only functional development, but also for ensuring responsiveness. It took them a while…It took outside influence, technically outside influence, meaning it took a newbie to come on-site and realize there was a huge gap in their CI pipeline. Well, that’s the story that Marcel Duran (@marcelduran) sold today during his very informative talk “Avoiding Performance Regression at Twitter” at the Velocity Conference 2013 in Santa Clara, CA.

Duran’s presentation was very good. I walked away with a lot of validation of my own ideas for our own software CI process, as well as learned a ton of new ideas from Duran himself. Let’s see if I can summarize a few key takeaways in awesome bullet format below, then expand on the ideas with a little bit of creative pen magic.

  • has now been open-sourced. They have a command line tool as well (npm -install yslow -g). You can run YSlow against a HAR file which is pretty cool.
  • Phantom.js is a really cool little tool that integrates quite well with YSlow.
  • Within the last 3 years, Yahoo shutdown it’s Exceptional Performance team and just recently brought it back. Wowzers…
  • All that work my team did with WebPageTest could be revived…Yeah!!!
  • There’s a new cool performance site called SpeedCurve

I think I new YSlow was open-sourced a year ago, but never really thought twice about it. When YSlow came out a few years back, I thought it was cool, but I felt it was a little too all encompassing with the rules of Web Performance. Well, maybe not too all encompassing, but understand that my application doesn’t work with a CDN so I don’t want to be graded because I don’t have a CDN. Note that in later versions I can filter stuff like that out because I guess other folks like me complained their scores were bad because they didn’t use a CDN.


The command line tool looks very appealing to me. A caveat is that it a) Runs on Node.JS and b) requires a HAR file already generated as its source. What I found real cool about this is that I would love to go the route of generating HAR files from our Selenium tests. It’s not too difficult and it would be great for archiving (hence the abbreviation HTTP Archive).

I’m kind of surprised that it took me until I came to Velocity to find out about Phantom.JS. It’s a headless WebKit scriptable with JavaScript or CoffeeScript. It has pretty cool integration with YSlow and even Jenkins. Take a look at Marcel’s page on the integration (


Marcel and I quickly chatted on Twitter about how PhantomJS and YSlow were being used. I kind of envisioned that the function regression suite generated the HAR and then phantomJS and YSlow were run via Jenkins to evaluate. It turns out this was really Marcel’s cole slaw to their real sauerkraut. At Twitter they use WebPageTest instead, which is cool because my team did a ton with WebPageTest back in the day. Problem is it was “Back in the Day” like 2 years ago.

I won’t go into details because quite frankly I don’t know them. All I know is that Marcel came to Yahoo after Steve Souders left to go to Google. Marcel left to go to Twitter. I believe Stoyan Stefanov left Yahoo to go work at Facebook. There were others, but I don’t know all of their names. I guess Yahoo couldn’t keep the talent from leaving. According to Duran, the team is reforming, but I’m not sure who’s going to work there. I cannot confirm or deny that they team ever was dissolved. Either way good for Yahoo for bringing their team back!

I probably have more to write…don’t worry I’ll be here all week and will have more to post. For now good night!