Josh Yaxley Durham, UK joshyaxley93+jobs@gmail.com github.com/JoshYaxley C#, JavaScript, & AWS Developer Summary A curious and competent software engineer, with experience at all levels of the stack and all parts of the life- cycle. Able to build ideas into secure and resilient products. Always striving to learn new things so that innovation can be brought to every challenge. I can work in any technology, but my main proficiencies have become C# and JavaScript. I love the opportunities that cloud services provide, with my main experience being in AWS. I pride myself on having good communication and being a team player. Skills C#: ASP.Net Core, Web APIs, Console Applications, Entity Framework, SignalR, xUnit JavaScript: ES7, TypeScript, VueJS, Angular 7, Node.js, Webpack, Babel, Jest AWS: Certified Solutions Architect (Associate) DevOps: Continuous Integration/Deployment, Auto-scaling, High Availability, Infrastructure as Code Security: OAuth2, OpenID, SSO, Token/Claims-based Authentication, Firewalls Distributed Systems: Message Buses, Eventual Consistency, Guaranteed Delivery, Idempotency SQL: SQL Server, Oracle, PostgreSQL, MySQL MongoDB: MongoDB Certified Developer Agile: Certified ScrumMaster, JIRA Education BSc in Mathematics 2012 - 2015 Durham University Class 2, Division 1 Experience Software Engineer 2019 - Present BGL Group DevOps & Web Development Consultant August 2019 Peratech Holdco Limited Senior Developer 2017 - 2019 YESSS Electrical I was tasked with building YESSS Electrical's web development team. From a solo developer, I recruited and trained three more developers to give us the capacity needed to deliver. Existing developers within the company worked on .Net Framework WinForms applications and had little to no web experience, so it fell to our team to pave the road and decide what technologies we needed to use. Our objective was to build a bespoke B2B and eCommerce experience for our customers: fast, fully secure, and resilient. Platform Due to initial restrictions, our platform existed as IIS and console applications running on Windows VMs. We used SaltStack for deployment, allowing us to write our infrastructure as code and keep it source controlled in Git. Once we had sign-off to explore cloud opportunities, we migrated our platform to live on AWS, running .Net Core applications in Linux Docker containers on ECS. We moved away from Jenkins in favour of CodeBuild and CodePipeline. Feature branch commits would deploy a unique website for that branch on a subdomain for help with QA and code review. Staging builds & deployments were triggered when pull requests were approved. Automated tests ran as part of the build process, and features were passed to a manual QA team before production deployment. Cypress UI tests ran on every build and recorded videos were uploaded to an S3 bucket. Our small team was responsible for 20 APIs & applications, preferring a service-oriented microservice architecture over traditional monolithic approaches. eCommerce We used NopCommerce as a base for our eCommerce website. This provided basic eCommerce functionality, which we extended to integrate fully with YESSS Electrical's products, stock, pricing, customers, branches, and order process. We completely re-styled the frontend, and incrementally introduced VueJS components to make it easier to include more dynamic user experiences where possible. We made the website punchout- compatible, which allowed customers with purchasing solutions such as Coupa to punchout to our website and have their basket sent back into their system for further approval. Authentication For authentication, we used Microsoft.AspNetCore.Identity and IdentityServer4 to build an OAuth2 authentication server that could be used to login to the eCommerce website and internal web applications. This server protected API resources using bearer tokens and claims-based authentication. ESB I wrote an enterprise service bus (ESB) to facilitate service decoupling and bespoke integrations between distributed systems that couldn't usually talk to each other. The ESB would pull messages from SQS, then transform, enrich, and transport the message somewhere else, routing based on the type and contents of the message. The ESB was heavily configuration and reflection driven, allowing developers to easily add new integrations and re-use existing components by writing simple JSON files. This application was used to allow customer's systems to directly place orders with and receive invoices from YESSS. We used it to place purchase orders directly into our supplier's systems. The ESB would receive updates from our product information management system (inRiver), and propagate these to our eCommerce website. We were able to introduce a new warehouse management solution (Manhattan), and fully integrate it with YESSS's internal systems to keep stock in check and optimise our warehouse operations. If a message failed to process, it would be retried several times (using exponential backoffs), before a notification would be sent to the relevant support staff. This protected us from transient failures and network glitches. Auto-scaling was used to run several copies of the ESB when load was high (using CloudWatch alarms on the number of messages in the SQS queue). Every message that passed through the ESB was stored in MongoDB, and an internal web UI was written (entirely in VueJS) to allow these messages to be viewed and searched. This was incredibly useful for diagnosing when things went wrong, and allowed users to edit and replay messages so that problems could be fixed quickly. The UI held a web socket connection to an API that listened for MongoDB changes, so that new messages and failures were streamed in real-time to the UI. Side Project 2017 - Present Wipefest Passion project to make it easier for World of Warcraft players to analyse their raiding combat data Aggregates large amounts of data from Warcraft Logs to make it easier to digest and understand Includes a Discord Bot that posts auto-generated summaries for every pull as the guild raids Open-sourced on GitHub, and developed completely in spare time Software Developer 2015 - 2017 Centre for Evaluation & Monitoring, Durham University Re-created the invoicing system to be fully electronic Modernised the data collection process, with big UX improvements Lead a team for every hackathon, on topics such as NoSQL, Spark, Machine Learning, and Docker Attended MLConf 2016, in San Francisco, and MongoDB Europe 2016, in London Life I started programming when I was 11 and have always had it as a hobby. For quite a while I focused on game development, and won 1st, 3rd, and 5th place in GM48 game jams. When I'm not programming or gaming, I like to read, listen to podcasts, play guitar, watch TV, and cook. When I was younger, I played in rock bands and spent a lot of time composing and recording music. Whilst at university, I dabbled in creative writing.
Enter the password to open this PDF file:
-
-
-
-
-
-
-
-
-
-
-
-