Blog News about what we are doing

Fernando Dobladez

2010 at Code54

Written by Fernando Dobladez

We’ve been quiet at this year. The only excuse I have for not sharing some of what we are doing is that it’s been a really busy year for us.

During 2010 we’ve grown our team, moved to a new office, started new projects, brought new customers, and worked with new partners.

We certainly grew in knowledge and experience. The following list summarizes the most interesting technologies and tools we played with this year:

  • Amazon EC2: We use it to run load tests once in a while. We need quite a few beefy machines for a few hours. Services like EC2 are ideal for these scenarios. We’ve put together automation scripts to allocate EC2 instances, deploy, configure, run load test, capture results and shut everything down. All fully automated with a custom framework we built in Ruby.

  • Cassandra: One of the “NoSQL” databases out there. Cassandra is a distributed, scalable, highly available, column-oriented database with tunable consistency guarantees. We are using it for a project that stores and analyzes massive amounts of data. Cassandra’s data model fits our project like a glove. On the negative side, we run into some bumps typical of new technologies: lack of documentation, tooling and expertise, but the benefits make it worth the effort.

  • Hadoop MapReduce and Pig: We started using Hadoop and Pig to generate analytic reports from the raw data stored on the Cassandra cluster. Lost of interesting possibilities here. We still have lots of homework to do to really squeeze the value of the data.

  • Ruby on Rails 3: We started two medium-sized web projects. We decided to use Rails 3 and we (and our customers!) are happy with the results. Rails allows us to develop solid and maintainable web applications. It takes many common problems out of our way, thus letting us focus on solving the actual business problem. We also started using Cucumber for behavior-driven development. With Cucumber we write acceptance tests in plain English, allowing non-technical product owners to understand and validate them. Automated testing (plus BDD and TDD) is one of those areas where Ruby is ahead of Java and most other languages. We are also developing a new back-end for Active Merchant to integrate with a payment gateway in Argentina.

  • Git & GIT-SVN: We’ve been using git and git-svn for a couple of years now, but this past year the whole team at Code54 really “got” git and now is our preferred option not only for new projects but also for accessing “legacy” or external Subversion repos via git-svn. We now have quite a bit of experience migrating non-trivial Subversion repositories to GIT.

  • Google Web Toolkit: We worked with GWT for a new REST client for an existing product. We have mixed feelings about GWT in our team: some of us like it a lot while others feel it’s too “heavy” a framework. The good: It is very well thought-out, it’s documented and supported, it solves many problems for your and it’s efficient at runtime. The bad: It sometimes feels too complex even for simple things. This complexity shows in multiple areas like dev tools, automated system testing, build scripts. The fact that you use Java for the UI instead of JavaScript is both a good and bad thing depending on who you ask.

  • Clojure: It is a modern Lisp that brings all the goodies of traditional Lisp to the JVM plus excellent abstractions for data structures, a unique model for concurrency (with its Software Transactional Memory system) and really good integration to leverage the whole Java ecosystem and libraries. I’m a big fan of Lisp (although I’ve never built anything serious on any Lisp), so we’ve been prototyping with it and we are quite impressed.

  • Esper: It’s an open source Complex Event Processing library in Java. We are using it to monitor the “health” status of thousands of clients connected to a central server. We feed Esper with messages comming from clients, and the rules we defined in Esper trigger messages to indicate when individual clients had been offline for a while and when they come back online.

The most valuable progress of all is that we grew as a team. We complement each other well. For every task at hand we always identify a member of the team that is a perfect match for it.

We’ll continue to work hard and smart next year, finding opportunities to grow our experience and always improve the quality of our work.

And we are still hiring!

Happy 2011!