archeryutils: an Ode to Personal Projects
A text counterpart to a presentation I gave at the RSE East of England and WHPC
launch event in March 2025.
A reflection on how hobby projects have helped me learn through a reflection on
the development of archeryutils
and its associated applications.
“Everything begins with an idea”
Archery is a sport in which you fire a projectile at a circular target in order to aquire points. By its nature it lends itself well to mathematical modelling and analysis.
One notable example is the handicap or skill rating - the idea that any collection of arrows shot at any target can have an accuracy rating applied. These models are not a new idea of mine, and such a system was proposed in 1978 by David Lane based on traditional ballistics. This talk will not focus on this, though I have written other articles for those interested in the mathematics and theory.
In 2013 David wrote an open letter to archery UK offering the provide the formulae and information to anyone willing to continue his work Being a nerdy undergraduate I got in touch and was sent his papers. My earliest implementations of the equations were done using spreadsheets. As I learnt Python, however, I coded them up as a series of janky scripts.
As my abilities grew I started using this code to do more complicated things. Getting tired of copying and pasting it every time I wanted to anything decided to package it as a re-useable module. And this is what my talk today is really about - the learning opportunities of the hobby project.
“These go to 11.”
The benefit of this project, to me, has come from providing a low-stakes^[At least early on.] sandbox in which to experiment with no deadlines allowing me to explore.
This provides an opportunity to learn things in detail by dialling everything up to 11. By tackling the more complicated features of languages or libraries you improve the base level you use everyday (looking at you mypy). You are also more likely to come across strange things, priming you for when they appear int he real world (looking at you, sphinx). And there is a chance to explore new ideas (this is how I learnt to migrate to ruff, now my tool of choice for formatting and linting, plus a dalliance with pydantic).
The development of archeryutils coincided with my move into research software engineering, and the chance to practice and explore the new skills I was learning here was great for my development.
Here are a few of the things I have learnt/practiced as part of doing this:
- packaging
- testing
- code coverage
- documentation and sphinx
- distribution and PyPI
- …
In preparation for this talk I did some git archeology on archeryutils
, and
was pleasantly surprised to see how far my software engineering has come.
Project managment and the world of FOSS
As this was the first open source code to implement these functions and base components for archery it has recieved interest from a few other sources.
These range from hobby developers tracking their own performance through commercial applications up to Archery GB.
Contribute to the projects you use - code or financially!
“Pull requests welcome”
“Oh! The places you’ll go!”
You might gain completely unexpected but useful skills.
Took me to learn about web apps, server management, websites, borking servers and revovery.
Also about project management and meeting harder deadlines. A good project is a delivered project.
Archery GB projects
A question of time
Not everyone has time to focus on an personal project.
Can be of any size, but an alternative can be contributing to other OS projects.
“You want it, you write it.”
Contributing to open source
I want to learn Rust, and learn best by doing.
Hence a decision to contribute to Fortitude
“We’re not in Kansas any more.”
The world of open source is a strange place. It doesn’t operate in the same way as work.
Sometimes people don’t want your ideas. People in OS can have a reputation for being rude. Whilst unpleasantness is never forgiveable, you gain an appreciation for how
A litmus test for too much
When I have no enthusiasm to work on personal projects it indicates I am overwhelmed and sick of coding/RSE.