WORK

Prize Engine

Client

One of the world's largest interactive agencies with offices in North America, Europe and Asia/Pacific.

Problem

The client had developed a number of flash games in-house and outsourced the complex prize draw logic to external providers. They had suffered interrupted service, slow response times and were unhappy.

The client engaged Codebrain to develop a reusable prize engine framework which could accommodate a number of different prize draw algorithms. The engine would be utilised in a multi-million dollar online campaign for a leading instant messaging provider and be responsible for allocating over $100,000 in prizes.

The solution needed to be robust, durable, and scalable and pass strict Australian Gambling & Gaming board regulations.

Solution

Codebrain first researched the types of prize allocation strategies the client had used in its previous games. By working through these, analysing the current requirements and liaising with key stakeholders we were able to draft an initial design. This was reviewed internally during regular meetings with the campaign technical lead. After discussing several solutions in depth a final design was chosen.

We undertook construction using a test-driven development approach to place focus on the design of the client API - an important consideration for a reusable framework. We developed comprehensive unit and interaction tests, paying particular attention to some multithreaded areas of execution. Further end-to-end integration testing brought the code coverage close to 100%.

We assisted in the completion of the required documentation for approval by the various Gambling & Gaming boards across Australia. We liaised directly with government software professionals during the approval process. We developed sample projects which aided the approval process and could also be used for reference by other developers.

Following technical approval, the prize engine was integrated into the main campaign code base without incident.

Outcome

The client was delighted by a level of service and uptime way beyond their expectations.

During the campaign our solution serviced over 10 million requests without error or interruption.

During staging the prize engine was fully exercised on the live hardware and was capable of servicing 100,000 transactions in 30 seconds with a latency of 20-40ms per request. This was well within the agreed SLA.

We have since learned that the project is used within the company as a best-practices sample for test-driven development, unit and interaction-based testing.

Technologies

C# 3.5, LINQ, WCF, NHibernate, SQL Server 2005, Castle Windsor, NUnit, NAnt, Rhino Mocks, Windows Services.

Feedback

Through LinkedIn:

"Stuart is one of the most gifted software developers I have had the pleasure to work with. An absolute asset to the team, Stuart experience and mad-skills were an essential ingredient to the success of a high-stakes, state-of-the-art web 2.0 application. Given his availability, I will certainly seek to work with him on future projects again."
Juan Deniz - Technical Lead

"You know that famous software statistic, something along the lines of: 'The most productive software developers are 8000% more productive as the least'? Well Stuart Cam is one of the '8000% more productive' developers. This is the guy that makes the difference between your software project succeeding or failing. This is the guy who turns around a doomed project and puts in on track to success. This is the guy who does what needs to be done, overcoming all obstacles. Not only that but he is a bloody good bloke, great at communicating, not arrogant or cocky, and understands way more about the software business than mere development. He's an entreprenur who would be as comfortable Tech Directing, as optimising low level code. A very rare catch."
Jack Ukleja - Senior .NET Developer

"Stuart is one of the best developer I've worked with. He's so passionate about software development, leading technologies, methodologies and tools. He's been a great Agile master and leader (with Scrum) during his cooperation with us. I strongly recommend him."
Shahram Banihashem - Senior .NET Developer

"Stuart is absolutely brilliant, one of the most competent developers I've ever met. In addition, his humor and sharp mind light up any team. He is active and energetic, and not afraid to speak his mind. Stuart reads a lot, always keeping on top of the newest trends. He has many hobbies and interests, and excels in anything he does."
Tatyana Temirbulatova - Senior Presentation Layer Developer