I was one of a team of developers working on the first full release of the company's hotel management system, this is a windows application written in Delphi connecting to a data centre. I was also responsible for analysing the path for this application to be migrated to C#.
I also worked on a new project for managing the companies hotel list for billing purposes, this was a WinForms application written in C#.
This involved Deplhi 2007, C#, WCF, WinForms, NHibernate, SQL Server 2005.
I was the main developer on a project to extend and rewrite an application for recording lending work-flow and generating and tracking requirements for the lending officer to fulfill before a loan can be paid.
This was a 6 year old, 3-tier, application that had become completely unmaintainable, I rewrote the codebase in a more generic fashion so that it would be easier to develop in future.
This involved VB.Net, NHibernate, SQL Server 2008.
I was a senior developer in a team of 8 working on developing the company's product, a scalable web application for storing and searching skills. I was the first developer on the team and stayed until their launch. I worked on several of their services (web and windows).
The services are written in C# with WCF interfaces, querying a SQL Server database through stored procedures and Linq. We used DSL and templates to generate code from interface and data models, I was also involved in writing the templates and model projects.
This involved C#, T-SQL, WCF, SQL Server 2008.
I was working in a team of 3 developers on Bank of Scotland's mortgage platform.
This involved extending the user interface and database to handle more complex products and completely rewriting the actual calculation functions to be flexible and easy to extend.
This involved C#, ASP.Net, T-SQL, SQL Server 2005
I was working as a senior developer in a team of 10 developers on the company's sole product, SaaS, a web application for managing all data related to jobs and applicants.
I was working on moving the application from a 3-tier system to a fully distributed and scalable application framework. I have worked on all parts of the application but was primarily responsible for integrating the distributed caching technology, GigaSpaces, designing an extensible architecture to allow UI controls to be cached and created in a flexible data driven manner. I was also responsible for mentoring other developers with particular emphasis on training the senior developers in the use of OOD and generic design.
This involved C#, ASP.Net, T-SQL, GigaSpaces, NServiceBus, NHibernate, SQL Server 2005, NUnit.
I was the sole developer of Grainneog Ltd. The company was created with the intention of writing custom software for the public sector and for use while contracting.
I have written tender proposals and prototype solutions for several bespoke software projects
These projects were mostly client server applications requiring databases and web based interfaces, one example is the Student Information Management System for a university which would handle all student information allowing students and staff to view and edit their details, exam results, timetables and payment with a user management layer and multiple levels of permissions.
This involved C#, ASP.Net, ADO.Net, SQLite, SQL Server 2005.
I was the Software Architect/Team Lead in RiverDocs, I designed the company's product and managed a team of 6 developers and 1 tester as well as being the senior software engineer.
While there I took the project from market requirements to its first release, coding a large portion of it as well as writing coding guidelines and procedures and being involved in all decision making.
The product converts print format documents (in Word or PDF) into accessible html adhering to the W3C web accessibility guidelines. The first release was a Windows desktop version with a cross-platform server version to follow in subsequent releases.
This involved C++, C#, ASP.Net, Mono.
I was responsible for the development of all of Automsoft's projects as part of a small tight-knit expert team. This responsibility covers all aspects of the product development life cycle including requirements gathering, design, development testing, and customer support.
Automsoft sell software for handling the huge amounts of process data produced by Pharmaceutical and Utility companies. The product is split into multiple components communicating through DCOM, .Net or IIS/XML; the database used is an OODB from Objectivity. The majority of the code is written in C++ with a number of GUI components written in C#, VB.Net, VB or MFC.
Zero data loss (high availability) solution
We needed to provide a zero data loss solution. We did this with two components.
o I extended our existing data logging component so that it could connect to multiple servers for a given dataset and seamlessly switch from server to server in the event of failure. The component had to be almost completely rewritten due to the brittleness of its original design and lack of thread safety.
o A server side component was written to cache the data in case the server couldn’t talk to the data logging component. I implemented the persisting of this cached data (primarily Variant arrays) so that we would lose as little as possible in the event of multiple failures.
This involved C++, MSMQ, and DCOM.
Batch Reporting Tool
We needed to dynamically create PDF reports from the customer’s data through a web interface.
I worked on the following parts of this project.
o A web based client to allow the user to choose a report template and parameters and generate a report.
o A web service to allow access to our COM components and to perform other tasks such as digital signing.
o An XSLT style sheet to convert the XML containing the report data into XSL (for PDF generation) or HTML.
This involved VB.Net, ASP, ASP.Net and XSLT.
Database Metadata Saver
The system requires a considerable amount of configuration this can take days. Users often wanted near identical set ups on a number of servers (i.e. machine A has a heating coil called HC, B has a heating coil called HC).
o I designed and implemented a dll for exporting all the configuration values from our database to an XML file and importing them into a different database, the XML was required to be tamper-proof so digital signing was added.
This involved C++, COM and XML.
Smaller Tasks
o I wrote a web-based real-time viewer to allow the user a freeform view of the data coming into the system.
o I moved our xml processing components from using MSXML to Xerces and from using DOM to SAX.
o I implemented object compression in the database using the ZLib library.
o I wrote a “SAP NetWeaver” component for certification by SAP.
o I extended our ODBC server as we extended our database schema
These involved C++, C#, ASP.Net, COM, SQL and XML.
The company design optical inspection machines for validating printed circuit boards for the SMT industry.
I worked on 3 teams while in the company.
As well as doing project-based work I was also involved in training, mentoring and technical lead activities.
Software Architects
I was Software Architect for two years. My main task was to try to increase the level of commonality across the product lines. This was part of a drive to try to put a structure onto the previous 15 years of spaghetti code.
o I was responsible for the design and implementation of a framework for the image inspection algorithms. The image algorithms are the central part of the software and they had grown over 15 years, without any thought about maintainability or extensibility and I designed a framework to future-proof any new development and allow the old algorithms to be easily upgraded.
This involved UML, C++ and XML.
SJ Series
I was team lead for two years on this project. This is the company’s main product and has code written in C, C++ and VB. I worked on two large projects and a number of smaller ones while on the SJ-10 team.
o Image inspection framework: I worked on this as part of the SJ team first before moving from the team to concentrate fully on it (see above).
o Smaller projects: I worked on a number of smaller projects. Extending our bar code reading software to be flexible and stable. Creating a scripting (event driven) interface into our software using XML configuration files.
o Creating a windows interface for the product: I was working as part of a team who were creating a windows style user interface to the product to replace the old console one that had been used. This involved adding a C++ layer onto the C code and then adding a Com layer onto the C++ to connect with a VB front end. Much of this work had been done before I joined the team; most of my time was spent fixing bugs and adding finishing touches and missed functionality.
This involved VB, C++, COM/DCOM, XML and C.
The SPC Toolkit
I was the sole developer on this project. The product was for Statistical Process Control, it produced statistical analysis and charts to determine whether there were problems in the production process.
There were two parts to this product; the data engine and the charting package.
o The data engine was written in C++; it ran as an NT Service using DAO to populate the database. Most of this code was written for another project before I joined the company; I had to rewrite the parsing routines to make them more efficient and maintainable (e.g. using STL ...