Lead developer with 10 years experience building line-of-business, data-driven web applications and workflow tools. Proficient with both Microsoft and open source platforms. Enjoy managing teams and getting jobs delivered. Excellent awareness of Agile methods and Extreme Programming techniques and more recently, Domain Driven Design. Happy to work in any programming language and enjoy learning from their differences.
Following on from the Churnalism project, was commissioned by Sunlight Labs to create an open source and more scalable and efficient version of the search engine behind the website. A lot of work was put into optimising memory usage and improving search speed and the technology has been used on various investigative reporting projects and will provide the backend on a soon to be released US version of Churnalism.com. Written in C++ and using various Google libraries. Submitted a patch to the Sparsehash project and now co-maintain it.
Developed a website to highlight the reuse of press release text in news articles for the Media Standards Trust. Created new algorithms to select likely matching documents and then find the longest common substrings between them. Raised awareness of the issue and provided a useful tool for the public, journalists and PR professionals. Made use of Python, Django and Kyoto Cabinet.
Lead developer on a gift platform for Facebook and iPhone OS. Was responsible for developing the server backend, the interactive 3D gift viewer and the Facebook application. The API backend allowed for the uploading, publishing and sending between Facebook accounts of either free or purchased gifts. Made use of and patched django-piston to manage the API requests and authentication. Built an admin interface around using Django, which allowed for the uploading of 2D and 3D assets and delivered them to the clients as zip files. Etags were used to ensure that content was only downloaded when changed. 3D gift viewer was built on the Oolong engine and example realtime 3d can be see here. Notable feature were physics based inertia and environment mapping which moved with the accelerometer. Facebook application was created with Django and made use of pyfacebook as well as lot of jQuery!
Co-founded Surly to provided managed hosting and content management services to a number of small businesses. Used Expression Engine to allow for clients to managed their own content and generate mailing list output to their customers. Also provided documentation and support using Hyde.
Simple site to find your nearest gym via a map. Fusion tables, HTML 5 and AppEngine experiment.
Filtering for Twitter. Will make it easy to see what people are actually saying! Experiment in using App Engine.
Lead developer on a Rich Internet Application to track and manage wholesale agency of multiple bank's housing residential assets. The application was written using ExtJs for the highly interactive and responsive client interface. A REST-ful interface to the domain model was provided through the Microsoft MVC framework and Lightspeed was used as the ORM. Domain Driven Design techniques were used from the outset, and allowed for a sophisticated event-driven, change-tracking structure which gave full auditability of all actions taken with reference to a property. A security model was written from scratch, which passed a strict security audit. Concurrent usage of the system by administrators, staff and clients was facilitated, combined with differing roles and permissions.
Lead Developer on a custom Content Management System to allow the client to transition from previous web services supplier. The CMS made use of Markdown to render clean and tidy HTML. Hierarchical navigation structure and clean URL's where facilitated by a combination of the MVC framework and Linq To SQL for the ORM. Also included a monthly reports feed so that clients of the hedge fund could securely access their latest financial reports and view historical data.
Tasked with prototyping a web based tool for quickly rating members of staff and allowing the various strata of management to find and review the success or failure of departments, teams and individuals within the organisation. Investigated various web, interface and data access frameworks to see which would give the best performance and user experience. Settled on Microsoft's recent MVC framework, jQuery for client-side styling and interface-building and LINQ for a versionable and performant data access layer. Made extensive use of xmlhttprequest calls to ensure the site was pleasing to use, and adopted client-side graphing, filtering and sorting tools to ensure data navigation was very speedy. Application reached a point where it was ready for demonstration to potential customers.
Led a team of three C# developers and one tester. Co-operated with many different departments of the bank, both technical and business-orientated. Undertook a detailed requirements analysis to quickly progress through the design stage. Built rapid prototypes to achieve stakeholder sign-off on the design. Structured the application to follow a 3-tier pattern to enable future scalability. Used NUnit to test the business logic layer and WinRunner to automate functional and performance testing. Site allowed clients of the bank to view old and new trades as they progress through their complicated life cycle. Reports were available in html, pdf and excel formats. A confirmation workflow allowed users to ensure trades matched their understanding of deals done and to request alterations in case of error. Application is currently live and has received various plaudits. Greatly improved client communications and also the efficiency of the confirmation process.
Used Analysis Services in SQL 2005, Proclarity Desktop Professional and C# to develop a data warehouse combining reports from Google Adwords, Commission Junction, Buy.At and TradeDoubler. Income and spend for tens of thousands of Google adverts were aggregated over time and numerous other dimensions. This data was then analysed in a series of MDX based views which allowed patterns to be detected, future trends predicted and the making of informed and timely business decisions. The project scaled up to allow the analysis of over a million keywords with data incoming on a daily basis.
Wrote a custom HTTPModule in C# to redirect clicks from Google Adwords to ultimate destination page and place a cookie in the client's browser. If the click converted into a sale then the cookie would identify the keyword which led to the sale via a parameterised 1x1 pixel image. All clicks and sales were logged in SQL 2005 which allowed for detailed analysis of click habits and profitable keywords. Used HTTP endpoints to provide a table dump web service and Reporting Services to track sales and queries.
Made use of triggers, views and stored procedures in SQL Server to host a database of current animation projects. Used junction tables to model many-to-many relationships between elements such as scenes and characters. A multi-user browser-based front end was created in C#/ASP.NET to allow viewing and manipulation of the data. Developed custom controls to condense complex data into small screen space. Application was used on every subsequent project at Passion Pictures, including the Gorillaz music videos, and greatly aided communication between workers and helped line producers keep track of progress.
Made use of built-in user interface SDK and Jscript to build a suite of file savers for all the file types present in a Softimage XSI 3D project. The savers preserved the history of each file while also ensuring that the most current file had a predictable filename and location. This facilitated the smooth collaboration of many specialist artists working on the same scene simultaneously and thereby improved efficiency. Saved license cost of investing in high end AlienBrain Studio software.
Prototyped a hierarchical database of company contacts in SQL server. Implemented SQL Views allowing for a contact to be viewed either through their freelance skills or their employer. This made it easy to have a unified list of everyone associated with the company, rather than disparate databases in different departments. Also meant that Christmas Party invites and PR mail-outs could be handled by the same system, rather than individually by hand. A tree-based HTML navigation system was devised in C#/ASP.NET to allow for ease of access.
Designed and implemented a 45 machine render farm to output high resolution images from 3D render engines and 2D compositing programmes. Chose the hardware and infrastructure, customised the management software with a host of scripts and authored render submission helpers for three different clients. All rendering was managed by a single management system making the most efficient use of all the facilities and preventing a render from overriding another. Meant that jobs could be delivered on time and to a good quality in terms of image resolution, anti-aliasing and motion blur. Was used to render the Gorillaz music videos.
Used the ebay web services API to download and cache images and information relating to a seller's list of items for sale. Data was presented in a table and summary info was calculated so the profit and unsold balances could be quickly inspected. User interface built in WinForms using Visual Studio 2005 and downloaded data serialized into XML files. Application gets round the 30 day limit imposed by ebay for publicly displaying previous sales. Useful for keeping an eye on competitors and tracking your own sales history.