The Blog of Charles Daniels

The Projects Page of Charles Daniels

The Projects Page of Charles Daniels


Active Projects


BitShuffle is a program for encoding and decoding arbitrary binary data into printable ASCII characters for transfer over arbitrary media. In many respects, it can fill the same purpose as base64 or uudecode / uuencode, however it is more sophisticated than these tools. In particular, BitShuffle is intended as a format for sharing data between humans, rather than between automated systems. BitShuffle is also well suited for in-band communications where data needs to be included with a stream of other arbitrary text. Some key features that BitShuffle offers include:


ShellDoc is a Python 3 script that produces reStructuredText from specially marked up shell scripts, and source files for other languages that use # as a comment character.

ShellDoc is open source software, and is BSD 3-clause licensed.

"The Toolchest"

This project, also referred to as net.cdaniels.toolchest, is a package manager written in pure POSIX-compliant sh. It has been tested on a variety of operating systems, including CentOS 6, Ubuntu 14, Ubuntu 16, macOS 10.11, 10.12, 10.04, and 10.05.8, OpenIndiana (Solaris 10 compatible), and FreeBSD 11.

The Toolchest aims to provide a convenient system for packing small pieces of software written in arbitrary languages, and can correctly handle both compiled and interpreted code. It also includes facilities for basic dependency resolution and repository management. The Toolchest also has the benefit of a fully prefixed installation - deleting the toolchest's installation directory also remove all relevant configuration files and installed packages all at once.

I personally use the toolchest both to package small tools and scripts that I have myself written, but also to provide "ports" for small software packages which I use frequently which are not always readily available via the native package manager for every system I use.

Aside from my own personal use, The Toolchest is used by the University of South Carolina Heterogeneous and Reconfigurable Computing (HeRC) research group to package and distribute in-house software within the HeRC lab.

The Toolchest is open source software, and is BSD 3-clause licensed.


OpenChariot is a project to provide a read-only web-based user interface to a git server, suitable for use by individuals and small teams. It is implemented as a set of POSIX shell (sh) scripts, and leverages a number of existing open-source software packages including:

OpenChariot is used to maintain the mirrors of my personal projects, and is also used in the University of South Carolina Heterogeneous and Reconfigurable Computing (HeRC) group lab.

OpenChariot is open source software, and is BSD 3-clause licensed.


While these may be "just" my dotfiles, they also include some pretty nifty code to provision both my user account, and entire systems. Others may find some of my configurations, and the scripts used to install them useful, so I keep them publicly available.

Fair warning, because the code in this repository is intended for my personal use, it has less bullet-proofing, error checking, and edge case handling that many of my other projects. Some of the scripts delete things without asking first. Use at your own risk.

My dotfiles are BSD 3-clause licensed.

Inactive Projects

YAECPPL (Yet Another Easy C Plus Plus Logger)

YAECPPL was a simple and easy to use, but also highly useful and functional logging library written in C++11, which compiles with no dependencies. YAECPPL is useful for relatively small applications which are too large for "print debugging", but too small for a more sophisticated logging framework.

Development on YAECPPL has concluded. To my knowledge it is bug-free, and I consider it feature complete, as further advancement of the project no longer interests me.

YAECPPL is open source software, is is BSD 3-clause licensed.

HeRCM (HeRC Matrix Tools)

HeRCM is a software package developed for the University of South Carolina Heterogeneous and Reconfigurable (HeRC) research group. HeRCM is used to interact with sparse matrix data in various ways. Key features include:

The project for which HeRCM was developed has concluded, and consequentially development on HeRCM has not continued.

HeRCM is open source softwre, and is BSD 3-clause licensed.

Argument Soup

Argument Soup was an attempt on my part to, as a college Freshmen, re-invent argv parsing from scratch. The project did yield some more or less functional Python code, but fell far short of it's rather ambitious goals.

Argument Soup ultimately never produced any useful code, but I have left it up in the hopes someone in the future might find it amusing, or perhaps find a few useful snippets within it. It was also (at least for me) an entertaining and educational project at the time.

Argument Soup is open source software, and is BSD 3-clause licensed.


color2overlay was a fun weekend project to make a wallpaper generator. It works by generating colorful boxes, which are optionally overlaid on top of an existing image. The boxes can be rendered at various sizes or transparencies. Additionally, bit masks can be applied to individual color channels to tailor the shades produced as output.

As noted, this was a just-for-fun project, which is not intended to be useful. It is feature-complete, in that it has all the features I set out to implement.

color2overlay is open source software, and is BSD 3-clause licensed.

Projects I Like

These projects are not mine, but rather projects I find interesting or useful. In some cases, I may contribute to these projects, and in others I may simply find them intriguing.

Recaf - An easy to use modern Java bytecode editor

An exceptionally cool project by GitHub user Col-E to produce a usable, useful, modern Java bytecode editor. Admittedly, I don't know enough about the JVM for this to be useful to me personally, but it is nevertheless a fascinating project.

I threw a few commits over the wall in fall of 2017 to help get Maven and some CI/CD-related facilities working correctly for Recaf.

Sake - A self-documenting build automation tool

Sake is an exciting new build system which competes with the likes of Make. It has a pleasant to use format (YAML), and support for sophisticated features such as macros and pattern-rules. I have used Sake for a few small, non-public projects and have been pleased with it's performance, features, and ease-of-use. In the future, I am likely to try using Sake in a larger public project, should I have one that is a good fit.