GitHub Page About

Development beyond code


  • Jenkins Home Lab: Part 3 - Setting up Windows Agents

    Today, since we already have a working setup of Jenkins, lets expand it to include windows agents.

  • Jenkins Home Lab: Part 2 - Setting up Linux Agents (Ubuntu & Raspberry Pi systems)

    Today we’ll look at setting up linux agents. These instructions apply to Ubuntu and Raspberry Pi / Raspbian systems, but should work for any debian based system. With some very minor tweaks these instructions should work pretty similarly for most linux systems.

  • Jenkins Home Lab: Part 1 - Setting up the Master

    Are you looking for a project this holidays? Did you get a Raspberry Pi for Christmas? Why not setup a home lab for CI/CD with Jenkins? Over the next week or so I’m going to output a series of tutorials aimed at setting up a comprehensive home lab environment for Jenkins. With this home lab you can turn any old or cheap computers into an environment to automate tasks for your side projects, sharpen your CI/CD skills, and prototype new project pipelines.

  • 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