This page lists some of the research projects that I've supervised or that are ongoing. If you're interested in taking any of these on, then read the project description and also check through the related reading to make sure it's something you're interested in. The minimum proficiency level is just a guide; if you are already familiar with the topic, just get in touch! I often find a co-supervisor (a postdoctoral researcher or a PhD student) to help with day-to-day supervision.
Feel free to propose new ideas as well; however, please read through my current projects to see if it fits into whatever else I'm thinking about. This is especially true for projects involving CS theory: while I do enjoy a good lambda as much as the next computer scientist, I do have a strong preference towards the practical application of theory.
You should be self motivated and ready to do independent research and work if you'd like to work with me. Our meetings will usually begin with me explaining a topic, but by the end of a few months you should be arriving to our chats with your own ideas and directions.
This will be of interest to those wanting to work on LLMs and literature scanning, as a practical and very impactful application.
Research work in remote sensing involves handling a large amount of satellite data, so these will be of interest to computer scientists wanting to explore multi-modal image analysis at scale.
Identifying and creating global-scale datasets for various aspects of natural and human activity is needed here, especially if it can be baselined to prehistoric (i.e. pre-human activity) timescales.
The efforts here center around constructing system interfaces for hermetic large-scale data processing, with careful support for versioning and spotting sources of non-determinism that lead to non-reproducibility.
Computer science is combined with econometric and counterfactual approaches here, and the algorithms involve careful and precise specification of statistical models.
A combination of challenges here involving both low-level OS hacking as well as defining sensible and usable semantics for emerging techniques such as DIFC.
Latency rules supreme in this space, so any computer science needs to focus on rapid response, incremental models of computation that can interface with physical topologies.
If you're interested in principled approaches to programming, including everything from a mature language to package management and open source development, then OCaml is for you.
Developing unikernels means turning every part of the software stack into a library rather than a wrapper, and so an interest in software architectures and functional programming comes in useful here.
An interest in self-hosting data and in developing local-first processing approaches is essential.
One can never get tired of rebuilding a fresh network protocol in OCaml for fun, and there is something to be learnt every time we do this!