James McNee

James McNee

Principal Software Engineer in Manchester, England (UK)

About Me

I am currently employed as a principal software engineer at Auto Trader, the UK's largest platform for vehicle listings, working as part of the infrastructure team. Primarily building the infrastructure that enables our developers to create software quickly and easily, without them having to re-invent the wheel.

You can see the software, hardware and other tech I use over on my 'uses' page.

Projects

BOTW: Recipes

PersevereJS

Writing tests for interactions with asynchronous systems (e.g. Kafka, RabbitMQ) is hard, of course at some level you can and should just mock your interaction, but for a more integration level test, it's important to use the 'real' system.

The main thing that makes testing these systems hard, is the unpredictability of when they will respond, and therefore when you can assert your condition.

Inspired by a Java library called Awaitility, I wanted to bring some of the concepts and syntax it introduces over to NodeJS.

Now, testing asynchronous systems is as easy as just persevering...

BOTW: Recipes

Breath of the Wild: Recipes

My most successful and popular side-project so far has been an app that I created to solve a problem that I found while playing a new video game. The Legend of Zelda: Breath of the Wild is another incarnation in a long running game series from Nintendo, within the game there is a rich cooking system in which players can combine ingredients to create dishes which will give them buffs and such.

The issue that I saw is that there is no in game recipe book or notepad that one can jot down recipes they discover; this means that it is easy to forget which combination of ingredients does what. I therefore set out creating an Android application that with the help of the community would grow to become a lexicon for in game recipes.

The application has received over 83,000 installs and holds an active user base of ~20,000.

Migration Buddy

Migration Buddy: CLI

Application to aid in the migration of endpoints from one service / url to another. This utility will perform various comparisons to ensure parity between the two.

Features include (but not limited to):
  • Provide a collection of multiple endpoints at once
  • URL Templating / Substitution on both an endpoint and global level
  • Reporting on JSON diff between response bodies
  • Reporting on response time difference

You can check out the source code and/or download the application using the links below.

Urban Dictionary: CLI

Urban Dictionary: CLI

As a bit of fun and to explore creating a CLI tool using Spring Shell, I created this urban CLI application. It takes a word or phrase and uses the urban dictionary API to retrieve a definition.

This project was useful as it has allowed me to begin to think about how having a Spring Shell based application could prove very useful; one use that I can think of for this may be adding an admin interface to a spring web app.

You can check out the source code, or download the application using the links below.

Header Intercept

Header Intercept

Adding / altering the headers on a request is a very useful feature for front-end development. Allowing the developer to easily add authentication or Content-Type headers. This addon aims to make it simple for these headers to be toggled off/on and managed through a UI.

The source code for this is available on GitHub which you can access with the link below!

Toolbox

Toolbox: CLI

Java based shell app that contains many useful tools for use when developing applications. Features such as base64 encoding, HTTP timing and JSON formatting.

The source code for this is available on GitLab which you can access with the link below!