Skip to content

Blog Zero

10 Nov 2021

Software

If you're wondering why some aspect one of my programs is the way it is and the blog post about it doesn't explain it then you may find your answer here. The following are general notes about my software, in no particular order.

User interface. I spend most of my time on the command line, in Emacs or using a web browser, so consequently most of the programs here are command line (CLI) programs. Some of the Emacs Lisp code here may provide a more advanced/complex user interface, but since I use the terminal version of Emacs I wouldn't expect anything too fancy.

Platforms. I haven't run anything but Linux for quite some time, so for the most part my software has only been tested on that operating system. It should work on all Unix-like OSes (like MacOS or the BSDs), so if a particular program doesn't then please report it via its GitHub page. But some of my programs may (usually inadvertently) assume that reasonably current versions of the GNU implementations of core and other utilities are being used: unless it's fairly straightforward to make such a program work with other implementations the "fix" will be for you the user to use recent versions of the GNU implementations of the relevant programs.

Standalone shell scripts. In general I prefer that each of my scripts be self-contained so that just the one file can be copied to another machine and it will just work (assuming the programs that it executes exist there, of course). However, this does result in common and boilerplate code being duplicated across scripts. (This isn't really a maintenance problem for me since my scripts are generated from an org mode file in which a given piece of common or boilerplate code appears only once and is inserted into each of the generated scripts using noweb-style references.)

Commit histories. The GitHub commit histories tend to be very shallow. This is primarily because locally I use CVS rather than git for my personal projects. (Hey, if it's good enough for OpenBSD.) There doesn't seem to be any easy way to convert files from a CVS repository into a git repository, so for the most part I just added the current version of each program to a new git repository and then pushed it to GitHub. Of course, any and all future changes will show up in git. And I may include with some posts a short history of the program: the date when the program was first written (or at least committed) if nothing else, but also any changes of note.

Origins. When a program of mine is based on someone else's code or even inspired by someone else's idea I do my best to indicate that in the source code: in the comment at the top of the file if it applies to the whole program, or at the relevant point in the body of the program if it only applies to that part of the program. Unfortunately the oldest of my programs don't contain this information, and so what their origins and inspirations were has been lost.

Copyright and licensing. You should check the individual programs to be sure, but the code of mine that's up on GitHub should be covered by the GPL3+ license: that is, version 3 or later of the GNU General Public License.

One final note: these programs have been written over a number of years, so you may notice variations in the style and techniques (and idioms) used.

If you'd like to support this site then check out my web app InEveryNook.com and see if it's of interest to you, pass it along to anyone you think might be interested in it, or both. Thanks!

Tags: software meta