Also, being way more selective with personal projects. Having too many of them can make other, unrelated projects at work miserable, by messing with your schedule.
When I had my own note taking app, it would sometimes take an hour a day. That's more than enough to affect social life or make someone tired at work the next day.
Especially with hardware related projects as those can also make a physical clutter problem.
I enjoyed personal things a lot more once I started layering on all the best practices, same as I'd do for a work project.
And work projects, I've started doing things like type hints for everything not just "stuff that seems big enough to need it", rather than the usual "Just enough" method that a lot of people seem to use.
Before that I wasn't really happy with the quality of anything I built myself.
Now, projects get more reliable and often more performant over time, and I don't feel like I'm just spinning in circles writing garbage, and I'm actually learning new tech and practices I'm actually going to use in the future.
Also, Gitmoji, badges, and all the current trendy things people do with readme and documentation might not actually be that useful, but they sure are fun.
I've started doing block quotes under title headings, like novelists used to do at the beginning of a chapter, and using retro web 88x31 badges.
Just to play with computers like I used to play with legos. And then close the potentially unfinished useless pointless messy unmaintainable broken software project, never to reopen it, and be content that I had fully achieved what I had set out to do.
One bit from it, not even the most quoted:
"Yet the program construct, unlike the poet's words, is real in the sense that it moves and works, producing visible outputs separate from the construct itself. It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be."
I'm very capable in group settings, but it's far less fun for me. It's a continuum of the larger the team, the less enjoyment. Working on projects I choose, alone or with one other person, is the environment I enjoy most. There are tradeoffs with each, but I prefer those constraints.
In general, generative art (using the pre-generative-AI meaning, i.e. procedurally generating art). There's something really satisfying about writing code in a creative context, because there's often no right or wrong. Often you write a bug, or your algorithm didn't work as you expect, but it looks interesting, and that becomes a new path to explore.
A few years ago, I started writing about simple things that I learn during my day-to-day work. I write on my personal [site](https://rednafi.com) that I cobbled together in a single weekend.
It doesn’t take much time and works as a great confidence booster when a few of them eventually hit the front page of HN.
Now I often pick up new things just so that I can write about it.
It's not programming but playing around with Blender has been really fun too.
I want to spend time working for the customers, not for bosses who don't care about customers.
I never really lost my love for programming, but twenty years in the n-th commercial project in the more common languages (plus a front end based in whatever combination of JS frameworks is the new flavour) really ground a lot of the original creative joy out of it for me. The interesting bits got too easy and the hard bits got more uninteresting.
Elixir is a breath of fresh air; it's purely functional so it requires thinking a bit differently, but it's accessible enough to start easily and pretty enough that it's not a soup of parentheses (looking at you, lisps). It's practical and well suported enough to build a wide variety useful things, and very good at concurrency.
It's what I really wanted Ruby to feel like.
But when I do have the time and can craft an elegant defun or two, I love programming all over again.
edit: Current 'itch' appears to be a decent repo mirroring system. DockerHub, ansible-galaxy, npm, .deb, .rpm - soo many repos that need to be mirrored locally to have a sane build system. Thinking 'pulp' (0) might be worth a spin
We spend so much time texting each other that it has become transparent, so one expects a cute little chatbot or small game to show up, and it delights people!
I recently made a framework to allow playing Twine games through iMessage and people really love it:
https://www.mayer.cool/writings/imessage-text-adventure/
Another one that brought a lot of joy was hooking up a friend’s iMessage to immediately respond to all messages with a chatbot. It was before ChatGPT came out, so it was just convincing enough to have people for a few messages, but scuffed enough to have some very funny off-kilter responses. It sowed a lot of chaos in our group chats :)
Beautiful hardware and Unix OS with the fit and finish you get from having both provided by the same vendor.
It made me feel a bit more creative and less like someone who grinds out code.
I realized I disliked the way that job market works. Too much stress; clients and bosses putting too much pressure on my daily work; lots of stupid tasks to be finished ASAP...
At the end several friends of mine and me created a workers cooperative for doing programming jobs. We share projects and decide which ones we want to take. There is not that overwhelming duty of finding new clients as there is one person who does the research and business actions.
Everyone does what they want and we mainly focus on jobs we like and the way we prefer.
ChatGPT is the most inspiring thing every to happen to programming for me.
A powerful programming assistant at your side is an incredible skill multiplier.
It make it possible to build certain types of applications in a matter of hours instead of months.
I stopped trying to make my little experiment apps in React Native and restarted with C# and I'm much happier. I'm using Avalonia since apparently Xamarin\MAUI is not in a good place lately.
Much like the best camera is the one you have with you, the best programming language is the one you like enough to actually make stuff. The problem is whether one you like is supported on the platform you're coding for...
It's an incredibly pleasant and fun hobby this way.
So many creations are done with the hubris, imagining that we know what we are doing, that we've figured out the possible uses & can diver them.
I love working on open ended things, where we are trying to create possibility. Not just picking from possibilities.
lua/love2d
microcontrollers, robotics and electronics in general
industrial process engineering - nothing like seeing huge machines make stuff you imagined
gentoo
teaching children
when your venture actually pays out and you get some financial security back and realise you just won the lottery of life for a second or third time
Maybe it's the environment? The language? The community?
I think certain people's brains work better with different languages. Often there's an overlap with community. I started my career in ruby, and still write it as much as I can, though these days, not usually for "work". I love writing it, and it's creator wrote it to be loved when you're writing it. Even though python shares a lot of similarity with Ruby, I find it frustrating in a lot of the little details and design decisions, and I just don't enjoy writing it like I enjoy writing Ruby.
I don't particularly enjoy writing javascript, but I've always enjoyed writing Swift. I also enjoy go, though find some of it's design decisions on the margins perplexing, pedantic and annoying.
Experiment with different languages. Find something you understand, that your brain doesn't have to fight with.
Also, get a hobby that has absolutely nothing to do with computers. Do something tactile -- baking, carpentry, fixing things. The raw difficulty of manipulating things in the real world is both deeply satisfying, and gives me a deeper appreciation for the ease and elegance of manipulating computers with software.
Hope this helps. Good luck.
What reinvigorated it first was learning FP/Lisp and especially Scheme (this was approx 2009).
I began to lose it slowly over time when experiencing the difficulty of just writing good, reusable code in the context of OOP style larger-scale components that invoke pure functions - I used to call this "OOP in the large, FP in the small" - it began to be clear to me that I couldn't make this work in a sane way, details are out of scope of this comment.
I recently (beginning circa 2018) began to re-rediscover this passion through learning haskell and really experiencing how well a simple impure/pure breakdown between code works out. In hindsight, it seems obvious, but I couldn't see it until really learning haskell and how all that works itself out.
I’ve being doing mostly mobile apps for the last 10 years, tried Rust for fun for a couple of months, recently tried C++ and I’m having the time of my life.
Btw, not sarcasm, now looking into C++ jobs
It's actually a far bigger problem than mere developer joy. These people ruin everything especially the organizations they work at and their own careers. We're better than this, and I hope any upper management or execs who read this take a harder look at their organization.
It's as if we're so afraid of success that we put more easily replaceable idiots in management. I also get the fear of promoting senior developers because they don't always think or communicate the same way, but yes that's exactly my point. In many cases the devs don't even want those jobs. You should seriously wonder why. Many organizations have been rotting for decades now.
But they have to be total nonsense with zero possible market or viral capability. That way I never let the wrong reasons guide my design: it’s only ever for fun. Maybe learning.
Now with that shit gone, my head is clear again and I had fun diving into all sorts of experiments again!
I fell out of love for programming after working at too many feature-shops where we'd churn out feature after feature (and in some cases blindly remove features), with nearly zero feedback from real users - just input from product managers with zero domain knowledge.