December 31, 2020
I only realized this after the fact, but August 2020 marked the 10-year anniversary of the first time I started posting coding examples to the internet. With less than twelve hours left in the year, I want to take a self-indulgent trip down memory lane to look back on where it all started, and where it’s all going.
Since my first programming class back in high school, I would spend a lot of my free time playing around with coding projects, never post them anywhere, try to do too much, and quit before they were finished.
I’ve always had an interest in education. I was a tutor in high school and college, and I actually started college with a plan of becoming a high school English teacher. I soon changed my major to Computer Science, but I saw my hobby projects as being separate from the idea of teaching or helping others.
The approach that Kevin Glass took where he would work on libraries that he then released to the public gave me a bit of an ah-ha moment. I realized that you could make hobby coding projects for yourself and for other people at the same time. That sounds a bit obvious now, but at the time it was an important shift in my thinking that really stuck with me.
With all of that in mind, in August of 2010, I started a blog with the goal of finishing more projects, and releasing stuff that other people might find useful.
I challenged myself to create, and post, one example program per week. The programs were mostly for me, but they were all open source, with the goal of giving other people a starting point for creating their own remixes. You can see a lot of what eventually became Happy Coding in that first blog post.
I don’t know how long my one program per week challenge lasted, but I did put together a couple dozen little programs over the next year or two.
You can still check out these programs (or at least the pages where I posted about them) on The Wayback Machine.
During this time, I was also pretty involved in a few online forums. I started out on the old Sun forums, which eventually became the Oracle forums. I was a moderator on a couple Java forums, and I hung out on Java-Gaming.org. At the time I saw it as just wasting time during work, but in hindsight I think maybe I was scratching the online mentorship itch.
The website where I put all my little programs was a bunch of static HTML files that I maintained myself. I knew nothing about web development, but I did know there must be an easier way to update the layout of the page that didn’t involve manually editing 25 individual files.
I went through a very inefficient process of learning about server-side programming. My original goal was to make it easier to do stuff like change the layout in one place and have that reflected on every page. Then I made myself a UI for uploading a program, a screenshot, and some text, and automatically building the HTML from that. None of this was ground-breaking stuff, not even back then. But it worked, and that’s the important part.
My little programs were Java applets, and there weren’t a lot of options for hosting applets on the internet. Back then, everybody was using Flash for their games and weird internet toys. (I’m writing this on December 31, 2020, which is Flash’s last day of official life.) I decided to open up my little Java applet uploader to other people, and Static Void Games was born.
Static Void Games grew to include not just the original uploader, but also a blog system, comments, ratings, events and notifications, and a forum, almost all of which I wrote from scratch. In hindsight, a lot of the technical details are pretty embarrassing now (JSP all the things!), but I learned a ton about web development by building Static Void Games. If you were creating a similar site today, most people would tell you to use a framework that does all the work for you. But I think there’s a lot of value in learning the fundamentals, and you can still see that in the tutorials on Happy Coding.
When I first launched Static Void Games, somebody asked me what I would consider a success. My answer was that if a dozen people uploaded a game, I’d consider that a huge victory. But during its life, people from all over the world uploaded over a hundred games. I know that’s not a big number by today’s standards, but I was truly humbled by the idea of other people using something I created.
During this time I got more into creative coding, Processing, and Ludum Dare. I also had a very vague notion that maybe I’d like to become an adjunct professor. I read that you needed a master’s degree to apply, so I went and got myself a master’s degree. By the time I finished it, I was no longer super interested in becoming an adjunct professor, but oh well! I was still scratching that education itch. I also added tutorials to Static Void Games. My idea was that people would come to play games, then learn how to code, and then upload their own games.
You can still check out what Static Void Games used to look like on The Wayback Machine.
After some soul-searching, I decided to shut down Static Void Games and start fresh with a new site dedicated to tutorials. Here are the very first notes I scribbled while trying to figure it out:
Static Void Games got its name because
static void are among the first things a new Java programmer writes. I was originally going to call the new site “Size 512” because the
size() function is one of the first things a new Processing programmer writes, and 512 is a nice round computer-y number. That idea didn’t last very long, and I eventually went with Happy Coding instead.
You can also see that I thought about hosting everything on Discourse, or representing everything as JSON. Then I discovered GitHub Pages and Jekyll, and on June 9, 2016, I created the first commit to Happy Coding’s repo and started building the site. A month (and two days) later, a Google recruiter noticed all my GitHub activity and reached out to me. And that’s how I got a job at Google!
Happy Coding not only got me a job at Google, but it has also continued to be the driving force behind a lot of what I do for Software Product Sprint, which comes pretty dang close to my dream job. It has also allowed me to meet some of the amazing folks in the Processing community and to participate in CC Fest, which also comes pretty dang close to my dream job.
After writing new and improved p5.js tutorials over the past few months, “the bones” of Happy Coding are just about finished. I don’t really see myself adding another big tutorial section, at least until I’m forced to learn TypeScript and Kotlin.
Instead, I want to focus on building out the examples section of the site. I’ve always learned best from playing around with code, so I intended the examples to be a first-class citizen of Happy Coding. The problem is that tutorials take a ton of time (for me) to write, so I haven’t had much time for examples. I’m looking forward to the change of pace.
It’s funny that my plan for the next year looks a lot like my original blog from ten years ago. I’m not sure if one example per week is the right cadence- part of me wants to try for one example a day! But either way, it’s cool to see it all come full circle.
Here’s to the next ten years. See you in 2031.