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 Revisited 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 must 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.