Brian C. Wells' Homepage –

Table of Contents

Hi. I am Brian C. Wells, and this is my personal website. I intend to publish software and articles about whatever interests me: mostly computer science, mathematics, and economics/politics.

FSF member since 2016-01-19

Since January of 2016, I have been an Associate Member of the Free Software Foundation, which simply means I donate $10/month to help them develop all their great software (and advocate for software freedom!). I use a 100% free software Operating System (OS). My laptop computer runs Trisquel GNU/Linux — based on Ubuntu (and therefore also Debian), but with all non-free software removed. Until very recently, I bought most hardware, including laptops, from ThinkPenguin; but after reading the Libreboot FAQ (if you read nothing else, read that!), I have decided to buy only computers which run free boot firmware (in addition to a fully free OS). On my cell phone, I run Replicant, another fully free OS — based on Android, but again with all non-free software removed. I also canceled my Netflix subscription because I am tired of financially supporting a "service" that I can only actually use on some device that I supposedly "own" and yet they have stolen my right to control. I'm some years late to the party, admittedly; but I'd still recommend you cancel Netflix too!


September 15, 2016: In Which I Learn Why Libreboot is Important

As mentioned above, the Libreboot FAQ is definitely worth reading. It's scary, but you're always better off knowing where you are than sticking your head in the sand. For those who want a summary: apparently both Intel and AMD have completely hamstrung our ability to run even modestly secure computers. By which I mean, they have intentionally designed all modern computers so that they are capable of being totally controlled by third parties via the Internet, and there is technically nothing that can be done about it. The only solution at present is to completely avoid all Intel hardware made after 2008, and all AMD hardware made after 2013.

Unfortunately, that means we are currently faced with a stark choice:

  1. abandon all hope of using an even modestly secure computer, in favor of a computer that looks "nice" and "modern"; or
  2. use Libreboot with somewhat old hardware, in favor of having the potential to be secure (although certainly not the guarantee!).

Until I read the Libreboot FAQ, for some reason I had thought that it was possible to find some "middle ground", to be more secure than most and still have a nice-looking, modern PC. But it is now clear to me that that is not possible. Any computer that uses modern hardware is completely incapable of resisting (at least) this type of attack. All it takes is one group of people who have the knowledge and desire to pull it off. And such groups exist both inside and outside your own government. Then, once they figure out how to crack into your computer, it's just a matter of time before it spreads to other similarly-minded groups, and widely exploited. (By "corruption", in this case bribery of individuals, if not by any other way.)

August 26, 2016: Something Useful!

I finally have something to put on this website which I think is genuinely useful to someone besides me. I used Emacs Org mode to write an article on how to derive rotation matrices by purely algebraic methods, and I wanted to publish it in both HTML and PDF formats. But since it uses a lot of mathematical notation, I ran into a problem that both I and others have had with Org mode: the MathJax library (for LaTeX math in HTML) and real LaTeX (for PDF) have slightly different expectations for where and how LaTeX macros should be defined, and Org mode does not try to solve the problem.

Several people have provided work-arounds for the problem, but so far they all seem to require either

  1. installing a large Emacs Lisp (.el) file somewhere, and still quite clunky to use, such as manually updating a dynamic block; or
  2. using only a single very restricted method of defining macros, namely \global\def inside \(...\) in an Org mode drawer.

Inspired by another GitHub repository to take advantage of Org mode's (undocumented?) ability to evaluate Emacs Lisp code in its own native macro definitions (at least in the version I tested with), I managed to write an Org mode setup file which has neither of these problems. The source code is available as an Org mode literate program in this GitHub repository, the unannotated setup file is here, and rotation is the article I wrote it for.



A simple literate program that uses an (apparently) undocumented feature of Org mode to make all varieties of (La)TeX definitions work in both HTML and PDF output.



A purely algebraic derivation of the 2-D rotation matrix. First article that uses org-tex-define.


You can send email to my first name (Brian) at this domain.


This site was made using the Org mode of GNU Emacs, together with an Emacs Lisp file which sets up the corresponding Org mode projects and a Makefile which is used by GNU Make to run the publishing functions. Rather than publishing directly to the server, however, I prefer to first "publish" locally so I can review the output. The Makefile and zip utility also generate a compressed file with all the output. Once I am satisfied, I upload manually and decompress it. (I also leave it there, so if you want a copy of the final product only, that is one option for you.) Another advantage of this somewhat convoluted process is that I do not need an SSH account on the web server (for my webhost, getting that requires to jump through some hoops I can't be bothered to do yet).

If you want the Org mode source for a single webpage, I also include that in my publishing configuration. So just replace the .html with .org in any of the URLs ( for URLs that end in a slash). If you would like a copy of the whole source code, including the Emacs Lisp configuration and Makefile I mentioned above, then you can find it in this GitHub repository. I hereby license it under GNU AGPLv3+, so you can copy and modify it in any way and for any reason, as long as you (1) give credit (acknowledgement for work) where due and (2) let others do all the same things you can do.

Author: Brian C. Wells

Created: 2016-09-16 Fri 01:01

Emacs 24.5.1 (Org mode 8.2.10)