Ask HN: Hobby coding that doesn’t feel like work
Hi HNers!
I’m curious about what practices you do when coding for fun?
For example, I’d use a different desk/space from the one I do my daily work, or work from a coffee shop, or from the sofa with a laptop. I’d also use different tools and languages.
But sometimes I find that even though I want to learn X or play with project Y being on a desk in front of a computer still feels like work.
Do you guys have some practices to make hobby coding fun?
Thx
76 comments
[ 4.1 ms ] story [ 134 ms ] threadI often use browsers + javascript because you very quickly get a result. I have some pipelines to convert data formats ready though.
I am not a talented painter, but with some training everyone can put out decent images.
Instead of using different tools and setup, try picking different projects or domains you love. For example, if you're a web developer by trade you may write compilers, games, or text editors for fun.
1. sprints 2. minimum documentations 3. no test cases 4. only one git branch 5. run on barebone VM
I don't want agile + code review + PRs + git merges + container. I want the least amount of friction between me finishing typing code to running that in prod.
From time to time I write code/pseudocode on paper. It can be lots of fun! And it can help one to think about the concepts/semantics without the immediate stress that the code needs to run/compile ASAP.
Most of the book is built around fun side projects I have done.
Think quiz/reaction time/mario party type minigames
Doing pcb design, soldering, network communication and state management between microcontrollers, 3d-modeling and printing, (to protect the bare pcbs), etc. is new to me. Also creating expansions or twists on existing games keeps my mind going and does not feel like work.
It's more rewarding to me, and easier to show off to non-coders.
At one point in the game i had to implement a sorting function or something like that and i noped out because it very suddenly felt like work.
Such a diverse topic where you can do a lot of stuff, learn a lot of stuff (x86 assembly, reverse engineering, etc) and you can achieve things like free-cameras, spawning npcs, and understanding how the game actually works at a lower level.
With that, I like to experiment with different languages, I started doing it in C++, moved to Rust, but I also tried Zig and Nim, and since they are all 'system programming languages', and you can interact with FFI, it means you can do fun stuff.
One of my latest projects was to spawn lights in a certain games because I know some folks that likes to take photos inside games, and it was such a fun project to understand how the game manages entities, how to spawn entities and how to control them using an injected imgui.
It feels nothing like work and it's very rewarding.
adventofcode.com
Good time to ask this
I dedicate considerable time to "hobby coding", including open source, and once a topic - independently of the topic - reaches a certain depth, it becomes "work", and then, the only difference with the daily job, assuming a healthy work environment, is just the choice of the topic.
Documentation, test suites, orderly repository history are not just corporate frills. Once a project reaches a certain size, the developers are, in a way, users themselves. If an open source project is even mildly popular, chores will need to be performed, which includes taking care of the users (this is actually why a sad amount of open source projects ignores PRs and issues).
So if it feels like work, while I can't say with certainly, I believe that you've just experienced how hobby coding of a certain depth, is in real world.
Ultimately, the only answer I can give, is to choose the topic very carefully - one may find that the topic that really tickle them are fewer than one would think.
It was a path from a very long soul searching effort. After some 18 years of professional career as a SWE I was really tired of anything related to programming. Finally I got to find something that actually motivates me to learn like it was when I was a young kid and programming was a fun and creative hobby.
I got into it after meeting so many incredible people in circus, dance and other performing arts and watching them struggle to make their dream projects come true due to a lack of technical software/hardware skills and lack of money to hire specialists for their projects. It gives me a lot of joy to get into their creative processes and dream together the possibilities, to push my skills to areas I had never worked with and to actually provide value to a community of artists, to be part of a creative process is also pretty magical to me.
Before this I went through a long lull of motivation to code anything outside of work, to study anything related to programming outside of work needs. I don't get any joy anymore from dreaming about apps and products that I could sell, they all just seem like a boring job on top of my job. Actually creating something related to the arts has been very, very refreshing to my soul.
I imagine your skill set is very rare in that community.
For my current project I'm creating vests with the 9-DOF sensor + Wemos D1 that connect to a central server and this server is a central dispatch to communicate with other stage parts (similar to the architecture of the Philips Hue Bridge). I have an Adafruit HUZZAH32 to control some stage lights and other equipment (fog machines, etc.).
My idea is to enhance the job of the light designers, instead of them having to choreograph with the artists every movement they can instead select areas of the set that should be reacting to the artists movements and the light FX are triggered by those movements at the points the light designer select as focus for the part.
For programming I'm mainly using CircuitPython or MicroPython as I love Python for the ease of prototyping and iterating over, and there are libraries for all the components I've needed so far :)
Edit: I've also started to look into DMX to integrate these tools into the normal workflow of stage lighting/FX.
>being on a desk in front of a computer still feels like work
Ultimately I couldn't get past this, even for gaming. I got a Steam Deck instead and mostly just use that and/or a tablet with a holder in my bed now.
The drudgery of my job comes from all of the stuff surrounding the code: tickets, meeting, code reviews, meetings, time cards, meetings. When I work on my hobby code, all of that goes away, and I can just code.
Sometimes it's frustrating. Sometimes I'll bang my head against a problem for a few hours, or a few days, then have a sudden "a-ha" that makes everything work. That is agitating in the moment, but the "a-ha" makes it worth it.
It also helps that the domains of my work and hobby code are completely separate. When I write code for fun, there's no enterprisey stuff going on. Right now I'm working on some code that generates character sheets for an RPG. There's no database, no Keycloak, hell, there isn't even a server. It feels a lot more like the toy code I wrote in college than the professional code that pays my bills.
If your hobby code doesn't bring you that kind of joy, you might be better off finding a different hobby? We don't need to chain ourselves to an IDE 24/7.
I love teaching, I always have fun doing it. So the hobby coding ends up being fun and rewarding. Sometimes they'll come up with an idea that I quite like, so the aded outside creativity also makes it fun. Some ideas recently we might even release at some point, this also adds a bit of excitement.
For example I fimd it interesting to write HDL for the nand2tetris but I absolutely hate writing leetcode. But I also know many people enjoy writing leetcode so it's personal. You have to find something you are willing to learn so the fruatration is overcome by the joy.