Hi!

I'm Tom Smeding. I love programming, playing the piano, thinking about languages (both natural and programming), and occasionally mathematics.
I'm a postdoctoral researcher in computer science at the University of Edinburgh.

You can reach me via email [first name at firstnamelastname dot com], as well as on IRC, Telegram, LinkedIn or Facebook. You can find me on Google Scholar and ORCiD.

I have code on my own server and on Github.

I've also written some notes at some point.

About me

In my postdoc at the University of Edinburgh, I am looking at compilation and optimisation techniques for array programs with static and dynamic sparsity. Before that, during my PhD at Utrecht University in The Netherlands (supervised by Gabriele Keller and Matthijs Vákár), I worked on automatic differentiation as seen through the lens of functional programming. Before that, I completed my master's degree at Utrecht University in 2021 and my bachelor's degree at Leiden University in 2018. I was born and grew up in The Netherlands.

In general I am enthusiastic about lots of things in computer science; I enjoy functional programming and thinking about programming techniques that make FP work well, but I also have some experience in more low-level programming (in C and C++), some of it in competitive programming. I like thinking about how to optimise code to make it run faster, and also about devising compiler optimisations to make other people's code run faster. Furthermore, I like being able to do all of those things while enabling the compiler to prevent me from making mistakes as much as possible; typically, I do this by using the type system of the programming language I'm working in.

I think that in software development and science, and indeed in the world more generally, there is tremendous value in understanding. Having a good understanding of what you are doing, as well as the layer of abstraction right below what you are doing (e.g. the compiler you use, or the research method you are applying, or simply the perspective and background of the person you're speaking with), is essential for producing quality and dependable results. It's also just more fun than poking something with a long stick, and it's an investment: the more things you have a good mental model of, the easier and quicker it is to achieve insight in the next thing.

I like esolangs, send me your favourite ones :)

Academic publications

(Info missing, server misconfigured, sorry)