David Wood

Software Engineer

Currently a Integrations Engineer at Codeplay Software; regular Rust compiler contributor; and a Software Engineering Undergraduate at the University of Glasgow.

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

Current

Rust Project - October 2017 to present

Compiler Contributor

Codeplay Software - September 2017 to present

Integrations Engineer

University Degree - September 2015 to present

Software Engineering MSc

Previous

University Team Project - October 2017 to March 2018

Autokrator

Internship at Codeplay Software - May 2017 to September 2017

Intern Build Engineer

Development Environment Configuration - March 2017 to present

dotfiles

Personal Website - March 2017 to present

davidtw.co

University Group Project - January 2017 to March 2017

Nucleus

Consulting with West Dunbartonshire Leisure - December 2016 to February 2017

West Dunbartonshire Leisure 10K

Side Project - July 2016 to November 2016

Relay.sc

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

MIDAS

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

CAMSHIFT

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

Non-Photorealistic Rendering

Open Source Contributions

rust-lang/rust October 2018

Help suggests non-existent package std::os::ext::process::CommandExt

rust-lang/rust October 2018

NLL lacks various special case handling of closures

rust-lang/rust October 2018

NLL: change compare-mode=nll to use borrowck=migrate

rust-lang/rust October 2018

NLL: Fix migrate mode issue by not buffering lints.

rust-lang/rust October 2018

The #[panic_handler] attribute can be applied to non-functions

rust-lang/rust October 2018

NLL says "borrowed content" instead of more precise "dereference of raw pointer"

rust-lang/rust October 2018

Better Diagnostic for Trait Object Capture

rust-lang/rust October 2018

[nll] better error message when returning refs to upvars

rust-lang/rust October 2018

NLL is missing struct field suggestion

rust-lang/rust October 2018

Remove unneccessary error from test, revealing NLL error.

rust-lang/rust October 2018

error message when trying to move from an Rc or Arc is ungreat

rust-lang/rust October 2018

suggest crate::... for "local" paths in 2018

rust-lang/rust October 2018

Add crate:: to trait suggestions in Rust 2018.

rust-lang/rust October 2018

NLL fails to suggest "try removing &mut here"

rust-lang-nursery/reference October 2018

Mention syntax ambiguity for eRFC 2947.

rust-lang/rust September 2018

[nll] borrows that must be valid for a free lifetime should explain why

rust-lang/rust September 2018

NLL: Deduplicate errors for incorrect move in loop

rust-lang/rust September 2018

NLL regresses diagnostic for impl-trait/static-return-lifetime-infered.rs

rust-lang/rust September 2018

if- and while-let-chains, take 2 - edition changes

rust-lang/rust September 2018

Add help message for missing IndexMut impl with NLL

rust-lang/rust August 2018

Added rustc_codegen_llvm to compiler documentation.

rust-lang/rust August 2018

Normalize source line and column numbers.

rust-lang/rust August 2018

Provide span for declaration of captured variables

rust-lang/rust August 2018

Move compile-fail tests to ui

rust-lang/rust August 2018

NLL says something "does not live long enough" when talking about a (thread-local) static

rust-lang/rust August 2018

region error messages involving impls are confusing

rust-lang/rust August 2018

Disable some nice region errors in NLL mode.

rust-lang/rust August 2018

NLL mentions lifetimes that are not included in printed span(s).

rust-lang/rust August 2018

NLL: Better Diagnostic When "Later" means "A Future Loop Iteration"

rust-lang/rust August 2018

Add test for unexpected region for local data ReStatic

rust-lang/rust August 2018

Add test for NLL: unexpected "free region does not outlive" error

chronotope/chrono July 2018

Enable all features on Rust Playground.

rust-lang/rust July 2018

[nll] improve the "fully elaborated type" case in region errors

rust-lang/rust July 2018

Added new lines to .gitignore.

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 July 2018

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

rust-lang/rust.vim July 2018

Support crate keyword.

mockersf/jenkins-api.rs June 2018

Added fields for TimeInQueueAction action.

mockersf/jenkins-api.rs June 2018

Add MultiJobBuild

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

Host compiler documentation: Include private items

rust-lang/rust April 2018

RFC 2008 non-exhaustive enums/structs: Finishing Touches

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.

Writings

Dotfiles

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...