Most of the links I leave to my projects on this page point to popular, publicly available code hosting sites such as GitHub. Where possible, I also mirror my projects on cdaniels.net (which will be indicated by a link titled "mirror" where appropriate). These mirrors are provided in case GitHub or other such sites should go down. To that end, avoid using the mirrors if possible unless you really need them (i.e. GitHub is down).
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
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.
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 cdaniels.net 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.
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 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:
command-line interpreter (HeRC Explorer) for interacting with sparse matrix data in real-time, including helpful visualizations and "drill down" functionality
Libraries for interacting with sparse matrices from Python 3
A file format specification (BXF - Better Matrix Format) for storing sparse matrices, with a read/write implementation in Python 3, and a read-only implementation in C
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 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.
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.
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 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.