Projects

I’ve quite a few open source repositories on GitHub and more that I contribute to, but I have a handful that I really enjoy or that I consider decent projects.

If you are interested in my employment history or a list of my skills and where I rate my comfort level with them, see my resume (note: currently being redesigned).

.:mode:.

I created a 2D game engine based on SDL2, sol2, and Lua in C++. While it was originally designed as part of my CPSC 4160 class at Clemson University, it has grown considerably since then and more or less all of it has been rewritten without the scaffolding provided in class. It is a completely dynamic engine that can change just about anything at runtime – including Lua behaviors of sprites. It has a built-in code editor for injecting and modifying sprite behavior inside of the game while it is running.

fooster-web

I created a small, process-pooled web server in Python designed around conforming to the HTTP/1.1 standard, building RESTful interfaces, and automatic read/write resource locking. I additionally created several addons for hosting files, performing authentication, decoding submitted HTTP forms, request decoding and response encoding with JSON, and page templating. On top of this base, I created several web applications which can be selected via the navigation bar at the top of this page. I basically created a complete web stack and web applications using little more than the standard Python library and a lot of my own code (don’t ask me why).

mkusb

I made a shell script to create ISO multiboot USB flash drives that support both legacy and EFI boot (which also has a sister project mkwin that creates bootable Windows media). It actually stores the operating system ISOs on the drive and uses Grub and initramfs magic to boot from them. It additionally supports booting rEFInd and FreeDOS from the same multiboot drive.

Though on pause for the moment, I began developing an object-oriented programming learning game centered around learning and using Python to manipulate the game itself. I put in a lot of research time in computational learning as well as trials for determining optimal strategies to develop computational thinking skills in those who have had little to no previous programming experience. Only super-basic code is there right now, but it does show my interest in education through gamification.

CUCyber/presentations

I created the build and update system for using reveal.js presentations for the cyber security student organization at Clemson University. It sets up several reveal.js plugins, automatically handles resources, and generates a set of static pages that are automatically uploaded to the GitHub repository from which the website is hosted. Additionally, I wrote many of the presentations and previously took on the role as editor for each of them to ensure visual appearance and grammatical and informational correctness.

CUCyber/reportgen

I created a Markdown flavor with parser and build system for writing technical reports and using LaTeX to typeset them to printable PDF files. This tool is particularly well suited for pentesting reports but other types of reports can easily be written using this tool.

CUCyber/scoreboard

I created a scoreboard for verifying and scoring services in a red vs. blue competition for the cyber security student organization at Clemson University. It is currently used by CU Cyber when practicing and in classes that are geared toward preparing for those types of competitions.

NXT-Music

This is an old project from my days programming NXT bricks for FTC robotics team 772. I created a music interpreter and compiler to convert a typed-up sheet music format into something a helper library on the NXT brick can play asynchronous to other running code. It includes a standalone application that lets you select files to play and includes a lyric engine in addition to the note engine. Also included are several transcribed music files that I made while on the team. The helper library is written in RobotC and the music interpreter and compiler is written in standard C.