The Blog
2011 Open Source Projects
Oh right, it’s 2012. Better late than never. In addition to the numerous contributions we make to existing open source projects, we also find the time to release libraries or projects that we extract from our applications. In 2011, those 22 projects were:
- leaderboard – https://github.com/agoragames/leaderboard - Leaderboards backed by Redis in Ruby – Primary author: David Czarnecki (@CzarneckiD)
- java-leaderboard – https://github.com/agoragames/java-leaderboard - Leaderboards backed by Redis in Java – Primary author: David Czarnecki (@CzarneckiD)
- scala-leaderboard – https://github.com/agoragames/scala-leaderboard – Leaderboards backed by Redis in Scala – Primary author: David Czarnecki (@CzarneckiD)
- php-leaderboard – https://github.com/agoragames/php-leaderboard – Leaderboards backed by Redis in PHP – Primary author: David Czarnecki (@CzarneckiD)
- python-leaderboard – https://github.com/agoragames/python-leaderboard - Leaderboards backed by Redis in Python – Primary author: Ola Mork (@olamork)
- clojure-leaderboard – https://github.com/agoragames/clojure-leaderboard – Leaderboards backed by Redis in Clojure – Primary author: Andrew Andkjar (@andkjar)
- erlang-leaderboard – https://github.com/agoragames/erlang-leaderboard – Leaderboards backed by Redis in Erlang – Primary author: Armando DiCianno (@greymouser)
- factory-worker – https://github.com/agoragames/factory-worker – Factories for NodeJS – Primary author: Andrew Nordman (@cadwallion)
- stache – https://github.com/agoragames/stache – A Rails 3.x (yes, even Rails 3.1) compatible Mustache Template Handler, with support for partials and a couple extra niceties to make sharing the raw templates with client-side javascript a little easier – Primary author: Matthew Wilson (@hypomodern)
- py-event – https://github.com/agoragames/pyevent – Python extension module for Niels Provos’ libevent – Primary author: Aaron Westendorf (@WashUffize)
- chai – https://github.com/agoragames/chai – Chai provides a very easy to use api for mocking/stubbing your python objects, patterned after the Mocha library for Ruby – Primary author: Aaron Westendorf (@WashUffize)
- activity_feed – https://github.com/agoragames/activity_feed – Activity feeds backed by Redis – Primary author: David Czarnecki (@CzarneckiD)
- improved_logging – https://github.com/agoragames/improved_logging – Adds improved logging capabilities to the ActiveSupport::BufferedLogger class – Primary author: David Czarnecki (@CzarneckiD)
- haigha – https://github.com/agoragames/haigha – AMQP libevent Python client – Primary author: Aaron Westendorf (@WashUffize)
- py-eventsocket – https://github.com/agoragames/py-eventsocket – Socket wrapper for libevent TCP applications – Primary author: Aaron Westendorf (@WashUffize)
- errship – https://github.com/agoragames/errship – Errship is a Rails 3.1 engine for rendering error pages inside your layout. It supports i18n, custom exceptions, and Airbrake (Hoptoad) error tracking – Primary author: Logan Koester (@logankoester)
- bettertabs – https://github.com/agoragames/bettertabs – Bettertabs is a simple Rails 3.1 Engine that includes a helper and a jquery plugin to render the needed markup and javascript for a section with tabs in a easy and declarative way – Primary author: Mario Izquierdo (@tothemario)
- seedlings – https://github.com/agoragames/seedlings – Make seeding data easier to deal with across multiple ORMs – Primary author: Matthew Wilson (@hypomodern)
- tassadar – https://github.com/agoragames/tassadar – Starcraft 2 replay parser written in pure Ruby – Primary author: Matt Pruitt (@guitsaru)
- mm_sortable_item – https://github.com/agoragames/mm_sortable_item – MongoMapper plugin that provides some basic acts-as-list style functionality on Mongo documents – Primary author: Matthew Wilson (@hypomodern)
- soonatra – https://github.com/agoragames/soonatra – Sinatra application to show a “Coming Soon” page and collect emails – Primary author: Logan Koester (@logankoester)
- javascripto – https://github.com/agoragames/javascripto – Javascripto helps organize and deliver client-side javascript – Primary author: Blake Taylor (@blakefrost)
We hope you’ve found or will find these libraries useful in your own projects.
Up and running with Zappa, Coffeescript & Mongoose
At Major League Gaming we recently launched an internal profile service using NodeJS. In an effort to get more familiar with Node, I decided to use it on my latest personal project. In addition, since CoffeeScript is now included out of the box in Rails 3.1 I decided it was time to try that too. Here’s a simple app to get you up and running with Node, Zappa, Coffeescript & Mongoose.
How to: Create a user on S3 and grant access to a bucket
In our never ending quest to spend more time on software creation and less time on software administration Clarke and I moved our content team from a self managed FTP site to an S3 account.
Besides, administering an FTP site is so 1971.
It took an hour or two to figure out the proper permissions, so I’m documenting them here for posterity. Read on if you’re interested.
Make Your Databases Work Smarter, Not Harder
When optimizing code, you profile it, find out where it’s spending most of it’s time, and figure out how to make it spend less time there. As a sysadmin, I tend to wear a lot of hats, but the one I wear the most by far is the DBA hat–I spend far more time hacking on MySQL optimizations than any particular other thing I do. So, in order to make myself more efficient, if I can find a way to streamline the time I spend with MySQL, I can reap the biggest benefits.
It turns out doing so isn’t so hard. Here are some tricks I’ve learned.
The Art of Refactoring
GameBattles is one of our most popular sites, with an active user base in the millions. While we’ve dealt with sites in that scale before, this particular case has been no walk in the park. While we’re a Rails shop, the fact that the site is written in PHP actually has nothing to due with the difficulties we’ve encountered. The real problems are that the codebase is almost a decade old, has been developed by dozens of developers over that time, has grown organically with a clear roadmap defined only recently, and has almost never been refactored.
So, at various intervals over the last year, I (and others) have been digging into the site and trying to clean up what we can. It seemed that the process of what weve been doing is interesting, but talking about it at any length has been something I’ve hesitated to do, as I don’t like talking about something without quantifiable statistics. But, the fact of the matter is, programming is an art, not a science, and anyone who says different is selling something. And the real trick with refactoring is that it doesn’t meet any immediate business goals: it’s purpose is entirely human, as it entirely exists to make a clean and sane working environment. All of the tangible business gains (security, performance, developer velocity, etc.) are all secondary, and so unless your managers “get it,” it can be a hard thing to argue for.
In our case, it’s no secret that GameBattles’ stability was going downhill, and so we needed to do something. And the only way for us to be able to audit for problems was to make the codebase manageable.
My grandfather is on Facebook, why aren’t you?
The world is changing. It’s a blue sphere in constant motion; every second of the day produces a new life changing thought. Whether that thought is acted upon or publicized however, is debatable. Considering that fact, one of the greatest things about human nature is that we are prone to adaptation. As our environments change (consequently we are normally the cause of change), we find ways to change with. Now that that’s out of the way, marketing is a topic that’s been around since the establishment of trade. How else would you draw people to your wooden establishment and convince them that your corn is better than your neighbor’s?
The reality is that marketing has been an essential part of history and those who effectively master the far from dying art, are the most successful. Lets look at Apple for example. Their focus has been brand management since CEO Steve Jobs hopped on board. Because of this, they’ve gone from near bankruptcy to one of the top companies in the world. As of August 1, they held more cash on hand than the United States treasury. Are they selling any products that are necessary for survival of mankind? Are their products much different from those on the market?
(more…)
What is it like interning with MLG?
What is it like Interning at Major League Gaming?
“I honestly can’t find the difference between an intern and a regular employee. Employees get one trip to a related conference every year; I was also sent to one. Employees may go to MLG events and I’ve been to two. I deploy apps to production on a daily basis, make design decisions when required and am involved in the process from top to bottom. That is why I feel MLG has been a great experience, because I’ve been completely immersed in the software development process. “– Matt Perry (Intern)
You’ve learned a bit in school, but don’t know if you’re ready for the elite work force. Well, most of us have been there so we understand. I guess one of the royalties of an internship is that you’re not expected to know everything. School has set the foundation for you and now its time to start conditioning your catalogue with experience. That’s the exact same feeling that troubled me in the beginning of this summer, so I figured that my perspective might be useful to anyone considering an internship at Major League Gaming.
(more…)
What do Zombies, devs and 300 have in common? Hack-a-thon!!
August 4th 3:00 PM: Excitement looms in their eyes as they await the fourth coming. An extraordinary combination of producers, interns, devs and more, unify to kick off the event of the century: Hack-A-thon 4. What is a Hack-a-thon you ask? Well, I’m glad you did because only the foolish can live in ignorance of the mankind’s greatest celebration. It is only that moment that we’ve all dreamed of and considered impossible as children. The one moment that all of our parents told us about, but never truly believed we’d actually see. The period when you’re granted the highest level of honor and allowed 24 hours to work on any project that should strike your chord of desire. Brilliant, isn’t it? Now, the Agorians are an interesting people. Masters of the event is only the least that could be said of their Hack-a-thon abilities.
(more…)
Chef Explosion
Here at MLG, we use a product from Opscode called Chef to manage our server environments. Chef allows us to reliably manage our infrastructure by providing us with the ability to write code that describes how a server should be configured. While not perfect, it has served us well.
Play and Learn
When I was in grade school, I had your typical learning experience. My teacher stood up in front of us everyday and lectured about something that I usually found utterly boring. Fast-forward to college and its still pretty much the same ordeal, except now there are more students. Having said that, you can understand the significant amount of envy that poured from my eyes as I read about the new ways that classes are being taught; one of which is video games. Imagine you went to school excited everyday because calculus was no longer your boring system of numbers and formulas. To add to it, you’ve also sparked a desire to learn because it now becomes a fun challenge. Well that’s the situation with these 6th graders who are learning via the Jason Experiment.
(more…)






