ASP.Net MVC, .Net Core, EF Core, Razor, Blazor, jQuery, Bootstrap, WebAPI
Also Angular, React, AWS, WSL, Sourcetree, Git,
Bitbucket, Tortoise SVN, Sphinx, Postman,
Teams, Zoom, PowerShell, Azure Devops, Slack to varying degrees.
Communication, understanding your business, saving you money, increasing efficiency, writing and delivering web- and classroom- based training,
customer support, consulting, recommending improvements.
As well as excellent development and programming skills, I have wide-ranging customer
facing skills with broad experience stemming from my sales and service roles prior to my career
in IT. I understand the needs of businesses and their crucial relationship with the IT department,
which translate into a requirement to get the job done properly, on time and on budget.
I am skilled in identifying areas where efficiency can be improved and in designing solutions
appropriate to situations where money can be saved and productivity increased.
Additional skills include developing excellent relationships with those with whom I am working and writing and delivering training.
I try always to deliver more than is expected and to provide the best
possible value for money for my clients or employers.
I am always interested in hearing about new opportunities.
12/21 - Current : Powwr - C# ASP.Net SQL Server Web Application Developer
A permanent role involving bug fixing and enhancements in a large and complex web application. I have also been involved in investigating and troubleshooting problems in Azure.
05/21 - 12/21 : Stepstone Ltd - Full Stack Developer
A permanent role involving change requests for various aspects of the company's job websites. This has involved C# WebAPI, Unit tests, Moq, React components and a variety of other work.
11/18 - 09/19 : NATS - C# ASP.Net SQL Server Web Application Developer
A contract to develop several applications involving change requests. A change request is entered, emails are sent
to stakeholders who then approve or reject the request. The change request's status is updated when all approvals
are in. The most complex of these applications involves six or so stages with approvals required at more than one level.
I built up very good relationships with the stakeholders for these applications and also wrote detailed documentation for each of the applications.
In this contract I introduced the team to Entity Framework, provided multiple EF demonstrations to the team members both as a group and individually,
created an EF training application to enable the team to learn how the applications that I created work and assisted other developers with their code.
In a department still using very old style ADO.Net spaghetti code this involved (among other things) creating helper methods where possible to perform repetitive operations
and reduce the overall number of lines of code, adding 'using' statements to reduce closure and disposal of objects, using 'switch' not 'if' etc. and generally
trying to introduce best practice to the department.
03/18 – 08/18 : Marston Book Services Ltd – C# ASP.Net SQL Server Web Application Developer
I was invited back to Marston to assist with preparations for GDPR readiness and a project to implement real-time synchronisation with a third party database.
In addition to this I carried out bug fixes and change requests and continued streamlining the application.
03/16 – 11/17 : Marston Book Services Ltd – C# ASP.Net SQL Server Web Application Developer
During this contract at Marston I introduced multiple changes to the application:
- Implemented Entity Framework.
- Removed almost every stored procedure from the database and replaced them with Linq in the front end.
- Added a metadata class for every business object to facilitate validation via data annotation and to consolidate error messages into one location.
- Added a class to contain the configuration code for every business object.
- Moved validation logic (which could not be achieved via data annotation) to the business objects.
- Integrated Google Maps functionality, geocoding addresses as they are added.
- Introduced Table Per Hierarchy for objects where possible.
- Added auditing on a per field level.
- Created view models for logical groups of properties which did not exist in one object (company plus address, for example).
- Created further user controls for commonly used functionality.
In addition to the above I carried out general ongoing feature enhancements and bug fixes and worked to reduce the code overhead wherever possible.
01/14 - 07/15 : Marston Book Services Ltd – C# ASP.Net SQL Server Web Application Developer
I was invited back to Marston to assist with adding functionality to one of the company's mission critical applications. Amendments included those required to enable the application
to comply with new European VAT regulations. I also:
- Reduced the number of stored procedures by replacing ‘CheckForExisting’ stored procedures with Linq statements in the front end.
- Added abstract classes for the two types of user control (one for managing objects, the other for displaying information in gridviews).
- Created views in the database to correspond to all objects within the application and ensured that the objects did not contain any member variables
that did not correspond to a column in the view.
- Added Routing to the application.
- Added the basis of a route based sitemap provider to enable the insertion of object Ids into breadcrumbs.
- Reduced coding overhead by almost two thirds by replacing separate ‘Add’, ‘View’ and ‘Update’ pages with one UserControl, which used an
enum to set the state of the page.
- Introduced ModelBinding to the application which further reduced the amount of code and enabled the sorting (and paging if required) of gridviews.
- Introduced DataAnnotation to the objects to enable the use of ModelValidation.
- Added code to check for model errors and display a flag next to any required field that was not completed or contained incorrect information.
- Added functionality to enable users to save their location to the database and visit a page to display all saved locations.
This also enabled a diary system within the application. This could not have been achieved without using routing.
- Added ‘Create Spreadsheet’ functionality to all gridviews for reporting.
- Added filtering functionality to most gridviews to assist in finding required information.
- Carried out extensive handover to new member of staff.
- Created user documentation in the form of web pages to allow viewing of this online.
- Wrote an extensive coding standards and procedures document.
- Added Unit Tests for all data access classes.
04/13 - 11/13 : Infor - C# ASP.Net SQL Server Developer
A contract to develop an ASP.Net website to interact with legacy technologies that create licence keys for their enterprise software. It calls the software
via a web service which I wrote. The website requires user authentication, logs each authentication and checks every time a resource is requested that there is an
authenticated user making the request. As well as retrieving the licence key it creates a PDF document with instructions for applying the key. There is extensive,
searchable reporting on all of the licence creation details, plus complete user management facilities.
10/12 – 03/13 : Romans Group – C# ASP.Net SQL Server Developer
I was invited back to Romans by a Director to be a part of a large and complex mission critical project to redevelop the primary Romans website using Entity Framework,
AJAX, the Google Maps API, a great deal of client-side scripting, some WCF services and another third party API.
05/12 – 08/12 : Marston Book Services Ltd – C# ASP.Net Web Application Developer
A contract to add functionality to an intranet application. In addition to specification changes, I introduced object orientation, n-tier design and CSS, cutting development
time and improving look and feel. I also made major changes to the data layer which reduce server overheads and recommended security improvements. I also amended SSRS reports.
02/12 - 03/12 : Serversys – C# ASP.Net SQL Server Developer
A contract to help complete a CRM system for a major client.
10/11 – 01/12 : Romans Group – C# ASP.Net SQL Server Developer
A contract to develop business-critical web applications:
- An email to several thousand top customers requesting that they visit a website and update their details for the Company’s CRM system.
- A feedback-logging application recording Romans’ customer experiences and using ASP.Net 4 charting to present the results in a graphical format.
- An update to the Company intranet to allow staff to respond to blog entries, enabling forum-style communication within the Company. The new system records the user making an entry and allows an administrator to control responses. Additionally, a ‘suggestions box’ and a Twitter feed have been incorporated into the intranet.
- An update to the Company’s careers website. This includes extensive improvements to the job application form, a form for speculative applications and a system to enable applicants to register for emails informing them about relevant new roles. This has involved extensive interaction with the web services provided by the Company’s third-party HR system and the creation of new web services to enable other developers to use my code in the future. I have also created a custom content management system for data entry.
- The development of a content management system which enables any user to produce the code required for web based marketing emails. ‘Preview’ and ‘copy code to clipboard’ functionality is included in this application, as is dynamic image generation.
- The development of a complaints logging procedure for two of the Company’s websites.
- The development of a complete website for one of the commercial arms of the Company.
In many of these applications I have suggested, coded, tested and delivered features additional to the Company’s specifications. These were all completed well within the time originally allocated.
01/10 – 07/11 : HP – C# ASP.Net SQL Server Developer
My role in HP was as a C# developer working on high-end, mission-critical web applications. My duties included designing and prototyping as well as adding functionality to the applications.
My last project was to replace an Access database with an ASP.Net C# SQL Server application. This involved the full project lifecycle – customer liaison,
application and database design, coding to ensure security and data integrity requirements were met, documentation, delivery and training. I used my technical and customer care skills to suggest and
create enhancements to the old application, which were well received by the customer.
10/09 – 10/09 : Heath Wallace – CSS Developer
A very short contract to prototype and style a website using CSS.
10/08 – 11/08 : Euphony – ASP.Net Programmer
A contract to replicate a PHP website as an ASP.Net C# SQL Server application and to create an ASP.Net C# SQL Server application from scratch.
10/08 – 10/08 : Dryden Brown – C# ASP.Net SQL Server Developer
A contract to complete an application to book meetings, for use by conference delegates. I successfully completed the application in a very tight timescale.
05/08 – 07/08 : Triangle – ASP.Net Developer
A contract to contribute to the development of a flagship application for the retail market. I added functionality to several existing modules and
created several new modules to fit into the application framework.
10/07 – 05/08 : ESPA – C# ASP.Net SQL Server Programmer
A contract to rewrite a website as part of a four person team. I created administrative pages which enabled the Company to manage the website,
maintain company and employee profiles, FAQs and more. Extensive use was made of ASP.Net Ajax Control Extenders.
09/07 – 09/07 : Europacom – .Net Developer
A contract to write three console applications. These applications populated a spreadsheet from a database and sent it by email, logged information about the emails
that had been sent and interrogated a mailbox, updating the database with information about specific emails. Additionally they sent emails where an exception had occurred.
01/07 – 04/07 : Hill McGlynn – C# ASP.Net SQL Server Developer
I was responsible for the creation of an intranet application. It consisted of a large number of user controls, which I created, working together to allow call logging,
asset tracking and user creation among other things and management of all of the above. It was a mission critical project on which I was the only programmer.
11/05 – 10/06 : Connect Spot Media – Developer
I was responsible for the design and development of web sites from inception to delivery. This included giving technical advice at sales meetings, designing website schemas,
writing technical specifications and maintaining customer liaison throughout the projects.
05/05 to 07/05 : Open Mind – Database Designer
A short contract to re-structure and consolidate multiple Access databases into one relational database using VBA.
03/04 to 04/05 : Phoenix ARC – ASP SQL Server Web Programmer
My role at Phoenix was the creation of an ASP SQL Server replacement for an Access SQL Server application, as well as identifying areas where web solutions were
appropriate to replace paper based systems. These were enthusiastically received and implemented.
1997 – 2003 : Various Technical Support and Rollout Roles
Leisure Interests, Activities and Memberships
Travel, classic Mercedes Benz vehicles, photography, industrial archæology, archæology, ornithology, botany, lepidoptery, music, books, the arts.
Member of The National Trust, Hampshire Wildlife Trust, The RSPB