Hello! đź‘‹

I’m Tobias, and this is my personal website.

I’m a Caktus Group co-founder and Django Ops Team member.

I consult on networking, AWS, Kubernetes, Ansible, and Python.

I write here and on the Caktus Blog.

How to Schedule Tasks with Celery and Django

I wrote a talk for DjangoCon US 2023 titled How to Schedule Tasks with Celery and Django. I was out with a sore throat and unable to give the talk myself, so I am forever grateful to my dear colleagues Colin Copeland, Kel Hanna, Keanya Phelps, and Ahmed Fituri for teaming up to deliver the talk in my absence. Please check back for the recording from the talk once it’s available....

October 18, 2023

How to Automate Google Sheets to ODK Central

ODK is a popular tool for offline data collection with a thriving user community. Like a number of other offline data collection tools, it uses the XLSForm standard for authoring forms. While convenient to author and exchange, authoring the forms in Excel means each iteration of the form must be uploaded to the ODK Central server that distributes forms to mobile data collection applications, such as ODK Collect. In part since ODK Central consists of a Node backend and Vue frontend, it includes a robust API that with all functions supported by the server....

February 7, 2023

How to Install Python on a Mac

tl;dr: Download an installer from https://www.python.org/downloads/macos/ (or read on for a link to each major version) There are many ways to install Python on a Mac. In my opinion, most of them are unnecessarily complicated and error prone. To list a few complaints: Homebrew might not support all the versions of Python you need to install for local development. There have also been issues with having multiple Python versions installed side-by-side....

October 20, 2022

MAAS Installation and Initial Configuration

Canonical’s MAAS production is an incredible piece of software. It provides the DHCP and PXE booting capabilities for physical servers to automatically handle some normally time-intensive, manual tasks such as: Taking an inventory of the RAM, HDDs, CPUs, etc. in a physical server Running some basic hardware and connectivity tests on the servers Updating and configuring the base management controller (BMC) Configuring an IPMI user to control power for the server remotely Configuring the physical server’s filesystem layout, network configuration, etc....

August 23, 2022

Dell S4820T Default VLAN

I found the FTOS concept of a “default VLAN” confusing and inconsistent. Begin with the first sentence under the “Default VLAN” heading on page 918 in the user manual: When you configure interfaces for Layer 2 mode, they are automatically placed in the Default VLAN as untagged interfaces. This sounds promising. It looks like all interfaces will belong to this VLAN by default, but could be removed if needed. This is incorrect....

August 22, 2022

How To Upgrade pfSense

pfSense has a good Upgrade Guide with a varity of options for how to upgrade the popular firewall software. Here’s my favorite method, refined over a few years and multiple re-reads of the documentation. Take a backup, both via Auto Config Backup, if configured, and locally (Diagnostics -> Backup and Restore). Make sure you do this from both routers, if using High Availability (HA). Reboot the router(s). As mentioned in the documentation, this helps make sure your router can still reboot, before you start changing things....

August 6, 2022

Dell S4820T Breakout Cable

The support site for the Dell S4820T claims the switch supports QSFP to 4x SFP+ breakout cables (the supported ones at least), but I had trouble tracking down how to enable this for a given port (by default, only one physical interface appears in the OS for the 40G ports). The answer is on page 464 of the FTOS Configuration Guide for the S4820T (FTOS 8.3.19.0) System. 40G QSFP+ to (4) SFP+ breakout cable Dell sells supported cables, but it appears cheaper “non-qualfied” cables work as well (YMMV)....

August 3, 2022

Dell S4820T Initial Setup

I picked up a used Dell S4820T 10GBase-T switch for a work project recently. Here are the steps I took to wipe, upgrade, and perform the initial configuration. Serial Console Before doing anything with the switch, it’s worth investing in an RJ45 to USB (or USB-C) serial cable. They can be found for $10-15 in the usual places. In my case, I could not login to the switch over the network when I received it, so this was the only way to perform the initial configuration....

August 1, 2022

Caching pre-commit with GitHub Actions

When setting up a GitHub Actions workflow for the repo that deploys this site, I noticed the pre-commit action for GitHub Actions is deprecated, and also doesn’t cache the installation of pre-commit itself. As a workaround, you can easily use the package dependency caching in actions/setup-python to cache the pre-commit installation and a custom actions/cache to cache the pre-commit cache itself (~/.cache/pre-commit/). First, update or create requirements.txt with the current version of pre-commit:...

July 30, 2022