Name
Tom Churchman
GitHub
https://github.com/tomcur
Email

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

  • 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 on running 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.

An audio synthesizer in Rust

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.

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 implementated 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 Unviersity

At the department of Computer Science I was a teaching assistant for a course in Functional Programming.