So, today marks my 365th day of GitHub contributions. I started last year on June 25th, and today is June 24th. I’d like to talk about what I did, and why I did it. Maybe some tidbits about discipline, too.
In case you’re wondering what this looks like (you can check my profile, also), it looks something like this:
Maybe you’re wondering what it sounds like (bear with me), you can check this neat app out.
Without further ado, lets dig in! I’m going to try to keep each description as short as possible, and repeat as little as necessary, since this will probably get long. I’m also going to leave out all of my closed-source contributions.
- IdleLands - This was my first month of working on IdleLands. I had the high hopes to make it an amazing RPG that you didn’t have to interact with. It kinda succeeded, but it got pretty large.
This was the month I debuted IdleLands. It wasn’t very well received, but that was no reason for me to stop working on it.
idle.land - This is a web interface for IdleLands. Partly because I wanted players to have something to look at, and partly because I wanted to learn how to use Meteor. I still keep it running, but as for if it shows up… YMMV. Check it out!
bootstrap-slider - A small slider component that fits in well with bootstraps aesthetics.
angular-bootstrap-slider - An Angular wrapper for bootstrap-slider
dropsort.js - A small drag, drop, and sortable component written in vanilla JS. It was used as a learning exercise and it was a work project that we intended to use but found alternative ways to implement our UI. It was still pretty fun!
Kurea - An IRC bot written in CoffeeScript that runs on the Node platform. We (myself, Raymond, and Rahat) started it a couple years ago and we get a ton of use out of it! It doesn’t get regular contributions but occasionally we add new features or modules.
ng-module - A small library that lets you have multiple
ng-apps in an Angular application. I put it on GitHub and Bower with the intention of using it, but that never ended up happening since I found a better way to solve this problem. #realworldproblems
restricted-number - A small library designed to keep a number in a range. At its core, it’s just
Math.min(Math.max(min, number), max)but it also provides utility functions for checking percentage differences, integer differences, and stringifying into various formats.
Once again, IdleLands dominates the chart. Nothing too special happened this month, though.
This month we see some new trends. First, the rise of idle.land. This was the month that I debuted the website. Of course, reddit crashed it in a heartbeat (boy, that was an experience), but this time, IdleLands was received more positively. How reddit works is a mystery to us all.
I also contributed to two new projects! One I started, and one I didn’t.
solar-system-simulator - This was supposed to be an incremental game made with d3.js. It was an idea that was thought of in a few hours and implemented in not too many more. Ultimately, the project itself got really complicated (I wanted to have it so there could be multiple centers of “force” gravity, but doing that with d3 is nontrivial) so I stopped working on it. Of course, it’s still hosted right here, if you want to check it out.
multiverseminer-front - This is the frontend for a game that ultimately didn’t come to fruition, Multiverse Miner. I was helping rewrite the frontend in Angular for the upcoming v2 of the game, but ultimately, the creator got too busy.
Another busy month, and a few new projects! There’s a trend here…
WebFE - A bunch of people who liked IdleLands wanted me to make a more accessible web interface for the game. I took this as an opportunity to learn how to use material design, and try making something cool. The end result is viewable here (warning, requires a login. If you want to see it, you can use Test/Test to see it). Ultimately, that project was what drove me to a more API-design-driven approach for IdleLands. The creation of this API also spawned a few more IdleLands clients! Success all around.
Custom Assets - With the creation of WebFE, I also was looking for ways to get content creation more accessible for IdleLands players. Ultimately, I came up with a solution that uses Git, GitHub, and a bit of code in the game itself to do this. It was a project that was pretty rough around the edges until later, but it proved valuable – I got about 100 commits due to player help, and commits are just how many times I pressed the “submit” button. There are so many cool submissions players sent in that I don’t think I would have gotten otherwise.
angular-aside - I needed this, except I needed it on the top and bottom as well as left and right. Patched it in, sent a PR, that was a good day.
Now, this month was a very diverse month! This was the month I introduced WebFE to the players of reddit. It was probably also the largest update, content-wise, in the history of the game. Strangely, not very well received. Reddit is fickle!
- doks - Doks is a small documentation generator that is aimed at generating user-readable documentation out of your source code. Not developer-oriented. User. See some examples here and here. It’s theme-able, too, but it only comes with one by default. This project was about a week-long, and it was a great experience to learn how documentation generators do their things, the ins and outs of some approaches, etc.
- gallerygrid - My first open source contribution for Herosheets! This is based off of the “Google Grid Gallery” on codrops. We use it to show player creations in a cool way!
- angular-gallerygrid - An angular wrapper for the above.
- angular-strap - A great set of directives for Angular / Bootstrap. I just pushed a small documentation update!
- interactive-resume - This is my “interactive” resume, written with D3. See it live here! It was pretty fun to make.
The month that ends the year. It was a busy time for all, myself included. Only one new thing this month:
- angular-ui-tab-scroll - This is a directive that lets you wrap an Angular-UI
<tabset>and make it so you can scroll them left and right. Overall a bit frustrating to work with, but we’re using it and it seems to work rather well! It was written for work, but it got some external interest as well, which is always really cool!
Happy new year! New beginnings, blah blah blah. IdleLands was having major performance issues, so I was considering rewriting it in Go. Turns out, I don’t really like Go.
Anyway, this month was another update for IdleLands – sort of a new year celebration. People liked it again, and it was cool. It was my first time publishing Doks, too, and having people use it for realsies.
- kurea-idlehelp - I finally got around to making a module for my IRC bot to help people navigate my IRC(ish) game.
- restricted-number-go -
The shortest month of the year, and I bet you must be getting sick of seeing IdleLands dominate the charts again. Give it a month, it’ll fall down a bit. Overall, just a lot of same-old same-old. One new thing, though:
- kurea-contrib-rss - An RSS module for Kurea. Ultimately, I made it because I wanted to sit in an IRC channel and get reddit updates, but I didn’t want to host another IRC bot. This stupid thing still causes the bot to crash, too. Curse you, RSS! shakes fist
This is the month that was pretty heart-wrenching. I decided to stop working on IdleLands as feverishly as I was before. It was the beginning of the low-contribution block on my calendar, and the end of an era.
But seriously, this month was a pretty cool month, too. I started learning to use Ionic, and started a cool project (Reactive Retro).
- qson - My first Ionic app and my first real foray into using ES6 and Gulp. It’s just a simple app that hits a server and displays the output in a meaningful way (and the output is pretty opinionated, too). This project interested me in doing mobile development again!
- retro-app - This was the start of Reactive Retro, the mobile GPS RPG game (made with Ionic) that is still under pretty heavy development.
Another great month – lots of new projects! I started a small project and finished it in a few weeks (at this point, I was still recovering from burnout from IdleLands) as well as contributed to a handful more projects!
- c - no, not the language. This is a small clicker game that builds itself while you play it. It was tons of fun to make. I focused on code quality while writing this game, too, and wrote a small post on it! You can find the game here.
- Warriors - I wanted to make another incremental game styled like Hyrule/Dynasty Warriors, but it fell through due to some issues on my part. I’m sure I’ll revisit it one day – I really liked the idea.
- Orchid-IRC - An IRC client. I contributed some documentation fixes!
- tilesort-gallery - A small directive that is an image gallery, but better. Also, created to some company-specific specifications, but released because it might be useful to others.
- Yarn - A small dialog editor created for a specific game. I added in the glorious ace editor to help with syntax highlighting for their specific usage case.
- ntc.js - ntc or “name that color” is a small project that takes a hex/rgb color and converts it to a “real name” – I rehosted it (with permission) and fixed a small bug with it.
Not much new this month. I finished up
c for real, posted it, and it was pretty well recieved! Some other new things came up this month, too. Plus, I got to suffer through learning how to use OAuth. #oneofus
I also went to Paris this month for a week (and got engaged). It’s tough to be a developer and a tourist.
- retro-backend - The backend for Reactive Retro, written with SocketCluster. It’s my attempt to learn how to do things in a more scalable fashion.
- ng-cordova-oauth - A small OAuth library that covers a bunch of different sites. I added a small option for reddit!
- woin-starships - A small tool for “WOIN” (What’s Old Is New), a D&D styled system that was recently kickstarted. This was another effort on Herosheets’ part. Interesting to see what D&D systems are created these days.
This month has been the busiest month of them all. A few new projects appeared and I was spread out quite a bit on these projects – 16 projects total this month, I worked on! Couple that with the steam summer sale, beating Dishonored+DLC, and playing a few other games, it’s safe to say this was a jam-packed month. Not only did I set up this blog, port my old gists to it, and redo my website/DNS, but I also found some time to make some cool new stuff and contribute to some projects!
- squelch - Just this week, we (the same we from above) started again on an IRC client. We made one a long, long time ago. It didn’t turn out so well, but now we’re coming back to the idea with new ideas and way more experience.
- d3-cloud - D3-cloud is a library for D3.js that generates a wordcloud. It looks pretty nice! I contributed a small documentation change.
- kurea-contrib-wordcloud - A wordcloud plugin for Kurea. Simply, it generates wordclouds for different IRC channels. I had some trouble using d3-cloud at first so I ended up going with another library. Overall, this was a pretty fun project – Kurea needed some internal work to have a webserver, but past that, smooth sailing.
- seiyria.github.io - This blog, you’re reading it!
- vf-styleguide - I set up a styleguide for my place of employment to help explain why we do what we do design-wise, with some examples of both good and bad things.
I’m sure there will be a few more commits for me trying to figure out how to post this, too.
Unfortunately, also, this doesn’t include issues opened or closed, sadly, but IdleLands (the biggest project by far) got 467 issues from me. I probably opened issues on at least 50 repos in the last year, and I’d wager about half of them got resolved. I’m hoping GitHub adds support for retrieving all of this information in a nice way – I’d really like to get my hands on that data!
Discipline / Motivation
By around december, I realized that my GitHub streak was pretty nuts. I joked that if I kept going, I’d hit a year in no time. I got a bit farther and realized that, hey, why not, lets shoot for a year of GitHub – that’ll be something interesting to talk about. Then, I hit burnout (just look at the block of pale green) and it was pretty difficult to keep going. However, I am also in the mindset of having no “zero days” – days where you do nothing to work towards goals, dreams, etc. It took a lot of discipline and motivation to make it this far, and it’s going to take way more going forward, but I’m up for the challenge. Discipline keeps me doing something every day, and motivation keeps me interested in my projects.
That said, keeping at things like this is pretty difficult to balance with a social life, a now-fiancee (hi Rachel!), full time work, and occasionally visiting family. I gotta hand it to everyone that I know, though, the support I get from them helps a ton – lots of positivity is a good thing.
So, the tl;dr here: good life balance and lots of discipline with a sprinkle of motivation
Next goal: 2 years. @jdalton is getting pretty close, I wonder how he does it.