https://web.eecs.utk.edu/~azh/blog/makinguselessstuff.html Austin Z. Henley Assistant Professor azh@utk.edu @austinzhenley github/AZHenley --------------------------------------------------------------------- * Home | * Publications | * Teaching | * Blog | * CV --------------------------------------------------------------------- Why I prefer making useless stuff 5/22/2021 "I think the #1 project every programmer should try is a project that has customers." - jfoster on HN "Don't waste your time on homework problems." - anonytrary on HN --------------------------------------------------------------------- Update 5/24: See the discussion of this post on Hacker News and Reddit. I get a lot of responses like this about spending time on useless projects. But you know what? There is nothing I find more liberating than to spend a Saturday afternoon coding on some toy project. There is no expectation or obligation to ever become more. It is just for fun, learning, and curiousity. I can add whatever features I want. I can use whatever technologies I want. I can throw it all away if I want. These are the projects I yearn for and look forward to when I'm busy with work. Perhaps George Bernard Shaw was on to something: "We don't stop playing because we grow old; we grow old because we stop playing." Funny enough, Titus Barik published a paper that contributes a qualitative analysis on the sentiment of programming and play on Hacker News. The themes he found include play as artistry, catalyst, fun, playgrounds, spontaneity, tinkering, and anti-work. There is a quote that I particularly like, "The joy of programming for programming's sake is something you do in your own time." [uselesspro] It all makes sense to me, because I have spent a lot of time building useless stuff. Mostly compilers and game engines. To name a few projects: * Nash, a low-resolution HTML5 game engine with no dependencies * Wiggleface, a very low-resolution game engine using Pygame * HarvestMemory, a game where you code a bot in an assembly-like language * Knox, a compiler for my own language that overemphasizes "explicitness" * cosine, an implementation of cosine from scratch * SirDrCaptain, yet another static website generator that no one uses * goforth, a bad implementation of the Forth language * CHIP-8 virtual machines, I think I have made a dozen of them * Darkest Days, a remake of my favorite Flash game And if those aren't enough, I have several more useless projects planned! I can't wait to get started on them: * A typed Lisp compiler with a focus on performance * An interpreter for my own language that feels like old-school PHP plus dataflow programming * A "better" CHIP-8 that supports networking and sound * Two different todo list apps for iOS --------------------------------------------------------------------- Do you need ideas for useless projects? Check out my two lists: * Challenging projects every programmer should try * More challenging projects every programmer should try Whatever you do, don't forget Bob Dylan's wise words about the things you enjoy doing: "you're gonna have to serve somebody".