John Sutcliffe
Verified Expert in Engineering
Software Engineer and Developer
Dortmund, North Rhine-Westphalia, Germany
Toptal member since April 1, 2021
John is a developer with 15 years of experience creating commercial software. He is an expert in back-end projects using C# with top skills in JavaScript, Angular, and React. He created a sophisticated booking application that enables universities to manage and optimize the use of their resources. John has developed cloud-hosted products, including some that used a microservice architecture hosted in Docker.
Portfolio
Experience
Availability
Preferred Environment
C#, ASP.NET, AngularJS, Docker
The most amazing...
...application I've developed was for universities that enabled them to manage and optimize the use of their resources.
Work Experience
Software Architect
Dome Consulting
- Migrated an old web forms project into microservices. Used a reserve proxy to run the old and new applications side by side and have a phased transition from the old to the new architecture to avoid a Big Bang update.
- Implemented a micro-front-end architecture. Pages were moved from the web forms application to Angular with a microservice REST API in stages while maintaining a single application feel and consistent styling.
- Added Autodesk 3D modeling to the application and interacted with their API to allow the selection of parts in the model and link to elements within our local database.
Senior Developer
MesserSoft
- Developed a microservice application using C# ASP.NET and AngularJS. The applications allow users to manage a production job's lifecycle from the initial quote generation to the final inspection of the produced part.
- Integrated onsite legacy applications using message queues. This was developed using RabbitMQ.
- Added authentication to the application using the OpenId protocol. I designed a model that enabled the mapping of a user's details from the onsite identity provider to application permissions.
- Developed a build pipeline in Azure DevOps to create the application, run the unit test, and publish the Docker containers.
Software Architect
OpusCapita
- Developed Node.js microservices for processing B2B financial transactions using RabbitMQ and Azure message bus to process messages. Developed a micro-UI using React.
- Created a token service that issues JWTs for use in the product’s API. Tokens are issued using the OpenID protocol.
- Developed a user notification service and designed a preferences model which allowed individual customers to create notification lists and configure how they want to be notified.
- Built a token service that issues JWTs for use in the product’s API. Tokens are issued using the OpenID protocol.
Senior Software Engineer
Scientia
- Delivered a variety of projects developing resource scheduling applications for higher education.
- Re-architectured a legacy application in a hosted C# microservice application running in Azure.
- Expanded and improved a WinForms application that synchronized data via message queues to a hosted web application.
- Created a data transfer tool to import reference data from Oracle and SQL Server databases into a SQL Server database. This greatly reduced the time required to perform the transfer compared to the previous version of the application.
- Presented software at user conferences and user groups. Ran internal training courses for the support and consultancy teams.
- Coordinated back-end development with an outsourced front-end development team.
- Authenticated web applications using the SAML protocol.
Software Engineer
AVEVA
- Developed web parts and workflows in SharePoint for managing documents associated with the oil and marine exploration industry.
- Served in a specialist web development team within AVEVA to provide web development support to projects. This included providing training through Wikis. I presented a guide to using templates in ASP.NET and SharePoint.
- Assisted the development team architecture control group to analyze the generic web controls and determine which ones should be developed for reuse across all projects.
Software Engineer
Granta Design
- Created applications for managing and capturing engineering data in the aerospace industry.
- Assisted in the development of all parts of the software including the data layer, business logic, interfaces, and the Windows and web applications using WinForms and ASP.NET.
- Created a secure, scalable web application with C#, ASP.NET, and AJAX. The web application was required to handle 10,000s of users.
- Presented projects to customers at a biannual user group.
- Collaborated with customers on several projects to develop tools to analyze their test data and import it into the application.
Experience
Resource Booker
I developed and architectured the back-end ASP.NET application and coordinated with an outsourced developer who created the front-end UI. I designed an object model that enabled universities to group their resources and assign availability and access to groups. This allowed the university to restrict students from booking certain rooms at certain times of the day. Staff members could use the same UI to book from a larger pool of rooms with more flexibility over the times they were allowed to book the rooms.
I implemented an approval workflow for the booking of the resource. This enabled the university to allow the user to book a resource immediately, as long as it was available, for example, audio-visual equipment. However, they could also require approval for some types of bookings, such as a room booking where a student group had invited an external speaker to present to the students.
Web Application Migration
This was a multi-year project, and there was a requirement to release this in a phased approach along with new features rather than a big-bang release after several years.
I created a plan to identify areas of functionality that could be extracted into a microservice and then add new pages to an Angular application to use this new microservice. A reverse proxy gave the user experience of a single consistent application.
CHALLENGES
• A single authentication protocol between the old application, using an ASP.NET session, and the new microservice, using JSON web tokens (JWTs). Solved using an internal microservice to validate the JWT for the legacy application and set the user on the request context.
• Navigation between the old and new pages. A new routing service was needed in Angular to identify when an internal page redirect could be used and when a full-page redirect was needed when accessing the old UI. The reverse proxy required a list of URLs to pages that had already been migrated, which we mitigated by trying to group pages within routing rules.
Education
Master's Degree in Materials Science and Engineering
Birmingham University - Birmingham, England
Bachelor's Degree in Materials Science and Engineering
Imperial College - London, England
Skills
Libraries/APIs
Entity Framework, OpenID, React, Node.js, Windows Forms (WinForms)
Tools
Visual Studio, Autodesk, AWS CLI
Languages
C#, C#.NET, SQL, JavaScript, Excel VBA, TypeScript
Frameworks
ASP.NET, .NET, .NET Core, AngularJS, Angular, Express.js
Paradigms
Agile Software Development, Agile, Microservices, REST, Building Information Modeling (BIM), Microservices Architecture
Platforms
Docker, Azure, Oracle, SharePoint
Storage
Microsoft SQL Server, Elasticsearch, MongoDB, NoSQL
Industry Expertise
Teaching
Other
Web Applications, Full-stack Development, API Integration, OAuth, Architecture, Technical Leadership, Mathematics, Materials Science, Engineering, Science, Research, Presentations, Regular Expressions, API Design, Reverse Proxy, CI/CD Pipelines
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring