The Blog

Posts from May 2011

May 27

Testing Multiple Ruby Versions and Gemsets Using RVM

By David Czarnecki

I think it might be all the time I’m devoting to L.A. Noire which caused me to want to research how to test multiple Ruby versions and gemsets using RVM, but that’s besides the point. Here’s how I went about it.

I’ve been testing this with 2 gems I maintain, tasty - a Ruby gem for interacting with the del.icio.us service and leaderboard - Leaderboards backed by Redis in Ruby. I’ll use tasty as the example for this blog post.

The .rvmrc file for the tasty gem looks like:

{% gist 996225 %}

In the Rakefile for the tasty gem I have the following:

{% gist 996230 %}

If I run rake, I get the following output, correctly showing that rake uses the tasty_gem gemset for each version of Ruby.

{% gist 996224 %}

I also used “_gem” in the gemset names. Is that overkill? I was just trying to not conflict with say a project you might have called “tasty” with it’s own tasty gemset.

You can find more hilarity over on my Twitter account, CzarneckiD.

May 19

Tech Valley Talks

By Clarke Foley

Members of the Agora Production and QA team attended the first Kitware-sponsored Tech Valley Talks on Tuesday. Clarke Foley, Production Coordinator, and Devon Smith, QA Team Lead, represented Agora amongst a who’s-who of Tech Valley companies. Nicholas Ruepp, Producer at Vicarious Visions (VV), spoke about how the successful game studio adapted to the Agile Development process during the production of Marvel Ultimate Alliance 2 in 2007.

At this time, VV implemented 3-week sprints, burndown charts, and retrospectives, along with cork boards as a project-tracking tool. The “Big Wins” that were realized with the Scrum/Agile processes included seeing a steady level of effort from developers throughout a project life cycle, rather than the typical waterfall process and it’s subsequent employee burnout.  Also, the new iterative planning allowed day-to-day developer overhead to be very low, and the entire company shifted its culture to a more cross-discipline mentality.

Bill Hoffman, VP and CTO of Kitware Inc. began his presentation with a very poignant fact; “the use of Agile is intended to remove waste from the development system”. There are seven common inefficiencies that many game and software development companies face. These include partially done work, extra features, relearning, hand-offs, task switching, delays, and defects. Through Kitware’s adaptation of the Agile process, they have been able to reduce inefficiencies in their workflow. Hoffman’s token Agile ideology is the differing of feature commitment as long as possible. Doing this allows for flexibility while keeping options open as long as possible. According to Hoffman, having high-speed production must be enabled by inherent quality standards; the job of testing is to prevent defects not to find them.

Hoffman mentioned that Kitware uses Mantis Issue Tracker, Visual Tool Kit, and Python scripts to create burndown charts. While the tools don’t always make the mechanic, it is interesting to see which is preferred. At Agora, Pivotal Tracker and Lighthouse are the primary Agile Project Management tool and bug trackers. New testing tools for support of iterative software development include Cucumber, Rspec, and Litmus along with Siege for load testing. Overall, we look forward to the next Tech Valley event. We hope to hearing about other Capital Region technology firms and how they are increasing their production and profitability with the Agile Development process.

 

May 19

The Haigha Preview

By David Czarnecki

Agora has released a preview of Haigha, its new Python client for Advanced Message Queuing Protocol (AMQP). AMQP is a standardized application protocol for messaging middleware. Its purpose is to govern the behavior of the messaging provider and receiver to facilitate interoperability between vendors.

Haigha is a descendant of py-amqplib, a common library used by the Python community. Haigha has been built from the ground up to use libevent for high performance IO while presenting a simple API that adheres to the form and function of the AMQP specification. It adds several useful features that simplify access to powerful AMQP idioms. By default, Haigha operates in a completely asynchronous mode, using callback-passing to trigger application code in response to AMQP events.

For more information and installation, visit: https://github.com/agoragames/haigha