Here is a link to the lecture notes , last updated on Feb 16, 2026. Here is some supplementary material: Material on packing measure and dimension Supplementary on material on multifractal analysis Exercise sheets Exercise 5 typo: the definition of semi-algebra was missing the assumption that it is a finite disjoint union (thanks Mikko for noticing this!) Exercise 1 and Solutions Exercise 2 and…
Temporarily moving elements out of collections A recurring pattern when working with collections is the following. Suppose I have a collection, like a Vec<T> , and suppose I would like to take an element out and replace it with a new one. Fortunately for us, holding a mutable reference is almost the same as having ownership, so we can for example use replace : fn replace_at_index < T > ( vec : &…
Rust analyzer Rust analyzer is a language server which provides editor support for the Rust programming language . Neovim has built-in language server protocol support. Cargo supports feature flags, which enable conditional configuration. However, any blocks which are not compiled for a given feature do not benefit from rust-analyzer language server support. While it is possible to enable features…
Introduction I recently published a Rust library called nucleo-picker which enables command-line applications to incorporate an interface for making a selection from a number of provided options. The selection is done through an interactive query, with a search algorithm used to filter and rank the given possibilities. A popular choice, and the one internal to nucleo-picker 1 Not my…
Context It was recently pointed out to me that part of the initial proposal concerning the construction of a new mathematics building at the University of St Andrews includes the creation of an open hot-desk workspace for postgraduate research students. While functionally and bureaucratically appealing, I believe that this form of workspace organization is fundamentally opposed to the requirements…
The Oath combat system Oath is a great board game, which is in some sense a game about history , and in others a game about empires . If you’re not already familiar with the game, I’d highly recommend that you give it a try. In this article, I will discuss some of the odds in the oath combat system. I will be relatively light on mathematical details: for a full derivation of the formulas, you can…
An overview of static webpage development What is a static webpage? Modern webpages are (primarily) composed of three types of files: HTML, CSS, and JavaScript. Basically, HTML specifies the content , CSS defines the style , and JavaScript allows dynamic behaviour . Webpages also consist of additional resources, such as images or documents. When you visit a webpage, your web browser requests the…
Objectives Fish shell is a user-friendly command line shell and scripting langauge. However, the project is relatively new, so it can be somewhat challenging to find concise information on how to use the scripting language. In this article, we will develop a basic session management tool for (Neo)Vim. The intention of this tool is to be a wrapper around Tim Pope’s obsession.vim plugin, with the…
The pyenv command line utility is convenient tool for managing python versions. Installation It’s best to follow the above link for general installation instructions. Otherwise, I will assume you are using macOS with Fish Shell. First install pyenv and pyenv-virtualenv with brew: brew install pyenv pyenv-virtualenv You also want to add some lines to your config.fish : set - Ux PYENV_ROOT " $ HOME…
In this article, I assume that your repository is hosted on GitHub , and the site is hosted on Cloudflare pages . I’m sure other providers will work, with similar instructions. Creating the development branch First, create a new branch development (or any name you would like): git pull git branch development Now to add draft changes, first git switch development then perform the changes you want…