John Woodruff

RIP Side Projects


In my previous post, Epic Development Environment using Windows Subsystem for Linux, I opened with my reasoning for buying a new laptop: the many side projects I had going on. Unfortunately, over the years, many of those side projects languished into obscurity and were never looked at again. Recently the venerable Isaac Lyman published the blog post GitHub Graveyards: I'll show you mine... and went through all the side projects that fizzled and died for various reasons, why he built them/what he learned from them.

I loved the idea, and it felt like a great way to memorialize those dead projects that benefitted me in so many ways. With that in mind, I present to you my GitHub Graveyard.

Default Stylesheet #

A beautifully simple default CSS stylesheet

This was one of my first ever repositories on GitHub. I wanted to make a design system myself, ala Bootstrap at the time, but have it be simply providing default styles to standard HTML controls and elements as opposed to applying classes to everything. I created an incredibly simple design to the basic elements (buttons, inputs, selects, etc.) and created a stylesheet that one could simply link to on their unstyled site and get immediate benefit.

I used the stylesheet myself on a couple of small things before I stopped using it in favor of the many obviously superior CSS libraries.

What I Learned:

Barebones Grid #

A simple responsive grid-based CSS framework

Coming off of the high of building my first open source project, I quickly moved into once again building something Bootstrap and others had already built: A grid system. On this project, in fact, I shamelessly walked through the Bootstrap code itself and followed its example to essentially rebuild the same type of grid as a standalone library.

At the end I had a working responsive grid (practically identical in functionality to Bootstrap) and even wrote documentation on how to use it, and released it to Bower. It died because I never used it, even in my own projects. I did, however, get a couple of stars on GitHub, which was another first for me!

What I Learned:

Project Tracker #

A hybrid app built on Ionic for the purpose of tracking and managing projects

Ah, my first Ionic application. This was back on Ionic v1. It was love at first sight, a love that continues to this day. I was building a project at work to track department priorities and project timelines, and thought it would be fun to make a slimmed down version of the project as a mobile app. I had just attended ng-conf in 2015 and learned a bunch about Ionic, so I was stoked to be able to build native apps with the web technologies I already knew.

This project fizzled out quickly because the design I was attempting was complicated enough that I quickly got frustrated and wanted to try something a little more simple.

What I Learned:

Cash Tracker #

A simple cash income/expense tracker hybrid Ionic app

This was the project I jumped on to after losing steam on Project Tracker. A much more simple design using mostly basic Ionic components. I also used Chart.js for the first time, which was quite fun and a good learning experience. I completed most of what I wanted to accomplish in the app before moving on to other projects.

What I Learned:

Simple LMS API #

A Node.js and Express API for the Simple LMS project

I was still in school at BYU during 2015, and they had an in-house Learning Management System (LMS) they built called Learning Suite. It was an atrocious experience. Slow, incredibly buggy, and everyone hated it when it came out. (it got vastly better over time, and I'm sure it's totally fine now) Due to this annoyance, however, I pledged to build a better LMS! As you can see from this project, I worked on the backend of the project for about a month before abandoning it.

This project was one of my better graveyard projects due to the sheer number of things I learned in the process. First, it was my first major foray into Node.js with Express as an API. Second, I used Docker with Docker Compose to spin up containers with the API linked to my local code with live reload and a MySQL database. I loved how I didn't have to install that whole environment locally, but could simply spin up and destroy containers as I wanted.

On the other hand, I also made tons of rookie mistakes. For example, I used simple string concatenation from params passed in by the user to build SQL queries instead of utilizing parameterized SQL. Yep. I did that. It's immortalized for all to see. Look upon it and weep for my n00b idiocy. :)

What I Learned:

ChatHub #

This was an incredibly fun project. I loved using web technologies for creating mobile apps, and got super excited at the prospect of doing that for desktop apps too. Enter Electron. This has become one of my favorite technologies, something that I use to this day. I wanted to build a desktop application, so I decided to build a Firebase chat app. (something that most web devs have done at some point in their career)

I used Angular.js's Material Design library and had a ton of fun building a chat app hosted in Electron. I ended up using very little of Electron itself ironically in this project, I simply loaded up my app in an Electron window, but I thought I was a full-on Electron developer! Since then, I've gotten substantially more knowledgeable about Electron and have been working with Electron professionally for the last year and a half.

What I Learned:

Scheduling Hero API & Web #

After doing many projects on my own, I wanted to host a little "Hack Night" once a month at my house with some friends. I started "Scheduling Hero" (the name was temporary but we never thought of anything better) which was a project to help manage availability between multiple people, and help schedule a time to get together, including sending out calendar appointments to the attendees.

This project lasted longer than most of my side projects, because I had a couple people working on it with me, and it was a fun social gathering where we would work together. Sadly I never ended up finishing it, as we all got busy with work and stopped doing those regular hack nights. It was a fun project, however, and I learned a lot from it.

What I Learned:

There are a few other projects currently that have been sitting in my GitHub account for a bit, but I'm not ready to call time of death yet because I still think I'm going to go back and continue them. Hopefully I do continue working on them, but I may end up writing a part 2 of this post a year from now. As for these projects, I appreciate all I learned from having done them, even if I haven't touched them in years. May they Rest in Peace.