RSSAmplifier

Blog

Douglas B. Rumbaugh

The personal blog of Douglas B. Rumbaugh

douglasrumbaugh.comRSS feed ↗22 posts

Latest posts

Completing the Square

Completing the Square January 11, 2026 ~11 min It's been a very long time since I've had a chance to even think about posting something to this blog. In the interest of getting something out there, I want to share some notes that I wrote up for a precalculus class that I taught last semester on completing the square. This is a fairly common approach for solving quadratic equations and is discussed…

Using eqn for Website Equation Formatting

Using eqn for Website Equation Formatting January 14, 2025 ~17 min Last year, I began the process of writing a static site generator to replace Hugo for my personal website. One major goal of this process was to remove all Javascript [1] . This meant that I could not continue to use MathJax for rendering mathematics, and instead had to devise a way of formatting equations statically. I had the…

Linked Lists Revisited

Linked Lists Revisited December 13, 2023 ~7 min In a previous post I discussed linked lists versus arrays, and ran a number of simple benchmarks with both structures to demonstrate that the common advice of "use linked lists for insertion heavy workloads" doesn't always pan out in practice. But it got me thinking about possible ways to account for some of the root causes of the poor list…

Asynchronous Task Dependency Management with Promises and Futures

Asynchronous Task Dependency Management with Promises and Futures November 6, 2023 ~10 min I was recently working on a project which involved performing a number of tasks asynchronously, with the constraint that the tasks could be performed in any order, but they must "commit" in a specific order based on a dependency chain. For example, the program might kick off a series of tasks with the…

Processing Big Data on the Linux Shell

Processing Big Data on the Linux Shell October 18, 2023 ~11 min Recently, I needed to generate and process multi-billion record synthetic datasets for some data structure benchmarking. Rather than write a bunch of custom code to do this processing, I decided to try using shell scripts and standard system utilities. As it turns out, standard Unix utilities are surprisingly useful for…

eqn: Formatting Equations in groff

eqn: Formatting Equations in groff August 8, 2023 ~26 min I have written in the past about groff, a modern implementation of troff/nroff, an old-school, lightweight LaTeX alternative. The underlying typesetting system used is incredibly powerful, but is also ugly and difficult to work with. Because of this, most groff documents are written using a combination of macro packages and pre-processing…

Using a Printer from the Terminal

Using a Printer from the Terminal March 10, 2023 ~13 min Using the command line to interact with a printer is surprisingly straightforward. You configure your printer by IP address, and then use it. Simplicity itself. Surprisingly, I'm even finding it more convenient than fighting with GUI printer setup systems. It feels like I have a lot more control, and direct access to a lot more useful…

Pinning: Apt’s Best Kept Secret

Pinning: Apt’s Best Kept Secret March 3, 2023 ~17 min I have recently discovered a feature of the apt(8) package manager that smooths over almost all of the annoyances that I've had with point-release distributions (Debian, Ubuntu, etc.). apt(8) provides a simple and effective way to install newer versions of packages than the ones included in the release version that you are running:…

Linked Lists: A Dark Secret

Linked Lists: A Dark Secret February 28, 2023 ~12 min When talking about data structures, I often like to say that there are two basic ones: arrays and linked lists. These two structures accomplish the same task: storing a sequence of items. But they have their own advantages and disadvantages. Linked lists don't allow random access, but allow for efficient insertion of elements at any point in…

Installing and Configuring vimb

Installing and Configuring vimb February 5, 2023 ~10 min In a previous post, I mentioned that I've been experimenting with new software in an attempt to remove as many programs written in interpreted languages as possible from my workflow. Probably the biggest example of this was qutebrowser, which is written in Python. My search for a replacement eventually led me to vimb; however getting it…

Running OpenBSD on a Thinkpad: The Good

Running OpenBSD on a Thinkpad: The Good January 21, 2023 ~12 min In a previous post I discussed some of the negative experiences that came with daily-driving OpenBSD on a Thinkpad T420s. I am still using that same laptop and OS combination, though, so in spite of these issues the good seems to outweigh the bad. So in this article I wanted to discuss some of my positive experiences with the shift.…

