Corrected Caddy config for accessing the Nextcloud AIO interface

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 »

Publishing my banner image generator

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.

A banner generated with geometric-banner

I chose the Viridis color scheme and Gaussian process noise to create an aesthetic similar to that of scientific data visualizations …

Continue reading »

I switched to Caddy

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 »

The Wallis product and the Euler-Poisson integral

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 »

I use uv to simplify Certbot automation

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 »

Test post

Please ignore.

Continue reading »

Announcing my new Thingiverse

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 »