GitHub Page About


A blog on various development topics


  • Texture Upscaling Pipeline

    At the beginning of the year I wrote about my initial experiments with image super resolution. This week I focused on some of the improvements I discussed and implemented a pipeline.

    I’ve written an image processing framework which I’m releasing under the MIT license. The goal is to allow rapid iteration of image processing until good results are achieved in the majority of cases reducing or eliminating the need for any manual editing of images.

    Denoised before ESRGAN and then downsampled

  • Improving Coding Standards and Quality

    Coding Standards are often thought of as style guides, however coding standards should be more than merely a style guide. Beyond just style, I believe standards should encompass everything that is used to improve code quality and reliability. This includes how code is reviewed and what automated checks should be in place (before even discussing your testing strategy).

    What goes into building a more complete set of coding standards? How can teams build a useful style guide? How can a good guide be used to improve team dynamics, rather than a tool to drown code reviews? How can tools automatically analyse code to help find bugs rather than just checking style infractions?

  • Cheap Optimization with Memoization in Python

    Memoization is a technique to cache the result of a function or program for a given input. It’s an incredibly simple optimization to make, and in the right circumstance significant speedups can be achieved.

  • Back to the Origin - A look at object bounds and floating point precision

    While working on RainbowRedux I’ve discovered the content is authored in some interesting ways. Today I’m going to talk about large distances, floating point numbers and the errors they can cause. I’ll show how I’m trying to reduce these distances and make the geometry more manageable.

    Level is far away from the origin

  • Evaluating Project Dependencies

    With dependency management tools like NPM, PIP and other similar tools it’s easy to just add another library dependency to a project without much thought. However, dependencies do add weight and cost to a project. The costs could be time, money, and potential sources of bugs. The libraries also have different levels of support. So how do you weigh up using a new library or extending an existing library? When is it appropriate to roll your own?

  • Rainbow Six Revival Project

    Rainbow Six and it’s sequel Rogue Spear are early defining games in the tactical shooter genre and the legacy remains today in Rainbow Six: Siege.

    I’ve been working on extracting data out of Rainbow Six with the goal of bringing it into a new engine and recreating the game.

    Preview of the first mission in Unreal Engine 4 First attempt in Unreal

  • Testing Texture "Super Resolution" Techniques

    After seeing Doom Neural Upscale 2X by hidfan, I became interested in testing out “super resolution” techniques on the images found in Rainbow Six and Rogue Spear.

    Super Resolution is the process of taking a smaller image and generating extra detail to output a larger resolution image without just blurring the smaller image. Although there are many varied techniques to achieve the results, in this article I will be using an open source trained network, ESRGAN (Enhanced SRGAN), and an image upscaling service called