OpenBSD: Resolving Unknown Terminal Type Error

OpenBSD: Resolving Unknown Terminal Type Error December 29, 2022 ~3 min My primary terminal emulator is kitty , which occasionally gives me problems when connecting to remote machines via ssh, because not every system has terminfo and/or termcap records for it. Further, on OpenBSD the kitty package doesn't automatically add termcap records for it during installation, so even on an OpenBSD desktop,…

Outlook/Exchange Authentication in Davmail

Outlook/Exchange Authentication in Davmail December 14, 2022 ~10 min I have previously written an article about setting up Outlook/Exchange email on Linux, in which I discussed using davmail(1) , a Java program that allows using a standard IMAP/SMTP interface to communicate with Outlook email. Not long after I wrote that article, Microsoft rolled out an update that broke it. In that article, I…

Running OpenBSD on a Thinkpad: The Bad

Running OpenBSD on a Thinkpad: The Bad December 12, 2022 ~18 min Several months ago, I decided to have a little fun. I ordered a Thinkpad T420s for around 200 on Ebay, installed OpenBSD on it, and started carrying it around as my daily-driver. And, quite to my surprise, I am still carrying it. I haven't opened up my other laptop (a System76 Lemur Pro running Arch Linux) since I pulled this…

The Counter-intuitive Nature of Memoryless Distributions

The Counter-intuitive Nature of Memoryless Distributions October 3, 2022 ~8 min Consider flipping a coin. If you have flipped the coin 100 times and gotten 100 tails in a row, what is the probability that you will get a heads on the next flip? What if you have gotten 10,000 tails in a row first? 1,000,000? Obviously, the answer is still 50%. While the odds of getting into a particular state of…

In Defense of Imperial Units

In Defense of Imperial Units September 6, 2022 ~22 min Somehow, this has become the most viewed post on my blog! As a result, I sunk a little more time into it, adding some more examples and restructuring my arguments slightly in a few places. If you followed a link here, you were probably linked to the older version of the post. If you want to see that, you can find it here . I think this new…

Data Structures: The Bit Array

Data Structures: The Bit Array January 28, 2022 ~19 min A common task that you will need to accomplish in programming is to represent a large array of states. For example, you may want to tag each element in a list with a "status" bit to indicate some information about that record. Perhaps whether it is deleted or not, or whether it has been loaded from disk or not, etc. The obvious approach to…

Microsoft Exchange Email on Linux

Microsoft Exchange Email on Linux December 01, 2021 ~12 min Employers and universities are fond of using Microsoft Exchange/Office 365/Outlook as an email provider. And, because Microsoft is Microsoft, these services do not support standard IMAP/POP/SMTP interfaces. This makes accessing email from a desktop client on Linux a royal pain. However, it is possible to do so. There are a few approaches…

Newton-Pepys Problem

Newton-Pepys Problem May 19, 2020 ~19 min This article has an accompanying YouTube video . In this article, I would like to demonstrate an approach for solving relatively simple programming problems, of the sort you may encounter in a 100-level programming course in college. This technique doesn't scale well to large applications, but it does seem like a good approach to teach to new programming…

Remapping Keys with the Windows Registry

Remapping Keys with the Windows Registry April 12, 2020 ~11 min I was looking through my old files and found this post, mostly finished, sitting on my hard drive. I decided to finish it up and push it. I'm leaving it with its old date, rather than publishing it as something new. These days, the specific task I was trying to accomplish can be easily done with a button in PowerToys (not sure if that…

The Joy of Transformations of Functions

The Joy of Transformations of Functions April 6, 2020 ~26 min Last year, I was first called upon to teach a section of our college algebra course, MATH 120. It was an interesting experience, to say the least, and it opened my eyes to a few beautiful elements of the subject that I had never noticed before. My journey with algebra proper started and ended in junior high school. In fact, I believe…

An Introduction to groff

An Introduction to groff March 10, 2020 ~28 min roff, short for "run off", is an old-school document formatting language [1] that is readily available for Linux systems in the form of GNU roff (groff), troff, and nroff. It's significantly lighter-weight than something like LaTeX, but still allows for fairly complex document formatting tasks. It is also used to render man pages, so it's worth…