The Blog
Capistrano and Campfire After-Deploy Hook For The Lulz
We recently started using capistrano-mountaintop to announce when deploys to our environments are taking place. This morning, @andkjar noted that it’d be nice to see if the deploy was successful or not since it pastes the deploy log and it’s long enough that you might not see whether or not the deploy was successful. This simple addition to deploy.rb checks the deploy log for success or failure and pastes an appropriate image into our Campfire room.
Reduce Your Open Source Technical Debt Using These Easy Steps!
Do you know what all those GitHub projects you’ve got forked to your personal GitHub account are? Technical debt. Follow these easy steps to enjoy a debt-free open source lifestyle.
Ensuring balanced reads with PyMongo
Over the past year we’ve been evaluating and migrating many of our game services over to mongoDB. Its feature set gives us complete freedom to iterate with developers during game production, its performance is sufficient to power our infrastructure during peak load, our operations team appreciate its powerful administration tools, and 10gen has so far proven itself a reliable technology partner and steward of the Mongo roadmap. One of the very important features of PyMongo that we have made use of is the MasterSlaveConnection, but it’s not without its caveats, one of those being that it does not guarantee you are balancing your reads across a replica set.
Chai, the simple Python mock
Here at Agora we take testing seriously, insisting that full test coverage always be part of a deliverable and adjusting our schedules accordingly. We are historically a Rails shop, but for a few years we have been developing an extensive Python code base and infrastructure to power our in-game offerings.
We’ve been using Mox as our mock testing solution since 2009, and though it has met all of our functional requirements, we’ve longed for the simplicity and power of Ruby’s Mocha framework. This past Friday we held our 3rd Hack-A-Thon, and Vitaly Babiy and I developed Chai, a mocking framework patterned after Mocha.
Meta Leaderboards
Traditionally, leaderboards rank players using one criteria, e.g. XP, kills, etc. What if you wanted to retrieve information from a leaderboard that combined more than one criteria? I’m going to show you how to do that.
Your Definition of Success
I have been called many things in my life. Most recently, some have called me a “successful entrepreneur.” I am introduced to people as the CEO of a “successful business,” or prompted to tell classes of my “success story.” But what is success?
The Path of Iteration in Business
Entrepreneurs often ask me what the biggest factor was in our success. They want to know exactly what we did and how we did it so that they can duplicate that success. The truth is that there isn’t one thing, and there never is. You can never attribute the success of a multi-year, multi-person venture down to exactly one thing. However, there are factors that can help.
Code Reviews
Everyone knows code reviews can be awesome. They can be agile, smart and effective, or they can be shallow and pedantic. They can be an hour-long laser-focused meeting on the points that matter, or a rambling mess of code reading to sleepy co-workers desperate for some cookies and a nap. I’m on the team that builds backend services for the latest and greatest games; we take code reviews very seriously, and we look forward to them. So how do we go about it?
Brightcove::API.new(:home => BrightcoveOS)
I am pleased to announce the brightcove-api gem that I maintain has a new home at the Brightcove Open Source portal.
Thumbs Up
In the process of investigating the potential use of the thumbs_up gem (enable voting in your Rails 3 application) on a project today, I came across 2 opportunities to contribute back to the project.






