Lee Packham

Software Engineer, UX Designer, Opinionated

Portfolio

TweetDeck for Windows/Mac

Pre-acquisition of TweetDeck by Twitter, I prototyped what I dubbed “NativeDeck”. This prototype became what is now TweetDeck for Windows. Why not Mac? It turns out Qt on Mac isn’t good enough. I worked on it from around August through to my departure and it was released not long after I left as part of the whole Twitter One.

A QtWebkKit application with custom Javascript hooks to allow for things like streaming, TweetDeck for Windows is a blazingly fast application that is relied upon by millions. Very little Javascript was changed in the actual Javascript “ChromeDeck”, as I made the Javascript hooks for streaming and AJAX almost mirror the APIs the existing code was using. $.ajax() is a pain!

A great example of a Hack Day project that ends being a headline application.

TweetDeck for iOS

Re-written from the ground and receiving rave reviews the world over, TweetDeck for iOS is something I’m very proud to have been a major part of. I worked as part of the 3 man development team (+1 graphics/UI designer) to bring this to life. I worked mainly on the data that you get in the Application, networking and multi-tasking.

Focussing on things like logging in, where I even fixed a bug in the official Facebook SDK that caused issues with iPhone 3G users. TweetDeck for iOS also makes significant use of the multi-tasking capabilities of the iPhone/iPod Touch. You can hit Send on a Tweet and then instantly hit home - it’ll still send that tweet! I also put significant chunks of time into the networking code. Users have commented on how graphics (particularly avatars) appear more clearly than even the official application.

The application, tuned for performance and receiving rave reviews on the web and in the app store itself, is available in iTunes.

Green Man Gaming

A Django front end running on top of a NodeJS backend using PostgreSQL and CouchDB with a C++/Qt client application, Green Man Gaming is an exceptionally complicated system. As an e-commerce platform, you’d think it’d be nice and simple. One has to remember the trade in element! Customers can download games, and trade them back in when they are done. This leads to a stock management system that needs to work in pseudo-realtime. For which, it does! It can handle very high loads that are demanded by AAA games on launch day and still provide real time management reporting. I was CTO/Lead Architect. I pitched the architecture to investors and helped found the company.

Enemy Down

The new EnemyDown site is coded in Ruby on Rails with an in-house generated design. It was created to replace the aging PHP website of the same name, and was produced in roughly a year with feature for feature likeness including a complex tournament system that allowed for the kinds of tournaments that Enemydown is known for running. Unfortunately, only a skeleton remains since TNWA folded.

X-ray Gaming

A site built on the excellent vBulletin forum framework for the front end with a custom written backend that, at first, had to support the existing protocol of the legacy Enemy Down Anti-Cheat (EDAC). The development of the client was then taken in house and rewritten by myself in approximately 3 months in C++/wxWidgets on Windows. It featured an implementation of taking screenshots in games with close to no lag, even with 4xAA! It did this by hooking into the GPU pipeline in Windows and taking screenshots across shared memory buffers and uploading them to the server.

Tube Status for Android

Arguably the best hidden gem on Google Play. Sitting in the background and monitoring your signal, Tube Status updates at the exact moments it has signal and then uses the APIs for bundling the HTTP request with others leading to a very low amount of battery usage. Utilises the same API server as the Tube Status for iPhone application.

Tube Status for iPhone

With only one recorded crash since going live, my London Tube Status application can be considered rock solid. Small, compact and does one thing and one thing really well - even on GPRS. Revenue is made via iAds and it pays for itself through that. Push notifications are done using my open sourced Django Application - which is now available over on PyPi as well.

Prizefight

An ASP.NET website with Python backend running game servers - Prizefight bought together groups of people to play Counter-Strike: Source and Half-Life 2: Deathmatch and allowed them to compete for cash prizes. All the players put money into the pot and then whoever won, won the pot! House took a cut. I was the architect behind the system which only had one bit of downtime lasting longer than 15 minutes… which was when it was turned off by the company.

I also wrote custom plugins in C++ for the games that allowed full control of the game engine via XML-RPC. This allowed the Python code to interact directly with the server to control it on a very detailed level.

Be* Broadband Mixes

The code behind Prizefight was re-written, almost from the ground up to do Mixes. This allowed gamers to do the common task of building up teams to have a match for fun. To add to that, I implemented chess scoring algorithms to be able to give gamers and idea of where they were compared to their peers. This was plugged into a Ruby on Rails front end rather than the old ASP.NET front end and ran for many months under sponsorship from BeThere.