This website was built with Vue.js, Tailwind CSS, and Nuxt. I created it as a way to get familiar with the capabilities of Tailwind and Nuxt. My last personal site was a table-layout throwback intended to render well in text-based browsers like lynx and links.
kobodl is a command-line tool and web service to download and remove DRM from books purchased from kobo.com. I forked it from another project to add audiobook support, multi-user support, a web interface, and create proper distribution packages with pypi and docker.
This is a git repository where I keep systemd configurations for all the services I self-host. It's also a tutorial for how to set these services up, and represents a lot of time and research about how to best configure docker and systemd to work together. /r/selfhosted provided a lot of inspiration.
GWC is a library of Vuetify + Vue.js components that provide interactivity with Kitware's Girder DMS. They violate traditional Vue.js design patterns for the sake of downstream developer ease-of-use and feature modularity.
I am currently engaged in several projects that involve displaying and editing track annotations over video in the browser. Challenges include rendering performance and managing code complexity, as traditional MVC patterns often lead to performance bottlenecks.
Tusk is a browser extension for filling passwords from a KeePass database stored in the cloud. I didn't start this project (it began as CKP) but I created a fork with a new UI since the original project lost steam. You can install Tusk for Chrome or Firefox. I've since abandoned the project due to difficulties with cloud storage APIs, particularly Google Drive.
In the summer and fall of 2016, I lead the development team to build the website for HackNC, the annual undergraduate-run hackathon at UNC Chapel Hill. This is the first decent bit of web design I was involved in, and my first time working alongside a talented dsgraphic designer.
I implemented a basic ray tracer in C++ to render spheres and planes with reflective surfaces and colors. Because ray tracing is computationally expensive, I also created a low-resolution ASCII renderer to do scene setup from the command line.
Hardly worth mentioning, except that it was so much fun. My friend and I hacked a joystick out of pipe cleaners and puff balls and used OpenCV tracking to use it to steer a flight simulator. The project was thrown together at Bitcamp where judges didn't even bother to look at us because we weren't competing for any sponsored prizes. But I'm not bitter.
This is a command-line tool for sending SMS notifications to hackathon participants based on live-updating Google sheets. At the time, I was interested in 'serverless' apps that used Google sheets as a persistence layer to avoid configuring more complex document stores. I used this tool during HackNC 2016.