The Town Nerd

Previous Projects

From 2013 to 2025, I worked full-time for a fintech startup. It began as a 6-month contract, they kept giving me work, and after a year they asked me to become an employee. That job came first, and I kept looking after a few of my own clients in my spare time.

Large Recording Uploads to Amazon S3 (10 Dec 2024)

In 2024, one customer needed a way for global teams to send in finished recordings, organized by series and episode. Many of the team members don’t speak English as a first language, and each recording can run to several gigabytes. I built a one-page web app for it. A team fills in a form, drops in their files and clicks Upload, and the recordings land in the customer’s Amazon S3 bucket. The files go straight from the browser to S3, so the web server never handles a byte of them.

DMARC Help: Email Trust Monitoring (01 Dec 2017)

When one of my customers’ email campaigns failed, I built DMARC Help. It was a private tool that showed my customers how much of their email the big mailbox providers trusted, and who else was sending mail in their name. DMARC was a new technology, and I wanted to see what it could do. I built all of it, starting in 2017, and ran it until 2024. It was never open to the public.

Discover France: Guided Bicycle Tours (16 Jan 2017)

Discover France (archive) ran guided and self-guided bicycle tours, and multisport tours in France. I came in during a 2008 website upgrade and supported the business until it changed hands in 2017. During this time, it became authorized to run VIP Tour de France tours, able to let its riders onto the closed racecourse just before the pros arrived. I handled the technical side of its website and several sister sites.

Great American Coil: Coil Performance (14 Oct 2013)

Great American Coil makes heating and cooling coils for HVAC systems. Around 2010, I inherited its coil performance application, written in Visual Basic 5. It worked out the hot water (heating) and chilled water (cooling) coils an air-conditioning job needed. These coils were typically used in large office buildings, with separate A/C controls for each office. Great American Coil’s sales staff used it, its engineers used it to cross-check customer requests, and its customers used it too. For each coil type, it printed out all of the relevant inputs and calculations.

Distributor Search for a Clutch Maker (26 Aug 2012)

Xtreme Clutch, a division of Australian Clutch Services, needed a way for customers to find a distributor near them. Honeyweb, a local web design firm, built the website. I built the distributor search on xtremeclutch.com.au (archive).

What It Did

I imported 520 distributors, then built a search around them:

  • Regional sub-pages. Each region had its own page listing every distributor in it (e.g. Queensland, archived).
  • Search by postcode, suburb, state or country. A search run from a regional page stayed within that region. You could also search across all areas at once.
  • A Google Map. The map zoomed in or out as needed, so that every distributor in the results was on screen. A click would give the customer immediate access to the distributor’s phone number.
  • An HTML list of the same distributors. Clicking any distributor in the list selected it on the map.

The site ran on ExpressionEngine, so the search was a custom ExpressionEngine plugin.

The Box Tracker: Software for CrossFit Gyms (22 Apr 2011)

In 2010, I built the management website for CrossFit Full Strength, a gym in Phoenix, Arizona. I worked alongside the gym’s owner and coaches, around what they did every day: write the day’s workout, record everyone’s scores, fill classes, pay coaches and collect dues. I then rebuilt it as The Box Tracker (archive), a hosted product that many gyms could share. The first 2 gyms were onboarded in April 2011 and, at its peak, 15 CrossFit gyms ran on the platform.

Cleaning Up After a SQL Injection Attack (15 Oct 2010)

In October 2010, a customer’s website was being actively exploited. It was a custom-built PHP site, and 6 other developers had worked on its code over the previous 5 years. The attacker had found a handful of SQL injection points, and one Execution After Redirect flaw on an admin page: the page sent visitors who weren’t logged in to the login page, but kept running the code below the redirect, so anyone who ignored the redirect could use the page anyway.

MySQL Distance Calculations (17 Oct 2009)

One customer recently needed their website to know the distance between people. It did not have to include exact driving directions, so I based it off of zip code latitudes/longitudes. I got these indirectly from the US Census Bureau (archive) and used fuzzy trigonometry.

The first step was to find a way to put the zip code information into a database. The latest available (circa 2004) which was easily workable came from http://www.boutell.com/zipcodes/ (archive).

USB Serial Numbers in Windows (30 May 2009)

A project required me to map the serial numbers of USB flash drives, to the DOS drive letters associated with them, with a very high degree of certainty. This is not the serial number of the volume (or partition) but of the device itself.

This means that if I insert a PNY Attaché 512 MB memory stick, and Windows assigns it the drive letter F:\, then I need to know that F:\ is a USB flash drive and that the serial number of that device is 075916911BF9.

Streaming Disk Images Over the Network (07 Apr 2009)

In 2009, a customer needed a way to stream disk images over the network when imaging new machines. Since the machines were new, the images were mostly empty space, which made them good candidates for compression. CPU was a bigger bottleneck than network bandwidth, and he decided the existing compression options, including gzip, were too slow. He also wanted to use udpcast to image multiple machines at once.

Another developer and I worked on a proof of concept, passing code back and forth through the customer. The other developer wrote the first version, and I found several large speed gains.

http.sh: Scheduled Web Requests (15 Dec 2008)

In November 2008, a customer in England wanted to run a free online service that called web pages and scripts on a schedule. His vision was a cross between an uptime monitor and a cron schedule for web endpoints: you gave http.sh (archive) a page or script and a schedule, and it requested that page on time and reported how the request went. He wanted the scheduler written as a multithreaded Linux daemon in C. I wrote the daemon and delivered it in mid-December, then answered his setup and data questions through January 2009. I didn’t build the website.