Current

Rust Project - October 2017 to present

Compiler Contributor

Since October 2017, I've been contributing regularly to Rust's compiler. As a member of the NLL working group, I've worked on various diagnostic and performance improvements as well as some work on soundness and completeness. I've also been involved in implementation of some RFCs - such as RFC 2008 and the edition changes for eRFC 2497. In addition to NLL and RFC contributions, I've made various smaller contributions including changes to the compiletest tool and compiler documentation deployment. In August 2018, I was granted merge privileges to the compiler for significant regular contributions - this responsibility includes being part of the rotation to be assigned incoming PRs for review.

#rust

#compilers

#working-group

#open-source

Codeplay Software - September 2017 to present

Integrations Engineer

I'm currently an Integrations Engineer at Codeplay. This involves the creation and configuration of tooling for automation and improvement of Codeplay's build infrastructure. It requires working closely with the development and infrastructure teams. I employ a combination of software engineering knowledge with operations knowledge to find solutions that increase developer productivity while minimizing downtime and maintenance requirements.

#foreman

#puppet

#python

#provisioning

#deployment

#devops

#software-engineering

University Degree - September 2015 to present

Software Engineering MSc

I’m a experienced fourth year Computer Science student at the University of Glasgow. I also took Mathematics and Statistics in my first year and continued with Mathematics in my second year. I was also awarded the “Best Computing Science Student Intending Single Honours” award for my performance in first year. As my degree's fourth year, I spent a year working at Codeplay Software.

Previous

University Team Project - October 2017 to March 2018

Autokrator

As part of my third year at the University of Glasgow, four other students and I were tasked with creating a event-sourced financial platform for Avaloq. Our completed application - Autokrator - consists of many components: a central event bus; a microservice framework, the superclient; a backend gateway and a UI. It was required that our application contain a central event bus, three microservices and a small web application that demonstrates the system working. Further, it was required that events had consistency; that multiple instances of each service could run at once and work together; that events would be redelivered if a service crashed during processing; and that each service's ephemeral storage could be rebuilt from the event bus if destroyed.

In particular, I managed and led development on the event bus and the superclient. The event bus, written in Rust, is the central server that manages and persists events while ensuring consistency, correlation and that microservice clients can scale horizontally. The superclient, also written in Rust, is a framework for building clients in Lua with persistence and a REST API.

This involved working with the team to design and implement the various solutions that allowed the system to achieve the desired properties; to streamline and improve our development processes; and to mentor other team members in fixing bugs and building features when working with unfamiliar technologies.

Internship at Codeplay Software - May 2017 to September 2017

Intern Build Engineer

During the summer of 2017, I interned as a Build Engineer in Codeplay's Integrations team. I worked on improvements to the tooling surrounding Codeplay's build infrastructure. Over the course of the four months, I implemented vast changes to the infrastructure that reduced re-provisioning costs and improved the flexibility and extensiblity of the provisioning tooling. I also made various improvements to other internal tools used by the development teams.

#foreman

#puppet

#python

#provisioning

#deployment

#devops

Development Environment Configuration - March 2017 to present

dotfiles

I manage all of my development environment configuration files in my dotfiles repository. Through use of yadm, I keep track of my configurations for multiple key tools in my day-to-day workflow, including Bash, zsh, Git, GPG, Vim and tmux.

Personal Website - March 2017 to present

davidtw.co

New, improved personal website featuring projects, writings and CV generation. The goal was to make something that was simple, fast and required little-to-no maintenance while still being flexible enough to be built upon in future.

The finished site is built using the Metalsmith static site generator and is built as part of a Gulp 4 pipeline then deployed on Netlify.

University Group Project - January 2017 to March 2017

Nucleus

During my second year Web App Development 2 module, I had to complete a group project to develop a web app using Django. My group identified the need for an application to streamline the automated marking of an earlier assignment in the course.

Our completed application made use of Django, Docker, Gulp and Django Channels and far exceeded the requirements of the project. In particular, I was involved in developing the testing process, including but not limited to the container that runs the tests; the task system that queues test runs; the container that deploys the actual application and a simple easy-to-use configuration for easy testing.

Consulting with West Dunbartonshire Leisure - December 2016 to February 2017

West Dunbartonshire Leisure 10K

I was asked to create a informational landing page for West Dunbartonshire Leisures 10K race series - a continuation of Polaroid Eyewear's series. This involved working closely with the team at WDL to refine the needs of the website and then to build a functional, easy-to-use and easy-to-update website. Performance was an important consideration, and time was spent to ensure the website was fast and would require little maintenance. It launched to great user feedback in February of 2017.

Side Project - July 2016 to November 2016

Relay.sc

During 2016, I developed a website for a video game fan site Relay. In this project, I worked with the staff at Relay to create a performant, easy-to-maintain site that could easily be built upon with more advanced functionality.

A major component of this project was a news search system - I integrated Algolia's Hosted Search into the website - allowing for seamless indexing from the CMS administration panel that resulted in a instant search system for the visitors, complete with multi-facet filtering. Relay's new website launched in November of 2016 to great feedback from the staff and their fans.

Side Project - March 2016 to May 2016

Relay Discord Bot

As part of my time working with the team at Relay, a video game fan-site, I developed a Discord chatbot for use within their servers. This bot featured many helpful commands that queried upcoming events within the group and from the greater community. It also fetched recent content from the group's new website as well as information regarding the game through their API.

Consulting with Polaroid Eyewear - January 2016 to May 2016

Polaroid 10K

In 2015/2016, I worked on creating an updated modern website for Polaroid Eyewear's 10K Race Series - this e-commerce website allowed runners to enter any of the four races in the Series - in March 2016 the website launched to great feedback and we saw an increase in runners and in charitable donations while saving money on payment processing costs.

#magento

#php

Internship with Polaroid Eyewear - April 2015 to July 2015

Sports Warehouse Performance Tracker and Inventory Manager

During the summer of 2015, I built and designed a fully-featured web-based Inventory Manager system and a suite of desktop applications for tracking the performance of the Warehouse.

Both projects required independence and coordination with other departments and employees. These well-designed applications released on schedule with brilliant feedback from users.

#c#

#wpf

#xaml

Consulting with Polaroid Eyewear - June 2014 to March 2015

MIDAS

I was contracted to complete an incomplete shop floor information system - MIDAS. An ASP.NET system (in C#) which is the backbone of Polaroid Eyewear's manufacturing. I worked within the structure of the IT team, this involved interacting with the final users to define new features and enhancements. MIDAS went live in September 2014 with excellent user feedback.

#c#

#asp.net

#devexpress

#html5

#css3

#javascript

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

Non-Photorealistic Rendering

During my summer placement at Glasgow Caledonian University, I implemented a program that uses the process of Non-Photorealistic Rendering to make an image look less realistic - in essence, creating a cartoon out of an image. This made use of the excellent OpenCV and involved two distinct stages - extracting the edges from the image and overlaying them on a copy of the original image that uses a reduced set of colours.

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

CAMSHIFT

During 2014, on a summer placement at Glasgow Caledonian University, I implemented a colour-based tracking algorithm from a research paper in C++ with OpenCV. The implementation was capable of full 360 tracking of multiple objects simultaneously even when the object leaves and re-enters the frame.

2factorauth/twofactorauth
November 2016

#twofactorauth

#robertsspaceindustries

pyeve/eve
June 2015

#python

#rest

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