I participated in Codevember 2017, creating and publishing a new WebGL sketch for 30 consecutive days in November.
The commitment of producing creative content everyday for a month is practiced by artists from all media. Since 1999, NaNoWriMo (National Novel Writing Month) is a global community of writers that attempt to write a 50,000 word novel every November, and illustrators share a new sketch everyday in October during Inktober. Codevember is a similar idea, challenging software engineers to publish some creative coding everyday in November. Participating in these challenges can provide structure and community while encouraging the discipline of making something everyday. The challenges are useful frameworks for practicing with an unfamiliar medium, experimenting with new techniques, or ensuring progress on a larger project.
I've never been involved with creative dailies like this, and I was interested in how I'd handle the constraints and commitment. It was also a good opportunity to improve my 3D math and shader skills. I initially used daily themes from codevember.xyz, but ended up following my curiosity most days.
What went well
- I made 30 things for 30 days straight!
- Creating, iterating, and reusing base classes to quickly get a rendering boilerplate paid off, and still using those components months later.
- Opportunity to work with Caitlyn Crites' in-development typeface (day 13).
- Had a day to break out my toy WebGL library for a scene (day 10).
- Learned about Barycentric coordinates, using them in shaders for an edge effect on 7 different days (day 14).
- Volumetric lighting turned out pretty well (day 18, day 19).
What didn't go well
- A single day isn't always enough for some complex techniques. Implementing volumetric rendering took a whole Saturday (day 18), leaving little time to get creative. I was able to use this technique once more later that month, but didn't get much usage due to the fast paced and (personally) varied focus of the challenge.
- Working in experimental computer graphics does not afford continuous visual progress. A pencil sketch or short story could turn out poorly, or fall short of some goals, but the sketch or story would still be a shareable thing that exists. When experimenting with computer graphics, sometimes a technique either works or doesn't, trading incremental visual progress with just a black screen.
- While the web's long tail surpasses all other platforms, there have been platform changes on some browsers since publishing, requiring changes to the content to continue to work.
- On top of work and life, there's not a lot of time to come up with new ideas, let alone implement them. I phoned it in some days, cranking out anything in 60 minutes just to go outside.
- Stressful! Those around me were more than patient.
Would I do this again?
Maybe! It was exhausting. I'd avoid any experimental/new techniques if each day is to be unique and new, there's just not enough time. I think having a more focused scope, like making 30 unique fragment shaders or 30 procedurally generated plants, would reduce the amount of "black screen" time during development.