- Name
- Tom Churchman
- GitHub
- https://github.com/tomcur
- tom@uint.one
About me
I’m Tom Churchman. I design systems and write code… then rewrite the code to make it simpler.
In my daily life I focus on computer science. For a brief moment in my past I was drawn to physics, but fondness of exploring computer systems won out. Some of the mathematical thinking has stuck, which I find to be a useful tool in system design.
I’ve enjoyed exploring many different kinds of programming: from high-level type theory and creating a basic programming language (for the fun of it; my language didn’t solve any real problems) to bordering on electronics and creating a basic processor from scratch (a simulated one—no foundries involved). Between these extremes I try to do useful work.
I strongly advocate moving complexity to the design process, not to the design. Taking your time to design a system leads to a simpler expression of the system, without loss of functionality. Refactoring is part of the design process, especially for large systems and systems that are still evolving.
As systems grow, the number of lines of code also tends to grow. This is not, in itself, a bad thing, but it certainly is not a positive thing either. It is a liability. An important consideration is to encapsulate complexity and keep it self-contained, such that the complexity a programmer needs to keep in their head at any one time is bounded.
Over the last few years I’ve usually had multiple projects going on at the same time. Keeping the various systems of these projects in my head at the same time is not possible. To handle this, I find technology that allows one to be expressive immensely helpful. Such expressiveness can take different forms for different aspects of a programmer’s day; it may entail being able to write intentions in code clearly (maybe with the help of a well-designed type system) or documenting the requirements for working on a project (perhaps with a declarative package manager).
Skills
- Creating idiomatic and performant system implementations
- Designing and implementing large software systems
- Making system expressions simpler
- Machine learning and data science with a mathematical background
Education
- 2015–2021, MSc Artificial Intelligence (summa cum laude)
Radboud University, The Netherlands - 2015–2021, MSc Computing Science (opted out of the thesis)
Radboud University, The Netherlands - 2012–2015, BSc Artificial Intelligence (cum laude)
Radboud University, The Netherlands
Experience
AstroPlant
2022–present, AstroPlant
At AstroPlant we are creating a plant growth and monitoring chamber for the European Space Agency. The project is intended for research and educational purposes. I am focused on developing the project’s backend systems as well as the control software running on the hardware inside the growth chamber. The project had been ongoing for a while on a volunteer basis, with funding started by the European Space Agency in 2022.
Contracting
2022–present
I’ve been available as a contractor to help organizations with their technical challenges. I’m especially interested in helping explore, integrate and contribute back to open source projects in Rust.
Software synthesizer for audio design
2021–present
Lock-free and wait-free data structures. Signal processing. Cross-platform development. UI design. Major system architecture from the ground up. The intention is to bring this to market as a consumer product, but currently it is at an experimental stage. I am developing this synthesizer in Rust for its modern language features combined with good performance characteristics.
Master’s Thesis - Autonomous Driving - Learning from Interventions
2020-2021, University of Tartu and Radboud University
Research into training machine vision models from operator interventions. This resulted in a novel negative learning approach that allows the usage of negative data samples alongside normal positive data samples, by lifting ideas from reinforcement learning into a supervised learning setting.
The thesis is available for reading at Radboud University’s repository.
Business Intelligence Analyst
2017–2018, Centraal Beheer, Achmea
Development of statistical models.
Business Intelligence Analyst
2017–2018, Zilveren Kruis, Achmea
At Zilveren Kruis I performed data mining to find patterns of fraudulent activity in insurance claim data. Using these patterns I implemented computational models to find and score claims for potential fraud. I also developed a monitoring tool performing checks on the team’s models to automatically report issues.
Student Assistant
2016–2017, Donders Institute for Brain, Cognition and Behaviour
As part of a PhD student’s research into learning capabilities of cognitive agents I was asked to implement novel a cognitive agent architecture in Python.
Teaching Assistent
2015–2016, Radboud University
At the department of Computer Science I was a teaching assistant for a course in Functional Programming.