DEV Community

Discussion on: Programming as a Job and a Hobby

Collapse
 
joshcheek profile image
Josh Cheek • Edited

I hyper avoid commitment and then just code for short durations on things that sound fun or that let me expand my programming toolbox. I only have one open source program that I still maintain, and I mostly only fix bugs in open source now (vs adding features), unless the feature is obvious and not at odds with the existing code.

Here are examples of fun ones. They all took somewhere between a couple of hours and a couple of days, and I make a video, stick the code in a gist, and walk away from it. I got the takeaway through the video, the code is there for reference, the investment was minimal, there is zero expectation of maintenance.

Here's some examples that let me learn something new:

  • Drawing 2D images with Fourier Transforms: vimeo.com/267305699
  • Sandpiles (a visualization of a type of number, I get a lot of ideas like this from watching math videos like Numberphile) vimeo.com/243339375
  • Lissajous Curves (learned about this idea from people embedding animations inside of songs that you could see with an oscilloscope!) vimeo.com/248529729
  • L-Systems learned about these from what I originally thought was the most epic blog post ever, and later realized was the first chapter of "The Algorithmic Beauty of Plants", which I've since purchased. vimeo.com/248529775 (I've got quite a few L-Systems ones, actually, eg also a more artistic interpretation vimeo.com/192480996 and a tour of the interesting ones I found vimeo.com/192819855)
  • Going through a tutorial of Unreal Engine vimeo.com/235102921
  • Making a Sketchup extension: vimeo.com/222228677
  • I try to write this program in as many languages as I can (currently 26, I think) github.com/JoshCheek/language-samp...

Another no-commitment short-term fun challenge: Make a tweetable program (soooo much easier now, with 280 chars)

  • Prints a Ruby on the terminal twitter.com/josh_cheek/status/1020...
  • This one kinda reminds me of Mario Kart's Rainbow Road twitter.com/josh_cheek/status/1014...
  • Here's a bunch that are mostly about obfuscation. I got this idea from Yusuke Endoh's book "Esoteric, Obfuscated, Artistic Programming in Ruby", which I think you can only buy in Japan. But, he's my favourite programmer, so my friend who lives in Japan bought it for me and brought it back for Christmas!

There are also some good places to find small programming challenges:

  • I've been following Ali Spittel's hash tag #CodingPuzzle, which is basically the perfect format for me.
  • Project Euler is really great. I once had ~140, but I couldn't find the code anywhere, so I started over (here).

IDK, that's all I can think of at the moment. Basically play with lots of things, try to get a nice takeaway that you can look back on and enjoy, and avoid commitment like the plague!


Oh, thought of one more, but don't feel like looking them up: write mini/shitty versions of the libraries you use. Since I mostly do Ruby, I'd do things like writing RSpec, a rack webserver, a rack web framework, rake, etc. It's super super informative, lots of fun, and the same low effort / commitment as the stuff above