6 month placement - Anders hearts Facebook

My name is Anders Thorbeck, and I have been an intern at Turbulenz for the past six months, between my third year and my final year on the MEng Computing course at Imperial College London. This industrial placement is a compulsory part of the course, and we were encouraged to spend some time throughout the third year applying with various companies we might like to work for.

I have always been interested in video games - a contributing factor to my choice of studying computing - and so Turbulenz, an emerging pioneer company in the online video games industry, quickly caught my eye. They were advertising themselves on the Imperial College Computing Department’s internal list of potential industrial placement employers, and offered the opportunity to meddle with a range of interesting technologies related to the development of their new, browser-based social video games platform.

The prospect of helping to define what could possibly be one of the next big things in a new era of gaming was very appealing to me. I sent off a hopeful application, and soon found myself face to face with the company’s top characters for an industrial placement interview. After the interview, I felt I had made a good impression; something which was soon confirmed, as I was offered an internship.

In early April, some months later, I arrived for my first day of work at Turbulenz. I received a warm welcome, and spent my first week getting up to speed with setting up my computer and development environment, reading up on JavaScript and Python, and getting to know the company and my new colleagues. In record time, I was known as the guy with the post-its, referring to the yellow, sticky pieces of my effective memory, littering my desk.

After my rather low-output first week, I was happy to be given my first proper task; the creation of an SDK sample, to demonstrate certain features of the SDK to potential games developers who would be interested in using the Turbulenz engine as their game engine. This task was meant to give me a soft start to the software development, and as a means of introducing me to the technology they had been developing for the past few years.

After spending a little while inspecting previously developed samples, to get intimate with the SDK and JavaScript, I started coding. The sample was intended to demonstrate the different ways and points in time in which different types of assets could be loaded, and how to signal to the user that assets were currently being loaded. During my work with this, I got hold of a single asset sized several megabytes, which would be useful for demonstrating what would happen with downloads that took a long time.

In order to be able to use this asset, however, I had to convert it to from the .obj file format into the .json format. Thus, my task spawned another task, which was to extend the current obj2json Python tool to convert from one file format into the other. With this, I also got more hands-on experience with Python, a programming language I had never used before, as well as an insight into how several of the Turbulenz internal Python tools worked.

A few weeks later, having finished the SDK sample and the Python tool, I was deemed ready for a bit more responsibility, and tasked with a new, more substantial project for the weeks to come. I was to integrate certain Facebook functionality into the Turbulenz gamesite. The top-level scope of the project included being able to sign up for and sign in to the gamesite using your Facebook account, as well as providing functionality to easily find your Facebook friends on Turbulenz, to invite Facebook friends to Turbulenz, and to post updates about your Turbulenz activity to your Facebook feed.

I dived into this task optimistically expecting it to only take a few weeks. However, after spending some time looking into the rather poorly documented Facebook API, and trial-and-erroring my way to finding out how certain aspects of it worked, I came to realise that making our two pieces of technology work together seamlessly might not be so straightforward after all.

After about a month, I had a basic prototype of the functionality to sign up and sign in via Facebook working. In that time, I had spent the first some days getting to know the code behind the gamesite, and the various pieces of technology I had not used before, such as jQuery, AJAX, Backbone, Underscore, SCSS and Pylons. An unprecedented amount of time was spent, besides actually adding the required functionality, circumnavigating annoying Facebook API design decisions, as well as trying to synchronise the state of the Facebook user with our internal model of it, in order that the actions taken and options displayed on the gamesite were not outdated. Luckily, I was able to get the help from my far more experience colleagues when I (often) needed it.

Upon demonstrating the prototype to my colleagues, there was a surprising number of differing opinions bouncing around concerning how people had expected this all to work. However, all in all, people seemed pleased with the functionality so far. Thus, I started work on new functionality, concerning inviting Facebook friends to Turbulenz, and following those who are already on Turbulenz. As this work necessitated a GUI for adding friends on Turbulenz, and no one else was implementing this, I took it upon myself to create a Friends panel.

I found it quite enjoyable to implement the Friends panel, having been given a sleek design to implement, and being able to visually measure my progress as the panel grew steadily more similar to the this design. Over the course of a few weeks, I added tabs to this panel for viewing your Friends, your Followers, and for adding new friends, such as your current Facebook friends; thus providing some sorely needed functionality for a gamesite focusing on social gaming.

Now, at the end of my placement, I am spending my remaining time tying up loose ends and documenting what I have done, in order that my colleagues can pick up where I left. I am glad I got the opportunity to work with all the talented and visionary people here at Turbulenz, and see some of the games industry first hand; it has been a great and highly educational experience. As I leave, Turbulenz will lose an employee and his interesting clementine-peels, but at least they’ll save a fortune in post-its.