New series: game development

In a while I will start working on a new project related to game development and I thought that it was a good opportunity to write some stuff about it.

I have never been involved in commercial games development, but I have background on the topic. I been teaching object-oriented programming at Fiuba and most of the programming practices are related to games, because they provide very good scenarios to apply may OO concepts.  At the same time I have also been involved in the development of a simple framework to create loop-based games called titiritero and that is used by our students to perform their programming practices. And of course I have also implemented my own games, but that was a long time ago (I remember I used Delphi 4 and C++).

So, let’s start by setting the expectation so you can decide to continue reading or not: along this series of post I will write about development of simple loop-based games which covers most of the games that you can currently find in mobile devices. I will share some basic concepts that you can apply no matter which technology you use for the implementation. Regarding the implementation, I will focus on Microsoft technologies and particularly in XNA Game Studio.

From now on, you will find all articles in this series under the tag gameDevelopment.

Optimizing Azure Blob Storage Uploads

During this week I have been working on an application that relies on Azure Blob Storage. In a few words the application run some processes and uploads the resulting files to Azure. The after each run, some files can change while other remains equal. In order to optimize the application JuanAr suggested adding logic to the application in order to upload only the changed files.

So I invested some time to implement what we called the SmartUploader.  This class is very simple, it acts as a wrapper around the Azure Storage Client API. Each time this class uploads a file it calculates a checksum value and stores it in the blob metadata. So the next time before uploading the file it compares the current checksum of the file to upload with the checksum of the previously uploaded file and if it is the same the it avoids the upload because it means that the file has not changed.

The code snippet below shows the interesting part of the SmartUploader.

And here is the method that calculates the checksum.

Hope this helps you.

Workshop: ISO + Agile

Well, I know, it’s been a long time, but I‘m back. In this occasion I want to tell you about the workshop facilitated last Friday together with my colleagues: Ariel and Ezequiel. It was publicized under the name “Comunidad de Calidad: Se puede ser ágil siendo ISO 9001?” (or in English:Quality Community: Can you be agile and still be compliant with ISO 9001?). The workshop was organized by Polo Tecnológico Rosario. Throughout the workshop we reviewed some agile
concepts and myths, focusing on how agile practices can add value to the ISO 9001:2000/8 implementation.
The workshop lasted almost 4 hours and we had very good feedback from the audience.
If you want to take a look at the slide deck we used, it is published here.

Mix 10 highlights in Argentina

Yesterday evening Microsoft Argentina organized a small event to share the highlights of Mix 10 and Miguel Saez invited us to show some of the things we’ve been working on for the recently finished MIX10 event in Las Vegas.

The event started with Miguel Saez talking (and showing) the new Bing features and Internet Explorer 9 platform preview. Then, Leandro Olivestro talked about Windows Phone 7 Series.

After a short break we jumped on the stage. Our presentation was 100% code, we didn’t use a slide deck, just VS 2010 and PowerPoint to make some drawings on the fly.  Mati started talking about VS2010, ASP.NET MVC 2 and jQuery; he then introduced me and my demo was around the new Silverlight 4 features. Finally our Mobile specialist, SebaRen showed a game created for Windows Phone using XNA Studio.

After our presentation, Daniel Priego Garcia closed the event showing Expression Blend 4.

I want to thank DiegoM, MarceRo and SebaDu that worked with me in the application I showed during the demo.


Fridays @ Southworks

Every Friday at 9 o’clock we have the «Friday Presentations». Any Southie can propose a presentation, there is no restriction about the topic, so you could be watching someone talking about dynamic languages or sharing his experiences during the last PDC. However, most presentations talk about projects that are currently executing or that we have executed lately. Each presenter has a slot of 15 minutes to talk about the topic he chose. In general we have one presentation per Friday, but in some occasions we have 2 presentations.

Once presentations are finished we have an «Open Discussion» space. We sit in a circle and any Southie can propose a topic for discussion. After introducing all topics, we vote them and the TOP 2 voted topics are discussed. The open discussions topics are generally related to our daily practice, improvement opportunities, update on different things, etc.

Both, the presentations and discussion are recorded and published in our network to allow any Southie to consume them later if they could not make it.

All these effort is coordinated by the communications team lead by Julian Scopinaro.

Personally, I found these spaces very useful; they help to keep us up to date with things that are happening in the company and also allow us to talk about improvement opportunities.

This is part Southworks’ culture.

Below some pictures from the last Friday.



Project A: day#end

We shipped it! The product is now complete. It is not yet in production environment because the Go live!is scheduled for the end of January. Working on this project has been a very pleasant experience and weperformed a smooth delivery as well.

A few numbers of this project:

  • 44 stories completed
  • Representing a total weight of 97 points
  • In a timeframe of 5 iterations
  • With an iteration lenght of 1 week.

There is one post pending about this project that I will write after going live.

Project A: day#11, same team new project

Today we started working on project A2. Project A is still in progress but the work remaining is enough for one dev, so  together with the customer we decided to split the team in two. Diego will continue working in project A for 2 weeks while Gabriel and myself will start working on project A2. Both projects are related, not at the code level but at business level and that is why we splitted the team in two instead of having a new team doing A2. This afternoon we had a review & planning meeting with the customer where we showed the progress on project A and we set the vision and overall context for project A2.

This is one of the things that I find interesting an different compared to previous work experiences: projects run fast, maybe in two weeks. So you need to be sharp, execute, deliver and get ready for the next challenge. Weekly iterations help and communicating status daily is crucial to steer the direction if needed.

To be continue…

Project A: day#10

We have just finished the second iteration and we are on track, we completed all the committed items and also some others that we found during the iteration. At the same time are working in a ISO complain way (that is what our complain checker says).

One interesting characteristics of this project is that we are working on a solution based on a open source product. During this two weeks we have found some issues on this product that we had to fix, but this didn’t affect our scheduled. At this moment we are almost ready to integrate the UI styles that are being developed by another company, I think that will be an interesting challenge.

To be continue…

Project A: day#6

Today we did the iteration review (it should have been last Friday, but our customer decided to move it because of Thanksgiving day). We completed all the committed items and some more. The review meeting was short (less that 30 min),  we had prepared a slide deck with 4 slides to highlight some facts of the past iteration and some important stuff about the next one. During the meeting we browsed the application, we reviewed the backlog and we agreed the scope for the next iteration. After the review we did a retrospective, and here we are now starting our second iteration.

To be continue…

Project A: day#4

We are in good shape, the customer confirmed that we are going to take care of developing the application and go live process.

Today we deployed to staging the first drop of the application. To set clear expectation with our customer we added a disclaimer message on top on each page.


The link “See drop details” takes the user to a page were the deatils of features/modifications are listed. This first drop includes 4 out of the 6 story commited for the current iteration.

To be continue…