Ben Thomas
Software Engineer

Software Engineer
Former PM, loved the technical aspect so much I decided to become a Software Engineer. I'm currently working on a C++ multithreading library and a IoT management web platform.
Our team of 5 worked together to create our social media site PONGX. It featured competitive matchmaking, leaderboards, friend / block requests, chat rooms, local AI and tournaments. I was responsible for the Django backend, where I created key systems and API’s. Our development was containerised in Docker and we had automated builds, unit tests, and mandatory code reviews in our CI/CD pipeline.
WebSocket-based multiplayer system with smooth gameplay and minimal latency
Comprehensive user authentication, profiles, friend / block system, and 2FA
Real-time chat with private messages and chat rooms
Users MMR (matchmaking ranking) updates after each match and is then used to pair similarly skilled players
A low-level C++ implementation of an HTTP/1.1 server that handles concurrent connections and processes both static and dynamic web content, developed as an academic project to demonstrate network programming fundamentals. The project showcases low-level socket programming and thread management skills through features like request multiplexing, CGI script execution, and configurable routing.
HTTP/1.1 compatible server using event-driven architechture to handle many concurrent client connections
Supports script executions for dynamic content generation
Supports multiple server configurations running simultaneously on different ports
Comprehensive HURL API tests integrated into the CI/CD pipeline to prevent any critical bugs
Together with 42Chips, École 42's embedded engineering club, I took part in a series of challenges spanning two weeks, called 'The Embedded Piscine'. We relied on the ATmega328P microcontroller datasheet and the pinout diagram for our devkit, and were only permitted to change 8-bit register values manually instead of relying on high-level functions.
Challenges required the use of CTC timers, Pulse-Width Modulation (PWM) timers, and overflow timers to interact with board components.
The board was connected to a AHT20 temperature and humidity sensor. We used the I2C protocol to send instructions to the sensor and receive data from the device. We could read the temperature and humidity to 0.01 and 0.03 units of precision from the 3mm chip.
Hardware interrupts were used to asynchronously call functions whenever users physically interacted with the board.
A python web scraper that crawls through Seloger and BienIci for properties listed for sale or rent, and stores the data in a MySQL database. I then clean, analyse, and model the data to find the listings with the highest predicted rental yeild or investment return (ROI).
Training a quick and simple random forest model, I was able to predict the sale price of listings at 73% accuracy.
Using Pandas, Numpy, and Seaborn I'm able to clean duplicates, identify any problems with the scraper, fix incorrect data types or invalid values, produce summary statistics, visualise measurements and relationships between variables, and find the properties with the highest expected return on investment.
The codebase is organised into distinct modules such as BaseScraper, BienIciScraper, and SelogerScraper. Promoting maintainability and scalability.