Projects

This page catalogs my free-software projects—none of them notable, I assure you—as well as my meager contributions to other projects. I created it for a couple of reasons:

First, it’s surprisingly hard to see all the same information on GitHub. It’s easy enough to see my original projects, but it’s not clear which of my forked repositories I’ve actually contributed to, let alone what those contributions were. The activity log is not especially browseable, either; the last month or so is fine, but for anything older—unless you already know when it happened—you have to click “Show more activity” an ungodly number of times, and in my case, most clicks reward you only with “rdnlsmith had no activity during this period.”

Second, this is part of an ongoing effort to make this website the core of my presence on the Web, because third-party services disappear. All of my projects are still mirrored on GitHub, but the canonical links now point to my own Git server.

My Projects

“CPU” Clock Face for Fitbit Versa [Inactive]

Licence: MIT
Mirrors: GitHub

From 2019 until mid-2024, I wore a first-generation Fitbit Versa smartwatch. I chose it because it was a relatively-inexpensive option with multi-day battery life that was compatible with my (work-issued) iPhone, but for which I could theoretically write software from Linux.

I wanted to personalize it, but I never found a clock face in the marketplace that I liked better than the default one—so I made my own. It was meant to evoke the aesthetic of vintage printed computer ads.

Although I used this face for five years, I never bothered to publish it. I now have a different watch entirely, so I’m unlikely to make any further changes.

DotnetPgn [Abandoned]

License: MIT
Mirrors: GitHub

When I rediscovered chess in 2020, I also discovered the PGN file format for the first time. I’m consistently fascinated by things that blend the digital and the analog—PGN files resemble a handwritten move list, but are standardized enough for a computer to interpret them—so I decided to try writing a PGN parser for fun.

I took it just far enough to tokenize a valid move list before losing interest. It was never intended as a “serious” project, and there’s no compelling reason to return to it; mature PGN-parsing libraries already exist.

iPhotoExtractor [Inactive]

License: MIT
Mirrors: GitHub

In 2018, with the help of a third-party replacement MagSafe charger, I briefly revived my partner’s 2009 MacBook in order to recover the files from its hard drive. In particular, they had a lot of photos in an iPhoto library.

The photos themselves were easily accessible, but only as one big heap of files with auto-generated file names along the lines of IMG_0001.JPG. The metadata that organized them into named collections only existed within iPhoto; and not only was iPhoto discontinued by that point, but we were moving the files to a Windows device.

iPhoto kept its metadata in a Sqlite file, iPhotoMain.db. I wrote a little C# command-line program which read that file and copied all the photos into a directory structure based on the “event” tag.

Although it has long since served its purpose, this project will always be a bit special to me: both as a personal example of situated software, and because it was the first software project I ever published online.

Linux Themes for Visual Studio Code [Inactive]

Previous Maintainer: Nathan Graule
License: GPLv3
Mirrors: GitHub

A collection of VS Code themes intended to blend in with popular GTK themes, most-notably-to-me including both the light and dark variants of Ubuntu’s Yaru theme.

This project was originally created by Nathan Graule. I discovered it in August 2018 while looking for a theme to use in Ubuntu, and ended up trying to make one myself using Nathan’s Communitheme… theme (as Yaru was originally called) as a starting point. I posted a screenshot on Twitter of my efforts, and Nathan encouraged me to submit it.

Later, in October, Nathan asked me if I’d be interested in taking over the project, which I did. Over the next couple of years, I made few more new themes and revamped a couple of the existing ones. It’s been a while now since I’ve done much of anything with this, though I might still be willing to come back to it if someone asked for a specific improvement.

pwsh-diff [Abandoned]

License: MIT
Mirrors: GitHub

In 2020, I tried out diff-so-fancy, but I ran into a weird issue with background highlight colors in Windows. It seemed like the Perl binary that shipped with Git-for-Windows (at the time; it may have improved since then) was the culprit—understandably, because having a terminal emulator on Windows that could actually handle anything but the most basic ANSI color codes was still a very new prospect. So, that weekend, I did the obvious thing and… re-implemented the logic in native PowerShell.

It worked, too—until I got back to work on Monday and discovered that the less binary that shipped with Git-for-Windows (again, at the time) had the same problem. In the absence of any other decent pager for Windows, there wasn’t much point in continuing after that.

Contributions to Other Projects

I am only counting contributions that were accepted into the main branch of each project. Consequently—with one exception—you could reproduce the lists below by cloning each repository and running git log --author="Daniel Smith". It also means that, in some cases, changes that I initially authored as multiple commits may have been squashed into one by the project’s maintainer(s).

hugo-theme-terminal [Unmaintained]

Maintainer: Radek Kozieł
License: MIT

A vaguely cyberpunk theme for static websites built with Hugo. This site used this theme from its launch in 2019 until my 2022 redesign.

Oddly, all commits prior to June 2022 seem to have disappeared from the master branch, including mine below; but they survive on the webpack branch.

My only contribution was to re-generate the prism.js file with support for PowerShell syntax enabled, for the sake of my post “Emulating Linux ‘man’ in PowerShell.”

posh-git

Maintainer: Keith Dahlby
License: MIT

A PowerShell module that incorporates customizable Git status information into the shell prompt, which I use daily.

I implemented autocomplete for custom --format=/--pretty= formats defined in a user’s .gitconfig file.

posh-git-sh

Maintainer: David Xu
License: GPLv3

A Bash reimplementation of posh-git, which I have also contributed to. Having grown accustomed to posh-git at work, this became my preferred Git prompt for Linux.

I implemented a handful of minor tweaks that brought posh-git-sh’s presentation closer in line with posh-git’s, after the two projects had diverged a bit over time.

Vim

Maintainer: Christian Brabandt
Previous Maintaner: Bram Moolenaar
License: Vim

One half of the editor war. I mostly “use” Vim in the form of keybinding plugins for VS Code and Visual Studio, but lately I’ve been starting to use Vim itself more heavily.

I extended the syntax highlighting script for Progress OpenEdge to support the C-like single-line // comment syntax that was introduced in version 11.6, ca. 2015.

vscode-theme-generator

Maintainer: Daniel Imms
License: MIT

An NPM module that can generate a complete VS Code color theme from a relatively-limited set of base colors. Used for my own Linux Themes for VS Code project.

I wrote documentation for some advanced configuration options that, previously, you would have had to read the code to find; made it possible (and, indeed, default) for escape characters in strings to be highlighted in a slightly different color than other characters; and added support for VS Code version 1.29’s then-new ability to use different accent colors to distinguish between tabs in various combinations of focused, unfocused, modified, and unmodified.

VSCodeVim

A VS Code extension that implements Vim features, including modes, macros, keybindings, and ex commands. It also incorporates features from a handful of popular Vim plugins. I use this daily.

I implemented the ability to read some limited settings—specifically, key mappings—from a user’s .vimrc file in addition to their VS Code configuration, so those mappings could be more easily shared with real-Vim and other Vim-emulation plugins, such as that for Visual Studio. Unfortunately, so far as I’m aware, .vimrc support hasn’t advanced any further since then.