Wed 04 November 2026
If you run Nextcloud behind Caddy and run into the issue that the hyperlink from your Nextcloud’s admin page to its AIO page is missing the port number, here is the fix. This happens because the documented Caddy configuration snippet for reverse proxying the AIO page is very slightly …
Continue reading »
Sat 12 September 2026
Back in 2021, I wrote a script to create the colorful banner images I use on LinkedIn, GitHub, and Thingiverse. Today this tool is available as geometric-banner on PyPI.

I chose the Viridis color scheme and Gaussian process noise to create an aesthetic similar to that of scientific data visualizations …
Continue reading »
Mon 05 May 2025
In a previous blog post, I described how I use nginx to serve my blog, and how uv makes it easier to setup Certbot to manage TLS certificates. I’ve since switched to Caddy, which manages certificates for me. I never really had any trouble with my nginx+uv+Certbot …
Continue reading »
Thu 24 April 2025
Tags:
Years ago I was experimenting with the Euler-Poisson integral in \(n\) dimensions when I derived an infinite product for \(\pi\) known as the Wallis product.
\[\pi = 2\prod\limits_{i=1}^{\infty}\frac{(2i)^2}{(2i-1)(2i+1)}\]
I was only expecting to calculate the areas of \(n\)-spheres, so …
Continue reading »
Sat 25 January 2025
The VPS hosting this blog is configured to use nginx with a certificate from Let’s Encrypt. I chose Certbot to automate certificate renewal. The official setup instructions from EFF for Certbot with nginx and pip are here, but the recommended pip/venv workflow seems inconvenient now that I’ve …
Continue reading »
Thu 23 January 2025
Please ignore.
Continue reading »
Sun 05 February 2023
Big announcement.
I just uploaded my first thing to my new Thingiverse account.
Also, this is my first blog post, so I guess I’m announcing my new blog as well.
Continue reading »