David Bunce

As a self-taught developer, having a background in molecular microbiology, I've been able to learn from experience, driving my education independently. I'm constantly looking for new and different technologies to learn, to bring new skills and experiences. I've been using Laravel since version 4.2 back in 2015. I prefer to write clear, testable code that is extensible and efficient as well as carefully selecting tools for optimal developer experience.

Career

3GRC/Prevalent
2023 - Present Team Lead
My focus as Team Lead at Prevelant was focussed primarily on architecting both the backend and frontend applications for scability, perfomance and security. I was accountable for scoping ticket requriements, guiding junior developers through their professional devopment and managing the team's output to ensure that deadlines were achieved and leveraging my knowledge of the application to design and support the team's developers in adding new features and supporting or refactoring existing features. I learned a lot about designing and architecting code to facilitate future enhancements and to utilise and modify parts of the existing application to easily craft enhancements. I also learned how to lead a diverse team of developers of ranging experience and how to review Pull Requests to deliver constructive improvements. During this time I continually upgraded the application to new versions of Laravel, refactored features to make better use of Laravel functionality, increased performance by moving many intensive tasks to queues and workers and worked with DevOps and security researchers to increase performance and security. When the company began migrating our AngularJS application to the latest version of Angular, I also helped rewrite multiple parts of the application in the new Typescript framework.
2019 - 2023 Senior Developer
As a senior developer, my primary responsibility was to support junior members of the team in accomplishing their day-to-day tasks as well as adding new features to the application as well as conducting large-scale backend code refactors to decrease technical debt as well as re-architecting the backend to make frontend changes easier. I learned alot about writing extensible and self-explanatory code to ensure that the application became managable over a long period of time with a high test coverage. In this time, we began to move our application to docker containers and i gained experince in using docker-compose to build production-ready containerised applications.
2017 - 2019 Developer
As a developer, my job was to take part in estimating ticket workload and to complete adding of new features and bugfixes, whilst supporting team members in completing team workload. I was given a high degree of creative freedom to express concepts programatically, whilst learning to write clean, maintainable and testable code. I learned to use AngularJS as well as AWS functionality supported by laravel including SQS, SMTP and S3. At this time, the company was in a start-up phase and the decisions we made as a team and as individuals have made a big impact on the future of the product. It showed me that minor decisions can have a big impact further down the line and that those should be considered carefully when selecting a potential solution.
The Escape Design
2015 - 2017 Junior Developer
Starting as a junior developer at The Escape, my main responsibilities were to support the development team by completing bug fixes and minor feature enhancements to existing brand products. I learned how to manage my own learning, teaching myself php and laravel through online sources and personal development projects. In this position I taught myself how to use Laravel and inline vanilla Javascript.
ThermoFisher Scientific
2009 - 2015 Development Scientist
In my time at ThermoFisher Scientific, I was responsible for conducting experiments into lower cost raw materials used in bacterioligcal and fungal growth media. I learned the importance of writing clear and concise documentation as well as professional and clear interpersonal communication.

Technologies

Laravel
I have used Laravel since the start of my development career and have a great deal of experience with it, as it has evolved over time. The Prevalent application is now at a point where my team is required to utilise Laravel's Dependency Injection system to extend or replace certain base components in Laravel for improved diagnostics, tighter security and more scalable implentations. We have a custom implementation of Multitenancy in our Laravel application which leverages middelware, console commands and queue jobs to securely manage multiple simultaneous database connections.
Angular
I have used Angular in conjunction with OpenApi Generator to build scalable features as part of our Angular upgrade process, from AngularJS. The migration process was started in 2020 and I've been working with it since 2021.
AWS
We use multiple AWS services, either directly through our container hosting and custom implementations of Laravel functionality or indirectly via the integrations provided out-of-the-box by Laravel. The services we use, include:
  • SQS
  • SES
  • S3
  • Elastic Container Service
  • Elastic Beanstalk (until 2019)

Personal Experience and Hobby Projects

2024 Home Automation
I have spent a lot of time this year in getting to grips with home automation using Home Assistant. I currently have a Zigbee network throughout my house and am in the process of replacing all lights with either homemade WLED strips or with Zigbee powered bulbs for wireless control of lighting, heating and home electronics. I also run a full home network with pihole DNS and Tailscale subrouter and exit node for remote access whilst i'm away from home. If you can run it on a raspberry pi, i'll give it a try.
2023 Findr Realtime Chat Application
After feeling constrained by the limitations of the request-response cycle, I decided to try to build an application that would allow users to chat in real time with one another. I decided to write the application in Sveltekit to experiment with different Javascript frameworks. For the realtime functionality, after trialing many options including socket.io, WebRTC and RethinkDB, I finally settled on using Socketi as a socket event server, as it integrates well with Laravel. I learned about the expense of hosting real time applications and practical considerations for scalability.
2021 Chip 8 Emulator
After learning the Rust programming language, I started to play with 2D game engines and wrote an emulator for the Chip 8 game console. Learning Rust taught me a different approach to programming and helped me understand limitations and implications of using interpreted languages over compiled languages. It helped me gain an understanding of different sources and types of bugs and how to mitigate them. https://bitbucket.org/david_bunce/chip-8-emulator/src/master/
2017 Florence House Care Home
In 2017 I spent weekends volulnteering at a local care home, providing support and care work to residents living with dementia. I learned a lot about compassion and dedication as well as how to communicate effectively in high-pressure and stressful situations.