Evan Pratten
Evan Pratten
Software Developer

My GitHub profile is a bit like an iceberg. At the time of writing, I have made nearly 8 and a half thousand commits to nearly a thousand repositories. Since July 2018, I have made an effort to go no more than 3 consecutive days without writing code, and I have only broken that streak 6 times (each of those being a 4-day break).

My 2021 commit history

I remember making myself a GitHub account back in 8th grade (August 16, 2016 to be exact). Ever since then, I have published every single personal project I have made to GitHub.

My goal at the time was simply to use GitHub as a free file storage platform for my little side-projects, but it ended up having two interesting side-effects:

Since I send potential employers directly to my GitHub profile, I have a few rules for how I manage the account. The important one for this post is:

Only finished and documented projects are made public. (Some WIP projects may also be public for various reasons)

This means that while I currently have 476 finished personal projects (yes, I write a lot of code), I also have roughly the same number of unfinished projects that'll likely never see the light of day.

Showcase

My goal for this post is to showcase some of the interesting failed ideas I have had in the past. Before I get to the whole list, here are a few recent projects of mine that are worth mentioning in their own section:

A near success

This is a project that may actually be finished some day, considering how its nearly production ready.

In mid-late 2021, I was building a custom graphics pipeline for some friends. After finishing work on [data::loss], a group of us started prototyping various concepts for future games. Continuing off of this, @demilurii and I began looking at integrating 3D layout and rigging tools into our 2D asset pipeline.

Thus, strangle was born. Strangle is a little tool that allows super easy project and asset management through various tools using Pixar's USD as a data interchange format.

strangle can handle the MagicaVoxel, Blender, Maya 2022, and Houdini DCCs in a layering approach, where each DCC is used to add their specialty to an asset. This means that magica could be used for modeling, blender for texturing and shading, maya for layout, rigging and animation, and houdini for lighting and FX.

This whole pipeline works flawlessly, but the tooling was never released due to some less-than-ideal design choices in how the tools interface with each other across OSes.

A public failure

I actually published one of my failed projects as reference material for other developers.


animal-loader (A not-so-acronym for "A Native Mod Loader") is an experimental, unfinished project to allow the @kleientertainment games Don't Starve and Don't Starve Together to load native mods written in rust, and support WebAssembly plugins.

After starting work on this project, I learned that the game I was attempting to mod was never compiled with support for dynamic library loading through its LUA interface, so I was unable to continue without considerable effort.

A little bit of IOT hacking

mitechlib, another unfinished project of mine, is a Rust library that allows me to programmatically interface with the laundry machines in the building I live in.

The only reason it exists is because I thought it would be funny to walk into a laundry room, and wash my clothes with a laptop connected to a washing machine.

The list

With the power of APIs, I threw together a little GraphQL query to grab all my private repos:

query { 
  viewer { 
    repositories (privacy: PRIVATE, first: 100, after: null) {
      edges {
        node {
          name
          description
        }
      }
      pageInfo {
        endCursor
      }
    }
  }
}

I then vetted the list a bit, and converted it to a web-ready format.

Here is the new and improved list of my project ideas that never saw the light of day:

Language statistics

Wow! You made it to the end of the list!

As a reward, here are some language statistics for the project list above. This does not include all languages, just the first few I queried from GitHub off the top of my head.

Language stats