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]
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]
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]
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]
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]
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]
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.”
- 223b753 Add highlighting for PowerShell syntax (2020-10-19)
posh-git
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.
f2defd4
Add tests for pretty format autocomplete (2020-10-22)53b0c22
Refactor gitConfigKeys (2020-10-22)ce376ff
Autocomplete user-defined pretty formats (2020-10-20)
posh-git-sh
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.
9fd10d9
Show local status summary symbol (! or ~) (2020-10-04)0da4ec8
Use high-intensity ANSI escapes instead of bold (#41) (2019-04-09)c6aa7cf
Show ahead/behind counts (#37) (2019-03-27)
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
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.
e40ae11
Add support for modified tab borders (2018-11-18)588930b
Add `stringEscape` to `syntax` section of README.md (2018-10-07)319e044
Add `stringEscape` to `syntax` (2018-10-06)c4b47ba
Add escape characters to language examples (2018-10-06)110248b
Make second example complete (2018-10-06)17bc217
Fix typos (2018-10-06)4bfc4e2
Add API information to README.md (2018-10-05)
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.
31581945
Read key remappings from .vimrc (#3908) (2019-11-09)