Blog Index
- Completing the Square I taught a precalculus class last semester, which included completing the square. I realized as I was teaching it that nobody in my own math education (so far as I can recall) ever explained why it worked. This post is an adaptation of some notes I wrote for the class describing the underlying math behind a high school algebra "favorite".
- Using eqn for Website Equation Formatting The eqn command supports MathML output, which can be used to statically translate equations on the back-end of a site generation framework, avoiding the requirement to use MathJax, or some other Javascript framework, for this purpose. This article discusses approaches for using eqn to do just this, as well as some issues that arise when doing so.
- Linked Lists Revisted 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 performance. So in this post I'll look at a pair of variations on the structures to further examine their performance.
- Asynchronous Task Dependency Management with Promises and Futures I recently found myself in need of a simple solution to ordering asynchronous tasks based on simple dependencies: they can complete in any order, but most commit in a specific order. This article discusses the details of solving this problem using simple promises and futures.
- Processing Big Data on the Linux Shell 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 larger-than-memory data processing.
- eqn: Formatting Equations in groff 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 programs, to provide a more convenient interface for specifying document formatting.
- Using a Printer from the Terminal 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 am 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 information. Not to mention it opens the door to using my printer as an output for scripts or commands!
- Pinning: Apt’s Best Kept Secret I have recently discovered a feature of the apt package manager that smooths over almost all of the annoyances that I have had with point-release distributions (Debian, Ubuntu, etc.). apt provides a simple and effective way to install newer packages than are included in the release version that you are running. And it is not even hard to get set up.
- Linked Lists: A Dark Secret When talking about data structures, I often like to say that there are two basic ones: arrays and linked lists. Both of these structures accomplish the same goal, storing a sequence of items. However, in the majority of situations, one of them is significantly better in terms of real-world performance...
- Installing and Configuring vimb vimb, the vim-like browser, is an interesting GTK-based web browser with a modal interface, like vim, and several useful features. However, getting it up and running well can be a bit of a challenge. This article discusses some of what I have figured out about getting vimb installed and working.
- Running OpenBSD on a Thinkpad: The Good In a previous post, I discussed some of my negative experiences with daily driving OpenBSD on an old thinkpad. Despite those drawbacks, however, I am still using the setup. In this article, I discuss some of the positive sides of the experience that keep me coming back.
- OpenBSD: Resolving Unknown Terminal Type Error Sometimes, esoteric terminal emulators will not be recognized by servers you connect to over SSH out of the box. This article discusses how to resolve this problem.
- Outlook/Exchange Authentication in Davmail 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. Unfortunately, not long after I wrote that article, Microsoft rolled out an update that broke it. This article discusses in detail how to resolve the problem.
- Running OpenBSD on a Thinkpad: The Bad Several months ago, I decided to have a bit of fun and purchase an old Thinkpad T420s on Ebay. I threw OpenBSD onto it, and have been using it as my daily driver ever since. In this article, I discuss some of the shortcomings of this particular setup.
- The Counter-intuitive Nature of Memoryless Distributions Probability is a tricky subject, and sometimes our initial ideas about how probabilistic systems behave are not reflected in the mathematics. It is worth taking care to ensure that we properly understand probability distributions when we are modeling problems, as the results can sometimes be quite counter-intuitive.
- In Defense of Imperial Units One thing that I have noticed over years spent on the Internet is that there is a seemingly large, and very vocal, group of people who spend a lot of time and energy getting worked up about measurement systems. And, almost universally, their distaste is targeted in one direction: imperial units. Metric good, imperial bad, is the general refrain.
- Data Structures: The Bit Array 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 accomplish this would be to attach a boolean to each element within the array.
- Microsoft Exchange Email on Linux 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 getting them set up on Linux a royal pain. That is not to say that it is impossible. There are several different ways to connect to your Microsoft email account using a Linux desktop email client. In this article, I discuss two of them: evolution-ews and DavMail.
- An Introduction to groff I have recently discovered a feature of the apt package manager that smooths over almost all of the annoyances that I have had with point-release distributions (Debian, Ubuntu, etc.). apt provides a simple and effective way to install newer packages than are included in the release version that you are running. And it is not even hard to get set up.