About
About Me
I’m Riley, a third year undergraduate student studying mathematics and statistics at the University of British Columbia. In addition to my studies, I’m passionate about Unix, Vim, and software engineering. I also enjoy running, reading, and playing the piano. On the Big Five Personality Traits I am high in openness and conscientiousness, roughly average in extroversion and neuroticism, and low in agreeableness.
I have spent much of the last year doing research in mathematical biology. From April to December 2024, I worked with Dr. Eric Cytrynbaum to develop a mathematical model of root growth in A. Thaliana. An up-to-date copy of our manuscript can be found here and the code for the project can be found here. I also took MATH 462 (Projects in Mathematical Biology), a graduate-level mathematical modelling course at UBC. For the final project, my group and I explored models of the Notch signalling pathway. I wrote a brief summary of our work here.
I got my first exposure to Vim in 2023 after stumbling across an excellent blog post by Gilles Castel about using Vim to typeset mathematics. After setting up a similar system using Vim-bindings in Obsidian, I was hooked. I gradually started using Vim for coding and writing, which piqued my interest in terminal-based workflows as a whole. One thing led to the next, and in January 2025, I booted Linux for the first time on a refurbished Thinkpad T480. I strongly believe that software should be performant, reliable, and most importantly, free. I hope this mentality is reflected in my work.
My Technology
I am currently running archlinux on a Thinkpad T480 (i5-7200U processor, 32GB DDR4 memory) as my primary computer. Here’s some of the software I use regularly:
- Compositor: Hyprland
- Browser: Firefox with uBlock Origin
- Terminal: kitty
- Shell:
bash
- Terminal Multiplexer: tmux
- Text Editor: Vim
- Music Player: cmus
- PDF Viewer: zathura
- Image Viewer: imv
- Password Manager: pass
Site Design
The design of this site is inspired by gwern.net and maggieappleton.com, among others. In particular, I’ve tried my best to design this site as a constantly evolving repository of my thoughts, as opposed to a set of polished blog posts. This is the core idea of a Digital Garden. One key feature of digital gardens is metadata, which gives readers important information about the text they’re about to read. Each page on this site contains the following seven metadata tags:
- Created: The date on which the page was created.
- Modified: The most recent date on which the page was modified.
- Topics: A list of relevant keywords found on the page.
- Audience: A short summary of the intended audience or simply “Everyone”.
- Certainty: My confidence in the post (“unlikely”, “likely”, “certain”).
- Importance: The utility of the post (“low”, “medium”, “high”).
- Status: My evaluation of completeness (“in progress”, “in revisions”, “complete”). If a page changes often, it will be marked as “ongoing”.
Site Implementation
I’ve built a handful of personal websites over the last two years with varying amounts of success. Now, I think that a good personal website needs to:
- Showcase my personality and interests.
- Allow me write blog posts in Markdown.
- Be simple to update and deploy.
- Load extremely quickly.
- Be inexpensive (\(\$5\)/month or less).
- Be compatible with as many browsers and devices as possible.
- Provide a space for hosting small personal projects.
- Remain stable for as long as possible (preferably \(20+\) years).
- Use free and open source software.
This site is built with HTML, CSS, and a touch of vanilla Javascript. As a web server, I am using Flask, which I have found to be simple, minimalist, and powerful. To minimize deployment costs, this site is hosted on a single DigitalOcean droplet using nginx as a reverse proxy. In total, it costs me just \(\$58\)/year to keep everything running. All of the technologies I’ve used to build this site have been around for at least \(15\) years. The Lindy Effect says I can expect these technologies to survive for another \(15\) years. In today’s web development environment, I’d say that’s pretty good.
All of the pages for this site are written in Markdown, which I compile to HTML using Pandoc. The styling is done using a single CSS file, which works on the HTML generated by Pandoc without modifications. By using a custom Vim shortcut, I can compile and preview my blog posts while writing them. I know this functionality also exists in static site generators such jekyll and Obsidian plugins like quartz. However, I’ve found building this site to be more rewarding (and also easier!) than using these technologies.