Projects

Air Quality Radar (2017)

Air Quality Radar website

During the second year of the Computer Science Tripos, students undertake a group project with an industrial client. As part of my group project, I led a team working with Microsoft for three months to investigate how the Azure platform can be used to make open air quality data from the government interactive and accessible. We produced a frontend website, API, and backend as well as machine learning pipelines and models allowing us to forecast future air quality. We also wrote an article about our project which appeared on Microsoft’s academic blog.

Threes! RaspAI (2014)

Threes! RaspAI is an expectimax AI distributed across a small Raspberry Pi cluster which plays Threes!. Having implemented the game logic and an expectimax algorithm in C++, I integrated multithreading into the application using the C++11 threading library. Having parallelized the application on a single computer, I decided to extend the application by implementing a sockets-based distribution system to parallelize the AI across a cluster of Raspberry Pis.

Past Game End State

Here is the highest-scoring final game state:

Last move (#1035): right

Final score: 248826 (Δ=+3)

Next tile: 2
12
96
6
192
1536
192
3072
3
24
96
384
12
1
1
6
24
  1. Threes! AI — Game Representation
  2. Threes! AI — A Simple Distribution Method

hmercer.com (2011–present)

Owning my identity online is really important to me, and having my own place on the web is a fundamental part of this.

Before December 2015, I self-hosted my website, which I enjoyed as I had full control over every aspect of my site, from writing blog posts in my text editor to customising the caching of the site. However, in December 2015, I decided to switch to a DigitalOcean VPS, which allowed me to retain control over almost every part of the site, while benefitting from a faster server with higher bandwidth and lower latency.

hmercer.com is a static Jekyll site, hosted by Apache on a DigitalOcean VPS. Its SSL certificate is provided by Let’s Encrypt, an open certificate authority that provides SSL certificates for free using a totally automated certificate acquisition process. The codebase for hmercer.com is kept on a Gitlab instance on my server, and to update the site, I simply make the change in my local repository then commit and push the changes.

hmercer.com uses CSS3 and HTML5, and adheres to web standards. The HTML and CSS should validate.

Logical Candidate Methods Sudoku Solver (2013)

Note: The video below has been slowed down so the solving process can be observed.

While learning about various logical techniques that can be used to help people solve sudoku puzzles, I decided that I wanted to try and build a sudoku solver that used these more intelligent techniques rather than simple brute-force or back-tracking algorithms. I described the methods used in this sudoku solver in the post Solving Sudoku Puzzles Using Logical Candidate Methods.

Discontinued

Flickr Flow (2012–13)

I started writing Flickr Flow in December 2011 to scratch my own itch. At the time, there were a few apps on the iOS App Store for browsing the Explore section of Flickr, but they seemed crowded with extraneous UI elements and bloated with excessive features.

Version 1.0 of Flickr Flow was approved in April 2012. It was released for iPad and iPhone, and allowed users to browse through and favourite pictures sourced from the Interesting Photos collection on Flickr.

Since the first release, updates improved performance and UI design, and also added new features. The first update added background syncing and slideshow mode. Further updates added image caching and offline mode, a feedback system, support for retina screens, and a French localisation.

Version 2.0 of the app released an in-app purchase which expanded the app to become a fully featured photo browsing app by allowing users to create custom sources from specific users, tags, and groups. Signed-in users could also create sources containing their favourite pictures and pictures from their contacts.

Version 3.0 made many UX improvements and greatly improved performance by rewriting the backbone of the app, including sync, caching, and the sidebar view. It also added infinite scrolling to download more photos as the user scrolls towards the end of the image sidebar, providing a continuous stream of photos.

Flickr Flow was discontinued in October 2013 when I reached a particularly busy period in life.

Flickr Flow iPad screenshot

iTunes Description

Flickr Flow is a simple way to explore the vibrant and interesting photos available on Flickr. Browse photos in an uncluttered interface which highlights the beauty of the photos, and favourite the ones you love.

  • Start a slideshow by tapping the play button at the top right
  • Tap the star button to favourite a photo (requires Flickr account)
  • View sharp high-resolution images on the iPhone and iPad retina display
  • Pinch a photo to reveal its webpage and comments
  • Browse photos of your own choice: keep up to date with your contacts’ photos, play slideshows of your favourites, or view photos from a specific user, tag, or group (available via in-app purchase)

startpage.rwrt (2011)

I forked crshd’s startpage.rwrt, a landing page containing categorised bookmarks that is designed to be set as the homepage of a web browser. My fork redesigned the start page, updating the style and adding CSS animations. I also integrated favicons for each bookmark, and I added support for displaying a block with bookmarks with a certain tag (sourced from the user’s Pinboard account).

I used to use this as my browser homepage, but now I use a simpler start page with the current time and weather conditions where I live, a set of countdowns for important events, and a DuckDuckGo search box.

Bookmark, Share, Simple (2011)

Bookmark, Share, Simple

Bookmark, Share, Simple is a Wordpress plugin that was released in March 2011. After installation, it adds a bookmark drawn in HTML5 canvas to the top of every page on a Wordpress site. When this bookmark is hovered over, it lengthens, and clicking on it displays a share box, which shows 6 icons. Clicking one of these icons causes the sharing service for the appropriate site to appear in a popup.

This plugin was discontinued after I moved from a Wordpress site running on shared hosting to a Tumblr blog.