I'm currently a PhD candidate at TU Delft in the Computational Privacy group, in the area of cybersecurity. My research is on using multi-party computation to achieve privacy in the federated learning setting. Check my profile on Google Scholar, ORCID, or TU Delft for an up-to-date list of publications.


I do a bunch of programming in my spare time. I prefer programming in Kotlin, but I do lots of stuff in JavaScript as well because web tools are just way more accessible; nobody is going to download your untrusted distribution of Minesweeper if there's already a perfectly good browser version. I sometimes use Python for some quick and dirty data processing.

Most of my web-related projects can be found on my self-hosted Gitea instance. Other projects are usually hosted over at GitHub. My most popular project is probably the Randomness plugin for JetBrains IDEs.


If you have a question or whatever about a project of mine, feel free to open an issue on the relevant repository.

You can also email me at florine at this very domain. My PGP key is hosted in the web key directory on this domain, but your email client will probably find it for you automatically. If it doesn't, use GPG's --locate-key function or grab the key directly.

PGP keys

I'm currently on my third and (hopefully) final PGP key. I started with 0xB1B567AF58D6EE0F in 2017 and I had intended to create a new master key every five years, but then a friend told me that it's a much better idea to have a non-expiring master key and rotating sub-keys. So in 2021 I created 0xBAEE7B87CAC0ECDD according to this excellent guide. However, later that year I found out that I had lost the password to the USB stick containing the master key and the revocation certificate, so I moved on to create my current PGP key, 0xCB7A189A7860758B. While you'll have to re-import my sub-keys again every year, I promise I'll do my best to never need a new master key!