Profile
An expert in system development with many years experience complimented by software development skills ranging from shell scripts to modern cross-platform browser based solutions. As comfortable working on back-end APIs as front-end application interfaces I have completed many end-to-end application builds from hardware through to user interface.
Driven by a need for personal progression, software development has provided me with a fantastic opportunity to combine my love of problem solving with an engineer’s desire to make things that work.
Over the years I’ve used many platforms and languages but in recent years I’ve seen the advantage of using a single language across the whole development process. To this end I’ve gravitated towards JavaScript as my language of choice. This not only gives me the ability to use the same techniques on the client and server but also opens up the posibility of running the same application on “any” device.
I’ve been working with NodeJS as a back-end technology for over 3 years and AngularJS for front-end development for the same period. During this time my coding has evolved as I’m no longer switching between JS, PHP, C#, Classic ASP (VB) and other languages and have been able to put all my efforts into making best use of the superbly versatile JavaScript language.
Core Skills
A Software Developer by trade, I have extensive experience with ( but not limited to ):
- Business Analysis
- System Analysis
- Analytical Problem Solving
- System Design
- Project Management
- Databases
- APIs
- System Infrastrucuture
- Software Development
Able to work with all levels within an organisation I’m able to comunicate technical ideas and concepts at the required level from discussing refactoring techniques with a colleague to presenting a progress report to a project board.
I’m happy to work alone or as part of a team and have demostrated a commitment to delivering quality solutions and meeting tight deadlines.
Employment History
2021- DEFRA Common Platforms
Role: NodeJS Developer (SC Cleared)
Ongoing…
2021-2021 Monmoushire County Council
Role: Architect / Lead Developer
- Adding new features to the Social Care Case Management System. I built this system back in 2014/2017 and dip in from time to time to add new features and ensure the product is still fit for purpose and complies with current legislation and reporting requirements.
- A number of new features were added to the Children’s Services part of the system including a relationship manager that allows all related people to be seen in a single view and all the records to be easily updated with cross relationships ie “you’re my sister so I’m your brother” This feature has saved many hours of work in keeping related records up to date.
- I took the opportunity to refresh some of the older code using newer techniques which has resulted in quicker response times for parts of the system.
- I implemented a “hot standby” server solution using external hosting which is automatically updated to the latest database snapshot and latest production code each night. In the event of a complete loss of internal service the external service is available 24/7 as a backup.
- The search engine was updated to use “fuzzy matching” to allow soundex type matches to be returned. This helps when searching for people where their names may have been spelt differently by different practitioners.
Skills: NodeJS, Angular, ElasticSearch, MySQL, HAProxy
2018 – 2021 DEFRA Common Platforms
Role: NodeJS Developer (SC Cleared)
- I joined Defra to help develop an authentication/registration application as part of the Brexit transistion work stream.
- The project has been developed using NodeJS and MS Dynamics in conformance with Government guidelines and standards. Azure technologies such as B2C play a lead part in the processing of authentication and registration tasks as part of the OpenID Connect framework.
- I worked on all aspects of the NodeJS project including transistioning the whole piece from Handlebars to Nunjucks. and developing Hapi plugins and handlers to glue all the elements together.
Skills: JavaScript, NodeJS, Azure Dashboards, App Insights, MS Dynamics, Nunjucks, Hapi, Lab test suite
2017 – 2018 X4 Software Ltd
Role: NodeJS Developer
- I joined a commercial project team developing an online arbitrage system. This system sources products at the lowest available prices where there is a profit to be made re-selling the items on Amazon.
- The project is based on a React/Redux front-end with a NodeJS back-end which employs micro-service architecture allowing it to scale to meet demand.
- My involvement was to add a number of key features to the product including interaction with Amazon’s MWS API, conversion from RabbitMQ to Redis messaging queues and numerous utility applications relating to data migration and processing large volumes of data.
Skills: JavaScript, NodeJS, MWS API, Amazon Hosted Elasticsearch, MongoDB, Amazon EC2, Microservices, Redis, GIT, Mocha, Chai, Jira
2017 Contracted to 2P Ventures
Role: NodeJS Developer
- Working in a commercial environment I have developed a suite of AWS lambda to provide horizontal scaling to an existing data ingest pipeline. These lambda will allow 2P Ventures to expand their client base without suffering bottlenecks as additional transactions are processed.
- This project required a number of Lambda to be developed in NodeJS. Using serverless.js to manage and deploy solutions I took advantage of a number of AWS products including: DynamoDB, DynamoDB Streams, S3, EC2, API Gateway and SQS.
- Building on AWS’ event driven infrastructure, lambda provide a scaling solution without having to be concerned with the underlying infrastructure. This project has allowed me to take my existing infrastructure experience into the cloud and has opened my eyes to the possibilities offered by these new technologies.
Skills: JavaScript, NodeJS, AWS Lambda, AWS assorted components, serverless.js, Mocha, Chai, Code Climate, Circle CI
2014 – 2017 Contracted to Monmouthshire County Council
Role: Architect and lead developer
- I developed a browser based case management system for the Monmouthshire County Council Social Care department. The product was to be scalable and commercial in that it could be packaged and sold to other Councils and available to home workers and 3rd parties.
- As sole developer on this project I worked closely with the Social Care department to deliver a complete solution for managing Social Care cases for both the Children’s and Adult’s Services departments. The system is available 24/7 and is the main computer system for 150+ concurrent users on a daily basis.
- My involvement covered all aspects of the development from hardware and infrastructure through to coding and delivery whilst also being responsible for translating the business requirements into achievable project goals. A pseudo Agile approach was taken to project delivery with Trello used to manage the backlog, sprints and delivered components.
- The system uses NodeJS at the back-end with a MySQL database running in Master/Slave mode with reporting from the real-time Slave server. The SailsJS framework provides a RESTful API with the client-side being developed with AngularJS. ElasticSearch is used as a search engine within the system with all updates being mirrored from the master database into the search index.
Skills: JavaScript, NodeJS, AngularJS, ElasticSearch, HTML5, CSS3, JSON, Bootstrap, MySQL, Linux Server, HAProxy, Microservices, GIT, Mocha, Chai, API, Plato Analysis, JSDoc, Agile, PM2, Grunt, LESS, 2FA, OTP
2011 – 2014 Shared Resource Service (SRS)
Role: Lead Developer (Gwent Police & Security Cleared )
- As lead developer I developed and was responsible for software solutions, components and the implementation of those solutions within the corporate infrastructure. My day to day work included building systems, assisting the team with their solutions, improving speed and scalability, engineering front-end components and complete application solutions.
- I introduced an agile project management approach and moving the team towards a test driven development approach. I was also responsible for introducing development tools to aid the workflow such as Redmine and Gitlab.
Skills: OO JavaScript, Node.js, C# Windows Forms, C# Console, C# Windows Services, HTML5, CSS3, JQuery, Angular.JS, Bootstrap, C#, Server Technologies, Networking, Development environments, Agile, GIT, XML, JSON
Example Projects:
- Homecare Sheduling and Resource Planning
I developed a corporate system for managing the delivery of home-care services. MS-SQL database with WebAPI2 providing a JSON API layer and OO JavaScript with jQuery in the client. This system allows the client to visualise team allocation with a full screen interactive planner. Team management, client requirements, availability and services are all managed graphically from the same panning, scrollable window.
- Mobile application to automate Council service provision
I was heavily involved in the development of a mobile application specifically designed for Windows Phone 8 and Android to allow remote workers to access their job schedules and feedback information into a central database. Having to work across a large county with multiple mobile black-spots this application caches data on the handset until an appropriate connection is available.
Using MS-SQL database with WebAPI2 (C#) at the API layer this application provides a simple convenient way to collect data and allocate work.
- Social Media Application for local groups
I have designed and implemented a social media system with the aim of encouraging the formation of common interest groups and to provide existing groups with a means to keep in touch. This project was driven by a high level board with big lottery funding to meet a number of criteria for best use of technology in the community.
Using MongoDB, NodeJS, WebRTC and other current technologies to provide a multi-channel communications hub. The product uses redis pub/sub inter-service communication and socket.io for realtime updates. ElasticSearch provides an easy way to find content and members can keep in touch through video, audio, text chat, email and forums.
With AngularJS on the frontend and APIs provided by Express and documented with Swagger this is good example of a micro-service architecture. Worker processes handle video conversion, email, search indexing and other processes to allow the system to scale horizontally over multiple servers and if required to spill out into the cloud.
- Property Management and Logistical Planning
I built and implemented a complex logistics management system to allow items to be located across multiple stores, van routes planned and items relocated, disposed etc. This system uses bar codes to identify items and interfaces with handheld barcode scanners to allow store managers and van drivers to carry out their daily tasks.
The property system is used by over 1500 users and provides a case management approach allowing items to be grouped and managed. A drag and drop front-end allows non-technical staff to easily manage items and to report on the movement history of items.
With a corporate MS-SQL cluster at the backend the API has been provided by Classic ASP and the front end is HTML5 with a heavy reliance on jQuery.
2004 – 2011 Torfaen County Borough Council
Role: Development Team Leader (CRB Cleared)
As development team leader specialising in JavaScript I supported existing Classic ASP applications and developed standards. Using a project approach based on Prince 2 I was responsible for developing numerous internal systems and overseeing the development and implementation of many more. As a technical lead I often chaired a technical strategy group responsible for introducing new technologies and solving the issues raised by changing an established topology or other infrastructure.
Skills: C# Windows Forms, C# Console, C# Windows Services, JavaScript, HTML, CSS, JQuery, JQuery UI, Classic ASP, Windows Server, Linux Server, Prince 2 Practitioner
Example Projects:
- Employee Warning Database
I built a system to allow staff visiting members of the public to be made aware of issues that may be faced when dealing with some members of the community. The system uses a strict security mechanism to ensure accurate information is provided and allows searching by post-code, name and other attributes.
With an MS-SQL database and Classic ASP providing the business logic this application has been in continuous operation for over 10 years.
- Corporate ICT Asset Database
I built an asset management system that took data directly from an Altiris based asset management system and allowed non computer based systems to be added manually this application has been in continuous use for over 10 years. The system allows uniquely numbered items to be tracked and catalogued for recharging costs and to manage ongoing rolling replacement schedules.
Assets are tagged with unique codes and synchronised with a Heat helpdesk system allowing support staff to easily identify hardware.
1998 – 2004 Hyder Business Solutions
Role: Server Team Leader / Project Manager
As Server Team leader and trained as a Certified Netware Engineer (CNE5), I was responsible for delivering the server infrastructure to HBS’s customers. Initially based on Novell NetWare I project managed the transition from Netware 4.11 to NetWare 5 and then from NetWare to Windows Server for over 1500 client machines.
Responsible for a small technical team I delivered technical solutions based on Linux, Solaris, Windows and Novell NetWare. During this time I wrote a system to automatically notify engineers when jobs were allocated to them in the help desk system (Heat), this was before SMS and was very effective at increasing response times to reported issues.
1997 – 1998 CSC Computer Sciences (British Aerospace)
Role: Network Engineer
Taking on a role with the network team I used my time with CSC to develop a network management tool to assist with managing over 5000 onsite workstations. The laborious manual task of managing patch panels and switch ports became a simple task of running a report to identify unused ports and spare capacity.
1990 – 1997 Newport County Borough Council
Role: Technical Analyst
In 7 years at Newport CBC I learned my trade in all areas of ICT including first line support, desktop support, networking and server support. Taking every opportunity to demonstrate my programming skills I wrote many utilities and applications. These included automatic workstation audits and a managed IP address allocation database. I was sought out by all levels of the organisation to assist with data manipulation and integrating diverse systems.