harriyott.com

Curriculum Vitae - C# ASP.NET Developer

Simon Harriyott

Profile - Developer Contractor

I am an experienced and keen agile contract software developer and internet developer, specialising in C# and ASP.NET and TDD. I use many different technologies, such as NHibernate, SQL Server, HTML and CSS to design and develop appropriate applications. I write a technical blog, and am actively involved in the tech community.

Personal Details

Skills Summary

C# SQL Server
ASP.NET ASP.NET MVC
HTML / CSS TDD
JavaScript jQuery

Contractor Roles

Premiership Football Club: Jun 2010 - on-going - ASP.NET MVC, NHibernate, Castle Windsor, C#, SQL Server 2008, NUnit, jQuery

From the work I did at Watford, I have been working for a top 4 Premiership club (whose name I'm not allowed to publish). I have created an intranet site for a department who have staff around the world. The intranet allows collecting data and producing reports for the head of the department, club manager and chief executive, which are used for important financial decision-making.

Initially the site was small, but with the benefits they gained, the club have commissioned many new modules and features, improving workflow, accuracy and efficiency across the department.

Technically, I built the site (single-handedly) with ASP.NET MVC 2, NHibernate and SQL Server 2008 for the back-end, and jQuery, AJAX and Raphael.js on the front-end. I integrated MatchMatix, my own analysis product into the back-end. I used responsive design to ensure the site looked and worked well on the staff's iPhones.

Dot Tourism: Nov 2009 - on-going - ASP.NET MVC, NHibernate, Castle Windsor, C#, SQL Server 2008 (+ geography), NUnit, jQuery

Created a website for a County Council's guided walks scheme, using ASP.NET MVC, NHibernate, SQL Server 2008 and Castle Windsor. I used the geography functions of SQL Server and some mapping APIs to find walks in nearby areas and display them on a map. I wrote unit tests in NUnit.

Revenue+: Jul 2009 - Sep 2009 (1 Extension) - ASP.NET, C#, SQL Server, jQuery

I joined the team at the final stages of a project to provide a booking system for a transport operator. My first task was to improve the performance of a page that was taking over 45 seconds to load. With judicious use of SQL and ASP.NET caching, I reduced this to between 1 and 2 seconds. I was asked to stay on to work on other features and bug fixes.

Community Sites: Jun 2009 - (1 Extension) - ASP.NET, C#, SQL Server, git

I worked on their proprietary CMS, adding an RSS feature to notify subscribers of updates to the site content. As there was no source control, I created a github repository, and trained the team to use it.

My second project was to integrate a web service from a Danish museum into the CMS, to automatically create categories and pages from the catalogue data returned from the web service.

KJR: Oct 2008 - Apr 2009 (2 Extensions) - C++, MFC

I worked on a major project for a multinational engineering company, writing software used to configure their extensive range of hardware controllers. Due to NDA, I cannot give more details.

Cubeworks: Aug 2008 - Nov 2008 (1 Extension) - ASP.NET 3.5, MVC, N2, C#, SQL Server, jQuery, SubSonic, Subversion

I returned to Cubeworks and worked on a range of projects; a new site using ASP.NET MVC and the N2 CMS, managing an offshore developer, implementing a web analytics package, and improving the C# ASP.NET UK charity site I worked on during my last contract. Cubeworks use SCRUM processes.

Watford Football Club: Jan - Aug 2008 (2 Extensions) - ASP.NET 3.5, C#, SQL Server, TDD, jQuery, Linq

Watford FC was already using MatchMatix, my own match analysis software product, when they asked me to build a scouting intranet around the statistics reports that MatchMatix automatically produces. In addition to player analysis, the intranet tracked the recruitment process for players the club wished to buy, and monitored their press using RSS feeds. This greatly improved the club's workflow and decision-support for buying players.

I wrote the intranet in C# and ASP.NET v3.5, using SQL Server for the database, and Linq to SQL for the database layer. I was the only person on the team, so I captured requirements, designed the interface and database schema, coded the intranet, deployed, project-managed and maintained the intranet single-handedly. I used NUnit for test-driven development (TDD).

Cubeworks: Oct 2007 - Jan 2008 (1 Extension) - ASP.NET, C#, SQL Server, jQuery, SubSonic, Subversion

Cubeworks sites As an ASP.NET developer, I was part of a team working on a Christmas site for a major UK charity. The project involved jQuery, SubSonic and UFO, in addition to the usual C# and SQL Server code. Source control was carried out with Subversion.

Once this site was finished, I was implementing a new ASP.NET site to enhance the company's hospitality management product. I designed the wireframes and database schema before coding started, and I used Visual Studio 2008, jQuery, SubSonic and Subversion in the project. Cubeworks use SCRUM processes.

Madgex site

Madgex: Aug 2007 - Oct 2007 (1 Extension) - ASP.NET, C#, SQL Server

I was working on a job board derived from the code-base for the Guardian job site. I introduced resource files to ease future customisations. I integrated the existing code with the HTML and CSS designs, and added additional functionality to the code-base where necessary.

Friday-Ad: Mar 2007 - Jul 2007 (1 Extension) - ASP.NET, C#, SQL Server

Friday-Ad site My first task was to implement ClickCars.co.uk with three other developers. The site was written in ASP.NET 2.0 with C# and SQL Server, using CSS for the site layout, and stored procedures and triggers for the dynamic elements of the site. I also developed a way of generating dynamic ASP.NET site maps from the database categories.
[ My blog posts on the subject: 1 ]

My second task was to design and implement a framework for a "white label" classified adverts website. Many sites will be run from the same code-base, with ASP.NET themes being used to vary the look and feel between sites, and SQL Server for content management and serving the adverts. I was responsible for deciding the requirements, writing the spec, database design, some of the project management tasks, and implementing the stored procedures, C# code and ASP.NET web pages with one other developer.
[ My blog posts on the subject: 1 ]

MatchMatix

MatchMatix: Jul 2006 onwards - ASP.NET, C#, SQL Server, Windows Forms

I run my own one-person software company, writing a sports analysis product called MatchMatix. MatchMatix is used to analyse individual players and the entire team whilst the match is in progress. Reports are generated in real-time, and can be viewed across a network, including the touchline! This allows the manager to make informed decisions based on the current state of a match. MatchMatix is being successfully used at Watford FC, and being customised for use at Manchester United. I am developing MatchMatix in my spare time, and between contracts.

I've written MatchMatix in .NET 3.5 WinForms, using Linq, NUnit for TDD, and WPF for some of the controls.

Permanent Developer Employment Experience

EurotaxGlass's: 2004 - 2007 - ASP.NET, WinForms, C#, SQL Server

I was a senior developer at EurotaxGlass's, working in a TDD team on a Windows Forms application for the car insurance industry, using C#, SQL Server and XML. I also developed a reusable ASP.NET application framework using master pages and CSS for their web products. I used XML for configuring menus and navigation.

During the project, I recommended and implemented a build machine with MSBuild. This improved the quality of the software, as the latest code checked into SourceSafe is compiled, and the unit tests are run several times per day. Errors and failing tests are emailed to the developers immediately, reducing the integration and bug fixing times.
[ My blog posts on the subject: 1 2 3 4 5 6 ]

I also recommended and installed a wiki to improve team communication and project documentation. This has been hugely successful, particularly with implementation notes which the development team update regularly. I introduced the CodeSmith code generator to the company, which has saved many development hours writing repetitive code.
[ My blog posts on the subject: 1 2 3 4 ]

I deputised for the team leaders during their absence. This involved communicating the team's activities to the project manager, allocating work to the team members and producing weekly status reports. I have given presentations to around 20 people on a couple of occasions, and initiated visits to customers to understand their working practices to feed back into the product.

I established a reputation as being the company "geek". My colleagues regularly asked me for help, as I work out technical solutions quickly, and often recommended tools to improve our working practices.

Atkins (previously Boward): 1998 - 2004

Airports

As a senior developer, I designed and implemented an ASP.NET intranet and C# programs for a facilities management contract at Manchester Airport. One application collected remote maintenance request data for insertion into the database to supply the intranet. The intranet used HTML and CSS for consistent formatting.

As the only person working on the project, I successfully managed the frequently changing requirements, and ensured that the solution was simple for the computer illiterate users. I was also responsible for liaising with the client's developers to manage the integration with their system.

This successfully replaced a paper system and improved service and financial data for the contract. I really enjoyed this project; both using .NET for the first time, and saving the airport staff from paperwork.

I worked on two SCADA projects for baggage-handling systems, for Gatwick, Stansted and Glasgow airports. I designed and documented a common development platform for the two teams, and introduced source control to the company's SCADA solutions for the first time. I mentored a junior member of the team.

Intranets

I worked on an ASP.NET intranet in C# to use alongside our A4 logbooks. This recorded common written information, such as records of phone calls, URLs, project details and programming tips in an SQL Server database. Data was output from an ASP.NET page as XML in RSS format, which was converted to HTML using XSLT.

I assumed responsibility for designing and implementing Boward's intranet in ASP, and introduced many productivity and organisational features, saving the company time and money.

Utilities

I maintained and improved a large Access database, which prioritised pipe repair schemes for Southern Water. When I took over the database, I redesigned the tables into a relational structure, which highlighted much missing, duplicated and inaccurate data, which I corrected. I managed the customer's new requirements, and provided estimates to achieve a satisfactory balance between features and cost. I was responsible for managing one of their programmers, who undertakes some of the database work.

Rail

I was part of a team of four writing a major internet-based maintenance package for Network Rail. The software collected XML messages from various track-side condition monitoring systems, and fed the messages into an Oracle database. This paid for itself within 1 month of installation.

I wrote the web interface using Cold Fusion, JavaScript, VBScript and Oracle procedures, and used XML to improve screen refresh times. This was done using the MSXML object in client-side VBScript to collect updated data from the server, convert into HTML using XSLT, and finally write to the screen. This method allows previous data to be displayed whilst being refreshed simultaneously, a technique now known as AJAX.

Commercial

I designed and implemented part of a shop-floor intranet for United Biscuits to use at their McVities and KP factories. This was written in Cold Fusion, JavaScript and Industrial SQL Server, and collected production data which was used to improve the quality of the products, and to reduce costs and wastage. This is now being used on several factory sites.

I wrote an intranet reporting system for a Procter & Gamble washing powder factory, using ASP to calculate production times and material usage from data collected with Industrial SQL server.

I was initially employed to develop a large, shrink-wrapped software product for Mitsubishi. The product was a client / server package which communicated with various PLC programming and configuration tools, and allowed these tools to share projects and tags. This was written in Visual C++ and MFC. I was responsible for supervising a junior member of the project team.

APV: 1996 - 1998

I worked their SCADA package, which was written in C and Visual C++.

Geodetic: 1995 - 1996

I was a developer writing control software for a milling machine, including a state machine and PLC driver in C for QNX.

Open Source Projects

OpenPlaques.org: May 2009 onwards - Ruby on Rails

From attending Open Hack London 2009, I've been involved in OpenPlaques.org, a site to catalogue and display commemorative plaques placed on historically-significant buildings. The site is developed in Ruby on Rails, and I've added various functionality, including search, and Flickr API integration. I've also been moderating the site; photographing and transcribing plaques and adding them to the site, and liaising with other plaque photographers.

Interests

When work stops, I'm still interested in programming and technology. I founded Sussex Geek Dinners, which gathers around 30 people for a meal, a presentation, and lively technical discussion. I attend other geek dinners in London, many technical events in Brighton, and weekend developer days (DDD) at Microsoft in Reading. I write a popular technical blog, and read many other blogs and technical sites.

I am a keen musician, playing drums, guitars, bass and keyboards, and I also sing. I've played in several bands, and I'm the musical director for my church's band.

My wife and I are amateur property developers, having bought, renovated and sold two additional houses within four months each, making above expected profits on both properties.