Software Development Portfolio
I’m Will Fitch. I’m a recent computer science graduate from Brunel University London, currently working as a software engineer at Canonical writing Juju Charms. I like minimalist websites, but I don’t like making them. Here are some things I do make:
I currently work at Canonical on the Data Platform team writing Juju Charms, an application controller that works across any cloud or container technology. They’re something like Kubernetes Operators, but they work on VMs. I like it a lot.
I currently work on the OpenSearch charm, which automates the deployment of an opensearch cluster on a VM cloud. I’ve never used NoSQL before, and I find the document-driven database paradigm really powerful and intuitive compared to SQL.
At Canonical, I work on the Pgbouncer charm. This is a connection pooler for PostgreSQL that’s been around for a while; this means it’s super reliable, but has some quirks, like only being single-threaded. It’s fairly challenging work for a new graduate, since there’s a hundred technologies that were totally new to me when I started, but it’s compelling work and I’m well-supported by an excellent team.
PgBouncer VM operator PgBouncer K8s operator
To keep myself sharp while looking for work I’m currently working through nand2tetris, a course in which students build a functioning computer from individual logic gates. It’s a good course and I’d highly recommend it.
Code for side projects will be made available once the computer itself is built.
Dipping my toe in open-source software for the first time, I chose to help maintain QuakeInjector, a package manager for Quake mods written in Java. The modding scene has changed a bit lately with the recent nightdive remaster, and I’m writing more Python these days, but the retro FPS community is incredibly supportive and welcoming.
I spent my final year at Brunel University London writing a neural network to infer greenhose gas emission data from satellite photography, along with a corresponding dissertation analysing its performance and proposing improvements to the design. I managed to reach roughly 90% accuracy with a ResNet152, with no context available to the network other than what was available in the image. Given context such as latitude, longitude, or a larger, low-resolution photograph accompanying the high-resolution photograph focusing on the given area, I believe this accuracy can be drastically improved.
Since getting my degree, I had planned to fix some flaws in the implementation and create an ensemble model to make better predictions, and create a web platform where people can make use of this project. However, life gets in the way.
Since starting work in an open office, I’ve noticed I’m less able to concentrate than I’d like to be as the day goes on. While I could just be tired, I’m also interested in the effect of stale air on cognitive function, and as such I decided to measure if there was a notable change in air quality over the course of a day or week, and how that change affected productivity if at all. I also didn’t want to pay £100 to satisfy some mild curiosity and had an Arduino lying around not doing anything, so I built the CO2 detector myself. Since moving near a major motorway and airport, I’m reviving this project to see how different the CO2 concentration is here.
After getting in touch with Achim Haug at AirGradient, I used his open-source PCBs to build an updated model - however, there’s been some issues with the recommended parts (the pins were soldered onto the wrong side), and I haven’t got around to fixing them yet. I’m also a little tentative to get back into hardware hacking, given the climate impacts.
A uni group assignment in which I worked with other students to develop a networked Android application. We chose to create an app that completely removes one human element from eating out, allowing you to order food to your table entirely on an app. During this project I worked on project management and full-stack development.
A university assignment in which I worked with other students to design a communication device that could only communicate within 100 metres. This assignment forced the team to consider possible contexts in which such a limitation could be useful, and design hardware and software accordingly; for example, using a bluetooth meshnet as the primary networking architecture, before choosing to modify the brief to mean within 100M of the intended usage environment, which would have a standard intranet setup. I chose to go beyond the remit of this assignment, building a physical & software prototype of the product to test our ideas, which greatly informed our design.
I like to collect things, and I like to try implementing new algorithms. I also like to record and improve previous coding test answers; if an employer is going to recycle the same questions, why can’t I recycle my answers? Unfortunately, while I’m looking for work this means I’ve had to keep this code to myself.
If you want to get in touch with me you can email me at firstname.lastname@example.org