Published: July 18, 2021
I was talking to a friend recently about hobby coding and ways to code creatively. In the course of that conversation, I was able to put a name to one of my favorite tactics: creative limitation.
A quick internet search seems to associate the term with Phil Hansen and more traditional art, but I think it applies nicely to coding too. For example, with this site, I've chosen to restrict the tech stack to the OpenBSD base system. It wasn't the initial goal (which was to learn mdoc(7)), but I quickly realized that restricting to base would give me a better chance to learn base.
Overall, I'd call it a success. The Jam Tuesday setlist project gave me a chance to learn some sh(1) and sed(1), and my blog was a chance to learn mdoc(7), and the site's build system helped me brush up on BSD make(1).
I'd encourage you to try it -- set an arbitrary restriction and see where it takes you! Here's a few ideas to get you started:
The goal, for me, is to choose a challenging project that helps me understand a technology I use daily but may take for granted (windowing systems, VCS, email, parsers, etc).
Restricting size helps understand what the core definition of a technology is. Building clones can help teach edge cases and design decisions one might otherwise overlook. And in all cases, it's a good chance to learn a new language!