Hi, I'm Andrew Ward
I’m a software developer, an open source contributor, and a graduate from the University of Bristol. I’m a core developer for Minetest, an open source voxel game engine.
I have a diverse range of interests, both technical and non-technical. Some examples include User Interfaces / User Experience, game dev, electronics, and physics.
Projects
General Software
-
Renewed Tab: Browser plugin
A customisable New Tab page, with widgets and beautiful backgrounds.
(2021)
-
ContentDB
Package repository website written for Minetest using Python/Flask.
(2018 - present)
-
Physics Simulations
A collection of HTML5 physics simulations, to teach A Level physics.
(2013 - 2021)
-
Minetest Mods
An Android app to install mods for Minetest.
(2016 - 2019)
-
BCVA App
An Android app for the British Cattle Veterinary Association, created whilst working at GWS Media.
(2017)
-
Rubix: OS Kernel
A simple ARM kernel, with support for pipes, and a filesystems.
(2017)
-
Employee Task MS
Employee Task Manager System
(2014)
-
Rufunge Language
A superset of Befunge, with more functionality.
(2016)
Games and Graphics
-
RVWP: Multiplayer Sandbox
Topdown sandbox game written in C++ using SFML.
(2015 - 2020)
-
Tin Mining (Ludum Dare 48)
Manage a Cornish tin mine, placing orders for the workers to mine and build.
Entry to the Ludum Dare game jam.
(2021)
-
Unstablium (Ludum Dare 49)
Transport precious cargo without blowing up. Danger is temporarily increased by collisions and shocks, and permanently increased by damage to your vehicle.
Entry to the Ludum Dare game jam.
(2021)
-
Dungeon Generator
An experiment into procedural generation. Includes two different dungeon generation algorithms.
(2020)
-
Software Raytracer
A raytracer simulating 60 million photons, to allow rainbow refraction and soft lighting.
(2018)
-
3D Model of Bristol Musuem
A 3D model of Bristol Museum, created as university coursework.
(2018)
Electronics
-
IoT Plant Monitor
An Internet-connected plant monitor. Designed to hide inside a plant pot. Uses an ESP-32.
(2022)
-
IoT Lock Box
An Internet-connected locking box, made to learn electronics. Uses an ESP-32.
(2022)
Talks and Conferences
-
CERN: Craft the Web
Collaborated with CERN to build a game to teach young people about the origins of the world wide web.
Guest speaker at CERN during the Codez la Science conference.
(2019)
-
Freenode Live 2018
I represented Minetest at both Freenode Live conferences, as an official exhibitor.
(2018)
-
Freenode Live 2017
I represented Minetest at both Freenode Live conferences, as an official exhibitor.
(2017)
Minetest
-
Minetest Modding Book
A book to teach Minetest modding and game creation.
(2014 - present)
-
Capture the Flag
A game and server created using the Minetest game engine.
(2013 - present)
-
Conquer RTS
A Real-Time strategy minigame made in Minetest.
(2020 - 2021)
-
NodeBoxEditor
My first C++ project - a 3D voxel model editor. No longer maintained.
(2012 - 2015)
Blog
I post in-depth tutorials and articles on my projects on my blog around once a month. See below for the most recent posts.
-
31 May 2023Conquer: a deep-dive into my Minetest mod jam entry
Conquer is an RTS minigame created for the 2020 mod jam. It received first place. This article will discuss some interesting challenges that it needed to solve.
-
04 May 2023Thoughts on native Android development
This article is a reflection on the projects I've worked on, the problems I have, and what I want to try in the future.
-
26 April 2023Bing (and DuckDuckGo) shadow banned my website
My domain was shadow banned by Bing and DuckDuckGo last year, and I don't know why. My root domain has since been unbanned, but my blog remains banned.
-
16 March 20233D-printed IoT lock box using ESP32
In this article, I will cover how I created my lock box - from the problems I had, the iterations I made, and the final design I settled on.
-
17 February 2023My favourite programming and game dev articles
Articles are a great way to expand your knowledge by learning from the experiences of others. Here is a collection of articles I recommend reading.
Experience
-
Software Engineer Jun 2022 - Present
Working on an Android app with a large userbase. The app uses legacy Java; we’re working on bringing new features to users and refactoring the app to use the latest best practices (Kotlin, Jetpack, etc).
Identified, proposed, and implemented the fix for a significant UX pain point, increasing discoverability of an essential feature from a success rate of 26% to 92%.
-
Capgemini Engineering
Software Engineer Sep 2019 - May 2022Worked on an analysis tool for the rail industry, using React and TypeScript.
Worked on infrastructure for running physics calculations in the cloud, using Python, Flask, Celery, OpenShift/Kubernetes, MongoDB, and Docker.
Worked on jet engine noise prediction software and deskop GUI applications, written in C# WPF and Java Swing.
Provided mentorship and training for junior developers and apprentices, one of which was a client.
Increased team productivity by pioneering an automated Jenkins CI pipeline to run unit and UI tests. This freed developers up for 15 minutes each invocation, resulting in team savings of more than an hour per day.
Commended for the ability to quickly ramp up on new projects, and efficiency in producing work.
Participated in agile / scrum development with daily stand-ups and planned sprints, and performed test driven development and peer code review.
-
Arm
Linux Kernel and Android Intern Jun - Aug 2018As part of a Research and Development team, I worked on experimental changes to the Linux kernel to improve memory security on Android. The aim of these changes was to protect Android devices from both local and remote threats, such as malicious applications or networked actors.
A typical task involved making changes in C and ARM Assembly to the Linux kernel, and then modifying user-space C++ tests to verify correctness.
-
GWS Media
Android and Backend Developer Mar - Dec 2017I worked part time as an Android, iOS, and Backend developer for 9 months alongside my studies, gaining valuable experience in client interaction and agile development. I worked on a number of different projects, both individually and as part of a team. I took pride in ensuring that my work was delivered to the highest standard, following platform design guidelines and best practices. One such app.
-
CERN
Collaborator Jul 2019 - Dec 2019Worked on Craft the Web, a game to teach young people about the origins of the world wide web.
Guest speaker at CERN during the Codez la Science conference (slides).
-
Minetest
Core Developer and Contributor Aug 2012 - PresentMinetest is an open-source voxel game engine, which I am a maintainer for. I regularly review pull requests, and have contributed over 200 patches.
Things I’ve directly contributed include:
- An in-menu installer and package manager, and a backend for it called ContentDB.
- The Minetest Modding Book.
- Lua assertation and integration testing framework, to improve quality assurance and prevent regressions.
- Assorted GUI features, including styling and a shared inventory GUI library.
I’ve also created a number of third-party projects, including an Android app to install mods, a 3d voxel modelling program, and lots of games and mods.
I attended as an official exhibitor at both Freenode Live conferences, in 2017 and 2018.
Participating in this project has given me a proficiency in Git, Linux, and collaboration.
Skills
Here is a selection of things I've had experience with.
Languages and Libraries
- C/C++17: STL, Sockets, SFML, SDL2.
- Java/Kotlin: Android SDK.
- Python: Flask, BeautifulSoup, Celery, SQLAlchemy.
- JavaScript/TypeScript: React, Webpack, Canvas, Express, Socket.io.
- HTML/CSS: Bootstrap, Bulma, Jekyll, Jinja2, Liquid, SASS.
Tools
- Git, Git Flow, and SemVer.
- Linux.
- CMake, Make, and Ninja.
- Clang/GCC, gcov, LLDB/GDB, and Valgrind.
- Docker, Jenkins, and OpenShift.
- GIMP, InkScape, Blender, and KDENLive.
Teamwork
- Has mentored junior developers and apprentices.
- Experienced with Git and Git Flow. Knows rebasing, cherry-picking, and more.
- Open Source contributor.
- Writes high quality technical documentation. See my book.
Want to see more?
Take a look at my blog, Mastodon, Github, or YouTube accounts.