David Wood

Software Engineer

Currently a Software Engineering Undergraduate at the University of Glasgow and a Integrations Engineer at Codeplay Software. With lots of experience specializing in DevOps, I thrive combining software engineering expertise with operations knowledge to build maintainable, elegant solutions to problems. I enjoy solving challenging problems, working on systems that are complex in interesting ways and learning new technologies and tools - particularly interested in working on compilers in future.

Want to know more? Have a look around and get in touch, or why not download my CV?


Codeplay Software - September 2017 to present

Integrations Engineer

University Degree - September 2015 to present

Software Engineering MSc


University Team Project - October 2017 to March 2018


Internship at Codeplay Software - May 2017 to September 2017

Intern Build Engineer

Development Environment Configuration - March 2017 to present


Personal Website - March 2017 to present


University Group Project - January 2017 to March 2017


Consulting with West Dunbartonshire Leisure - December 2016 to February 2017

West Dunbartonshire Leisure 10K

Side Project - July 2016 to November 2016


Side Project - March 2016 to May 2016

Relay Discord Bot

Consulting with Polaroid Eyewear - January 2016 to May 2016

Polaroid 10K

Internship with Polaroid Eyewear - April 2015 to July 2015

Sports Warehouse Performance Tracker and Inventory Manager

Consulting with Polaroid Eyewear - June 2014 to March 2015


Nuffield Placement at Glasgow Calidonian University - May 2014 to July 2014


Nuffield Placement at Glasgow Caledonian University - May 2014 to July 2014

Non-Photorealistic Rendering

Open Source Contributions

rust-lang/rust July 2018

NLL diagnostics replaced nice closure errors w/ indecipherable free region errors

rust-lang/rust July 2018

RFC 2008 non-exhaustive enums/structs: Rustdoc

rust-lang/rust July 2018

html5ever in the rustc-perf repository is memory-intensive

rust-lang/rust July 2018

Use of unimplemented!() causing ICE with NLL

rust-lang/rust.vim July 2018

Support crate keyword.

rust-lang/rust July 2018

NLL: bad error message when converting anonymous lifetime to 'static

mockersf/jenkins-api.rs June 2018

Add MultiJobBuild

mockersf/jenkins-api.rs June 2018

Added fields for TimeInQueueAction action.

mockersf/jenkins-api.rs June 2018

Expose MatrixRun, add built_to field to MatrixRun, add BuildFlowJob and BuildFlowRun.

rust-lang/rust May 2018

Optimize the way that loans are killed in borrowck dataflow

rust-lang/rust May 2018

Added rustdoc documentation to compiler docs.

rust-lang/rust May 2018

Remove extra calls to kill_loans_out_of_scope_at_location.

rust-lang/rust April 2018

RFC 2008 non-exhaustive enums/structs: Finishing Touches

rust-lang/rust April 2018

Host compiler documentation: Include private items

rust-lang/rust-central-station April 2018

Fix issues with rustc documentation unpacking.

rust-lang/rust-central-station April 2018

Host compiler documentation

rust-lang/rust March 2018

Host compiler documentation

rust-lang/rust March 2018

NLL should identify and respect the lifetime annotations that the user wrote

rust-lang/rust February 2018

Fix borrow checker unsoundness with unions

rust-lang/rust February 2018

Fixes NLL: error from URL crate

rust-lang/rust February 2018

MIR-borrowck: augmented assignment causes duplicate errors

rust-lang/rust January 2018

Fix off-by-one spans in MIR borrowck errors

rust-lang/rust January 2018

NLL: bad error message when converting anonymous lifetime to 'static

rust-lang/rust December 2017

MIR borrowck: no "move occurs because X is not Copy error"

rust-lang/rust December 2017

MIR borrowck: error message confuses locals and temporaries

rust-lang/rust December 2017

MIR-borrowck: immutable unique closure upvars can be mutated

rust-lang/rust November 2017

MIR-borrowck: emit "foo does not live long enough" instead of borrow errors

rust-lang/rust November 2017

RFC 2008: Future-proofing enums/structs with #[non_exhaustive] attribute

rodjek/vim-puppet July 2017

Allowing square brackets within string interpolation.

RobertSmith/Orchestrate.Net April 2017

POST Functionality

2factorauth/twofactorauth November 2016

Added Roberts Space Industries.

pyeve/eve June 2015

Added option to use a different authorization database.



Written on 17th December 2017, with 4475 words (approx reading time of 15 min) by David Wood.

There's one project that I've been working on for well over a year alongside everything else - my dotfiles. Dotfiles are repositories where you keep track of your configuration - .bashrc, .zshrc, .vimrc, that sort of thing. In this writing, I'll go over how I manage my dotfiles and some of the key configurations that I find useful in bash, zsh,...

ArchLinux on the Windows Subsystem for Linux

Written on 14th December 2017, with 1537 words (approx reading time of 6 min) by David Wood.

I've been using Bash for Windows as my primary development environment (with Vim and tmux) for around a year or so now. One of my major issues with it has been being stuck on Ubuntu 16.04 - in order to get more recent versions of packages I've had to build them myself or wait. It's also stopped me from experimenting with some interesting distributions such as

Building a portfolio with Gulp and Metalsmith

Written on 27th August 2017, with 1605 words (approx reading time of 6 min) by David Wood.

Welcome to my new website! It long overdue, but I've finally gotten around to rebuilding my portfolio and personal website. This writing should be an introduction to how I've approached building my site and the technologies I've used - it won't be an exhaustive guide by any means, but if you've been considering using Metalsmith and stumbled upon this, it might clear up some...