- Name
- Tom Churchman
- GitHub
- https://github.com/tomcur
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 and machine learning. 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 Data Science (unfinished)
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 has been ongoing for a while on a volunteer basis, but received initial funding by the European Space Agency in 2022.
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.
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.