~/mike.bundy.dev/experience main

Professional Experience

My linkedin is purposefully sparse. I get spammed with auto-generated emails from recruiters (like most people I suspect). I find the more limited my profile is the less spam I get. To that end, I’ve fleshed out some more details here.

The experience below is a less terse/more jaunty version of my actual CV, which I keep to a single page. My reasoning is that if you’re on this page you probably care a little bit more about what I did, learnt, and what I’m like.

Skills (aka buzzword bingo)

I’ve been fortunate to work on teams that largely tried to keep up with modern trends (e.g. using Grafana/InfluxDB).

I’ve grouped them here just in case you’re curious what I use. I largely see these as an implementation detail and often not all that important when it comes to solving a business need. What technology to use largely depends on what the team is familiar with, and how quickly it needs to get done (i.e. should we accrue tech debt for to reduce dev time, and fix it later if the product is proven to be a success).

OS: I daily drive Fedora Linux (personal) and Ubuntu (work) with oh-my-zsh. Languages: Java, Python, SQL, Go, Javascript, PHP/Hack, C++. Databases: PostgresQL, Parquet(Capacitor/Artus), MySQL, CockroachDB, MongoDB. Infrastructure: CI/CD (Teamcity, Jenkins), Kubernetes, Build systems (blaze, buck, plz), A/B testing.

This website is built using Jekyll and hosted on Firebase.

It’s worth noting that Facebook/Amazon/Google often don’t use publically available infra (e.g. k8s) but utilize interally built alternatives that offer the same functionality.

Google - New York, USA

Software Engineer (Play) — Oct ‘21 - present I currently work on the software that serves requests to the Play store.

The most interesting thing I’ve done so far is created a static analysis tool that automatically generates a field-mask for requests to the backend system. This reduces human error/overhead, and allows us to reduce bandwidth between the two services.

Optimized the service (Java) to reduce resource usage. To date, I’ve saved about 10% of compute resources for our service (about 30k CPU cores) by:

Amazon - New York, USA

Software Engineer (Ads) — Oct ‘20 - Aug ‘21 Worked on a data pipeline(+ its infrastructure) to generate advertising metrics.

Migrated code over to a MapReduce-esque system that used parquet files instead of overloading a RedShift cluster. This got backfills times down from 2-weeks to a matter of hours.

Took initiative to create a script to automate the creation of powerpoint presentations. It killed me to watch a Software Developer with a Maths PhD manually spend hours on this every week.

Similarly, I setup a Redshift cluster just for the data scientists so they wouldn’t be twiddling thier thumbs for 2 weeks when backfills were happening. It being Amazon, the cost of this extra cluster was “concerning” - failing to realise the amount of money saved in terms of lost salary/time was orders of magnitude less. They don’t call it frupidity for nothing.

Facebook / Meta - London, UK

Software Engineer — Mar ‘18 - Oct ‘20 Integrity Infrastructure

Developed software to clusters users into groups based on their actions. Significantly reduced DB overhead by stopping pointless writes, and batching them (which also had the advantage of reducing downstream actions).

Volunteered to be a “Treehugger” - a sitewide on-call rotation for making sure FB stays up, and the push-train keeps pushing.

I also volunteered to mentor a couple of students in Ghana to help them get careers in Big Tech. One is now at Apple.

Audience Network - Web Worked on the web SDK. Made some finishing touches to the “full width” ad format so it could be rolled out to all websites.

I implemented Rewarded Video on web. It was a big success on mobile phones, so I wanted to see how that same experience would perform in a browser (also on mobile). Turns out - not well.

The “Full Width” format took MRect Display Ads (300px x 250px) and made them Full Width on mobile devices. The SDK had to ensure that it didn’t break the publishers website, and if it did, rolled back to MRect.

Thought Machine - London, UK

Software Engineer — Jul ‘16 - Jan ‘18 Bit of everything. For the most part it was a lot of fun. Got exposure to Kubernetes and Golang. It was still an early stage start-up at that point so it mostly consisted of working on whatever needed doing.

In particular:

Harmonic Capital (defunct) - London, UK

Systems Developer — Jan ‘15 - Jun ‘16 Harmonic Capital was a Systematic Hedge Fund.

I mostly spent my time implementing trading models. This involved getting a paper with the relevant equations on and implenting it in the trading system, as well as back-testing and adding any relevant charts so that the various parameters could be monitored accurately.

I spent my spare time improving the system:

Bank of America Merrill Lynch - London, UK

Technology Analyst, Equities — Jul ‘13 - Jan ‘15 Originally worked on Life-cycle management for options expiries. Moved to a flow-risk system. Reduced start-up time drastically (by adding a cache).

Intern — Jun ‘12 - Aug ‘12 Built out push trains in their Quartz (Python) environment.

RMKI KFKI - Budapest, Hungary

Institute for Particle and Nuclear Physics IAESTE Intern — Jul ‘11 - Aug ‘11 I was tasked with implenting an alerting system on Android. The idea was that a security guard could be walking around, e.g. a Nuclear Reactor, and lose network connectivity. When they reconnected to the network they should be alerted that a sensor had been tripped. Both the server and client had to run on Android.

It was interesting because Android was still fairly new at the time, the documentation was spotty and using UDP was all but impossible. But I did have a working client/server at the end of it.

Seabase - Newquay, UK

Full Stack Developer — Summers Jun ‘07 - Sep ‘10 Probably the most fun I’ve ever had working due to the scope and learning opportunities. I was the sole developer and had free reign to do whatever.

Apart from building a bespoke e-commerce website, creating a Customer Management System that integrated with Sage, and creating an Email Marketing System complete with pixel tracking (it was ‘07, it was cool new tech at the time!) - I also mixed chemicals together to create explosions out the back.

My biggest take away from this job was probably that dev’s should never have prod access to a database for their own safety. I accidentally connected to prod (instead of dev) and nuked all the client data. It’s a mistake you only make once.

Education

MEng Computer Science and Electronic Engineering

Bristol University — Oct ‘09 - Jun ‘13 My dissertation was comparing AdaBoost and SVMs to detect Glaucoma in OCT scans. I mainly focused on Machine Learning / Statistical Analysis for my optional units.

In the UK it’s possible to combine your Masters with your Bachelors. It was a popular option when I went to university because the UK Gov would only give you a student loan for your first degree. That meant that if you did a Bacherlors seperately you would have to seek funding for a Masters seperately - which often meant taking out loans at 4-5 percentage points above the UK’s interest rate.