Adam Bayes

Full Stack Developer & Consultant

Hello, I'm Adam 👋🏻

What I Bring

Discovery

From my own experience with working with a variety of projects, I have understood that it is not about which latest tech stack you use to solve the problem but understanding the fundamental business issue and solving it with the right technology.

Implementation

Over the years I have implemented a number of different projects using a vast range of technologies for different purposes. While this is good, building relationships with the team members and implementing best practices building a robust product is better.

Consultancy

As a Full Stack Developer, working with businesses providing responsive high quality web applications is what I strive for. I have many years of experience predominantly with Angular and .NET. As a fast learner I am able to pick up whatever toolkit is required to get the job done quickly.

Leadership

I have been in leadership roles for a number of years and have been able to lead teams to success. I can mentor and guide junior developers as well as managing regular sessions with the team and stakeholders alike.

Integrity

Integrity comes in multiple forms when it comes to Development. Being open and transparent with the team and stakeholders is crucial for any project to be successful. On the technical side, writing clean and maintainable code that is tested is also fundamental.

Support

In previous roles I have mentored Developers and provided many different levels of support. Whether its working to translate technical requirements to digestable User Stories or mentoring a Junior, the door is always open and I'm always ready for new ideas.

Where I've Worked

Jaguar Land Rover

2022 - 2024

My next gig as a full-stack developer consultant I worked as the lead developer for Aiimi in partnership with Jaguar Land Rover.

This project involved more C#/.NET Core and required picking up more skills working with Aiimi's in-house product which is the Aiimi Insight Engine. I joined Aiimi at the beginning of 2022 and primarily worked within their services team which meant I was a consultant to help deliver high-quality solutions using Angular or .NET Core.

The goal of Folder Access Report was simple, it was to answer the question "Who has access to my folder?" and more importantly, for those who have access, what can they do?

With the assistance of other developers who had worked previously delivering other projects with Jaguar Land Rover on both the Aiimi and JLR (Jaguar Land Rover) teams, we were able to build a solution that would crawl file systems perioidally using the Aiimi Insight Engine, building a hierarchy of folders with NTFS permissions and documenting these within Elasticsearch and debugging with Kibana. Combined with a backend API that was built with .NET Core & the Elasticsearch NEST client, we were able to put together a simple dashboard that displayed all of the folders the logged-in user could access on a file system.

When a user selects a folder from the Folder Tree, a request is made to return a list of all the users who have access to a folder as well as their full permissions for whether they could read/write/delete or view that directory. As Windows isn't that simple when it comes to file system rights, using Elasticsearch combined with Aiimis Insight Engine we were able to boil down each user's permissions to Read, Modify, List or Delete. Another interesting feature of the dashboard we built was we were able to make use of the Aiimi Insight Engines search functionality which is built using Elasticsearch queries to search for a Folder and then view the overall access permissions, or in reverse we could search for a User or Security Group and then view all of the Folders that entity has access to.

One of the greatest challenges for this project was the performance of the application. As there could be hundreds of thousands of folders that exist within an enterprise, this tested my knowledge of performance and a lot was learned on the way, we were able to find the sweet spot of how we can manage performance using technologies such as NgRx as well as making use of background service calls within .NET to obtain an up to date snapshot that was cached to provide a smooth user experience for a robust application.

Angular.NET CoreElasticsearchADFSAiimi Insight EngineNgRxIISJasmine/Karma

BEIS

January 2022 - September 2022

I joined BEIS back in early 2022 as a full-stack developer and took on my first role as a consultant sub-contracted from Aiimi.

The goal was reflective of the recent changes that had occurred in the country during Covid-19 and involved helping the local councils of the UK submit data, that would eventually provide residents within their county an energy-saving discount.

Working closely with the stakeholders and data engineers. As a team we opted to use Azure as a backbone for the project, this was chosen as it was a great candidate for us developers and data engineers to keep our data secure as well as manageable.

For the project to be considered a success, it was very important that the application was secure and provided a solid user experience that was clean and felt familiar for a user who was visiting the app for the first time. Thankfully we were able to take advantage of the NPM design library (put together by the gov.uk) this handled the majority of the heavy lifting to provide a good user experience.

One of the main challenges for this project was that because the app would need to be B2C, this means we would need to cater for various types of users. Fortunately, Azure Active Directory with Azure B2C is very flexible and we were able to provide a great user experience that allowed us to add another dimension to what a user was able to do within the app.

As the project grew we were able to build a robust system that allowed local councils, to add extra users to the Azure Active Directory so that their colleagues could submit data, providing the logged-in user had the correct privileges.

Of course, if an admin were to create many user-level accounts we would need to keep track of the new users and add event logging as this would affect the cost of the Azure subscription, by making use of the Auditing and Cost management services within Azure we were able to keep track of user creation and deletion as well as provide a protected area of the dashboard for admins to track who is within their circle and who is submitting data.

Angular.NET CoreAzureSQLAiimiJasmine/KarmaXUnit

Entertainment

2019 - 2021

My Experience at Entertainment: Enhancing Mobile Development Skills

During my tenure at Entertainment, I ventured deeper into Mobile Development, shifting from the familiar hybrid approach using Ionic Angular, experienced during my Buxbo project, to native development with Kotlin & Swift. This transition was not only interesting but timely, as I was eager to diversify my skill set.

Previously, at university, I had developed basic applications using Java and Android Studio, primarily focusing on simple GUIs and API calls. However, taking on legacy applications natively built for different platforms proved to be an enlightening challenge. Delving into the older code helped me understand Android’s intricacies and draw parallels in iOS, facilitating a smoother learning curve for Swift & Objective-C, complemented by additional Pluralsight courses.

The Challenge: Modernizing Legacy Applications

The inherited applications, which weren't frequently updated, contained a substantial amount of legacy code. This code was a mix of Java, Objective-C, Kotlin, and Swift, spread across 5-7 applications. Initially, our primary task was to address numerous bugs to become acquainted with the codebase.

The inherited API was a monolithic structure that required significant refactoring, as many services were either redundant or broken. Our strategy involved reconstructing these into efficient, on-demand microservices using .NET Core and AWS, leveraging the gRPC framework for communication.

Ultimately, the team successfully revamped the entire backend and rectified the native applications. A pivotal decision, which proved beneficial in hindsight, was adopting a Test-Driven Development (TDD) approach. Initially, we had a rudimentary understanding of the app's intended functionality. Confronted with unmaintained code, we recognized the necessity to conduct our own testing. Collaborating closely with the business to comprehend the full functional requirements, we developed a structured testing methodology. This approach not only facilitated the repair of unfamiliar code but also enhanced our overall comprehension of the applications.

SwiftObjective-CJavaKotlinDockerAWS.NET CoregRPCXCTestMockito

Let's Work Together

Have a project in mind? I'd love to hear about it.

Send Me An Email