281 comments

[ 2.9 ms ] story [ 213 ms ] thread
I love making tiny projects for fun and not for profit, using tools I enjoy working with and not tools I would need to scale to a trillion users, trying ideas I like and not ideas I can monetize. I almost forgot why I enjoyed coding.
I build a lot of "useless" stuff too. Where by useless I mean useful to me, but isn't ever going to have customers.

A. Educational value is a thing. Not everything needs to be a business with customers. Not every project needs to make money. Many of my projects teach me something about science, tech, or arts.

B. Fun is a thing. Building stuff is a way to enjoy life for me, similar to spending time on the beach.

A couple of my more "useless" projects:

https://dheera.net/projects/4x5/

https://dheera.net/projects/mnist-clock/

https://dheera.net/projects/einkframe/

https://dheera.net/projects/shoji-lamps/

Someone who wouldn't want to undersell those projects could use the term art instead of useless.
Oh I just called them "useless" in mockery of the HN sense of the word, i.e. in the same sense of the word that TFA speaks of: not being able to scale it into a unicorn startup with customers.

But yes, they are useful to me as art, as educational projects, as fun, etc.

The biggest reason to make useless stuff instead of useful stuff is to avoid harassment. If you have something useful on GitHub then entitled users will come out of the woodwork to request features, report "bugs" (read: the user is doing something wrong), or otherwise expect free work out of you.
Let them know they are free to make a pull request? I don't see this as a reason to specifically avoid useful stuff.
That's precisely the point. They aren't free to make a pull request. A pull request puts a time demand on the project owner to review and merge the patch.

What they are free to do is fork the project, and do whatever the hell they want to in the fork.

I haven't gotten any feedback on my github stuff (which isn't quite useless, just not useful to many), but it's pretty easy to ignore feedback in general, and it's not too hard to turn off issues; not sure if you can turn off pull requests though.
Wasn't really my experience. Besides, github have tons of useful smaller projects that either don't have any issues filed by strangers or have them while author happily ignores those.You have make something pretty big to have big enough community for it to cause issues.

And if that really bothers you, you can turn off issues in github.

Offer them a refund
That is an excellent idea. I hope I'll never have to do that (haven't had to deal with this kind of thing so far), but I'll definitely try this should an entitled user show up in the future.
(comment deleted)
Or use the trick from Java Puzzlers (which may have borrowed it from another source):

Feel free to mail us your feedback written in pencil on a $20 bill.

> which may have borrowed it from another source

Probably Car Talk. Iirc they instructed that puzzler answers be written on the back of a $20 bill also. It was a great radio show!

I laughed at this one, thank you for that
> If you have something useful on GitHub...

make the repo private or close contributions then?

if it's going to be useless and only be used by yourself, you might as well blog about it and move onto the next useless project.

hell, there may be no need to place it on github for these sort of projects.

I would suggest you may not be the right person to use code in these repos.

For someone like me sometimes I'm looking for a small sample of code that fits a pattern. I could careless about the project. Sometimes you need an odd piece.

Saying his code doesn't belong on github tells me you might not belong on github.

> Saying his code doesn't belong on github tells me you might not belong on github.

you're right, most of these 'unpolished' projects can go on gitlab, bitbucket or another git hosting solution instead.

Terrible advice from an educational perspective.

I use Github all the time to find code samples, especially for 3D stuff, shaders, audio, emulation, demoscene... It's more common to find solutions to my problems in zero-star projects than in big ones.

Lots of people star my code-as-art experiments too, and from the forks I can see they find educational value in it.

Not everything in the world has to fit perfectly into some preconceived mold. Heck, in that case, the most interesting/educational things are trying to avoid that.

throw it on gitlab then?
How about no?
yes, since this works for most useless projects, I know a developer that uses gitlab for this purpose.

works well and you can self host it you should try it!

There's nothing to be gained by anyone by using this approach, and a lot to be lost.

Gitlab/Bitbucket are not "dumps" for projects you deem useless, and "useless" projects are not useless at all from an educational point of view. Gitlab and Bitbucket are exactly the same as Github and should have both "serious" and "useless" projects the same.

Using a personal Gitlab instance or anything similar for that is a terrible idea because it costs substantial time and money of individual developers and severely hurts discoverability.

People should put their "useless" projects wherever they want and are permitted to.

Who says I want 'discoverability', after all we are talking about useless project born of a hobby no?

Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.

I also don't want people to have to bug me for feature requests as well on top of that.

There is a reason GitHub/Lab/Bitbucket has private repos for this purpose.

You can obviously choose to share it, but you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features.

> Who says I want 'discoverability'

I never said you wanted anything. I'm the one who wants to have 'discoverability', both for my projects and other projects that might interest me. It's you, for some unknown reason, that don't want me or anyone to have it!

> Not everyone wants to have to share everything that is useless with the world especially if it's only going to be you.

Then don't. But don't demand that of others.

> I also don't want people to have to bug me for feature requests as well on top of that.

That's perfectly acceptable, and I never implied it wasn't.

> you shouldn't be whining if your 'useless' hobby repository suddenly becomes the focus of attention of developers requesting more features

That seems to be your problem, and you're the only one in this discussion complaining about it. Looks like you're projecting your issues onto me.

Anyone who thinks github code should be polished and supported or hidden from view is going to be sorely disappointed in my island of misfit experiments, but I really couldn't care less. I didn't put it on github for fame, exposure, or resume fodder, I put it there because they host my repos for free.
gatekeeping github... classic

agree with the others here. github isn't some place where only published packages go.

This is one of the downsides of programming-as-a-art: if you create paintings you may get feedback and requests for more (or less) - but you’re unlikely to get bug reports.
Try making actual art with programming, eg demoscene or quirky twitter bots or programs that automously paint paintings, and you'll get way fewer bug reports.
I wonder why people are so annoyed or upset by this.

If you don't want to support an arch/language/platform, etc. just say so in the readme (all arch/languages/platforms besides ____ are unsupported.

People expecting things are pretty par for the course on the internet... Just be firm and curt. Close the issues quickly and refer to them if reopened.

People are annoyed because when your project gets big enough (or if you're just unlucky), that doesn't stop them.
Is it possible to ban users from posting issues on GitHub to your project?
You can turn off the "issues" tab in your GitHub repository via Repo Settings > Options > Features > Issues.
Then they go and search for your email address in your commits. Some of these people are really persistent.
If individual users are being persistent and causing problems, you can ban them. But if your problem is caused by a large number of different users, each coming across the project for the first time and creating annoying issues/PRs, banning doesn't help.
Or just ignore them. Don't engage with the message either physically as in typing a response, or even just mentally. Skim and move on.

That people send unwanted messages on the internet is the most common complaint I see regarding the internet that I just cant empathise with at all. I just really dont get it. Possibly has something to do with my first couple years online involving 4chan.

My biggest reason is that I don’t have to finish. When I get bored with it, I move on.

I used to put pressure on myself to “finish” and would often miss and feel guilty. Not just computer projects, but electronics, learning musical instruments, etc.

Then I realized I was making my hobbies work and doing it badly. Real work (where I have to finish) got in the way of my hobbies. Hobbies are supposed to be fun, relaxing, and rewarding. What was I doing?

I gave up the pressure and it was liberating. I pick up the guitar for a couple months, then get lost in trying to make analog circuits. I tinker in the garden then teach myself enough CAD to do a small woodworking project. I started sewing masks and tote bags then set it aside. I fish a bunch in the spring and fall. Then, I’ll revisit them later when the muse hits and don’t feel like I wasted money.

Now my only goals are to have some fun, relax, and learn something new.

I really only program for fun in languages I don’t know or platforms I haven’t played with. I learn by picking up a project that scratches an itch.

Sometimes those feed back into my work (eg Go, Kotlin), but most don’t (various LISPs, low level C).

My issues are exacerbated by my ADHD, but I would recommend the approach to anyone with a steady job they enjoy. That and not using TV/movies as a hobby. There’s just so much cool stuff to explore.

Yeah learning things is so fun, and also so is just having a bunch of weird skills you're competent or at least knowledgeable at.

I won't post my list of accumulated learnings because it's about as good a personal identifier as my SSN. But it's similarly scattered as yours and I love them all even the ones I haven't used in years.

It's really become the way I orient my life. What bizarre or useful thing I'll get into next is always the big question now.

:). Yeah, it’s a running joke at work that I can take any devolved meeting and turn it into a lecture on some random topic.
I would image that satisfaction I'd get from having people actually use my code would greatly outweigh the inconvenience of being pestered about new features.
There’s definitely something uniquely satisfying about knowing that code you wrote is saving other people time or helping them create things. The beautiful thing about programming is you can solve a problem once for yourself and also end up end up solving it forever for everybody.
I'd imagine that it is satisfying, yes. But I think you may be underestimating how little other people will value your time in asking for help using that software. I have a colleague that maintains a popular open source project, and he spends a ridiculous amount of time answering questions about problems they're having, and very often those problems don't have anything to do with the software he's written, but the competence of the questioner. I had been considering developing a package, perhaps paid for with grant money, but the long term commitment that comes with it has scared me off.
must be nice to be so fortunate, but this is just regular nazi greed
Building useful stuff with a "user base" of one falls under that too. I'm my own customer.
Love the OP's attitude. It's perfect for anyone looking to explore computing as a medium.

The HN comments they quote (shipping for customers, and avoiding pointless homework) come from a very different perspective -- where the medium being explored is not computing, but rather the process of satisfying specific human needs in the context of a "market".

Both have their own value; it's just that they're completely orthogonal in intent and worth not conflating.

The quote attributed to me was on the topic of "challenging projects every programmer should try": https://news.ycombinator.com/item?id=21790779

It's not that I would recommend every project must have customers, but I do think that most programmers will learn & grow tremendously if they take on a project where they are trying to directly satisfy a set of customers. It came to mind because whilst there's a tendency to focus on projects that are technically challenging or interesting, I think such a project would perhaps prove even more challenging, albeit in very different ways.

I once tried to setup isomorphic Haskell webapp (haskell on both server and client) and i learnt a bunch of things. The result is useless, not practical but their knowledge is practical, and it's what matters to me, not the result.
> And if those aren't enough, I have several more useless projects planned! I can't wait to get started on them:

I feel like this is such a key technique for maintaining momentum with your personal projects -- always keep a list of things you want to work on next. I'll often find myself day-dreaming about the next thing on my list while I'm still tinkering away on my current project. After I realized how important this was for myself, I started noticing other people doing it too; apparently whenever Bob Dylan had an idea, he'd write it down and put it in a box. When it came time to create, he'd open the box.

A lot of people who insist on building only stuff they can sell have very little business sense. They rarely seem to know if what they're building has any real chance of making money. As a result, they end up building a lot of stuff that's both useless and boring.
Doesn't sound like useless to me, these projects sound very educational.
I didn't know anything about compilers, but I figured out how to compile Piet programs, so I wrote a compiler[1]. The project has stalled out for (a) lack of free time and (b) some silly ambitions, but I don't care what the public thinks about my lack of updates, and that's great. In the meantime, I've been going down weird rabbit holes and learning aspects of computing that I missed in school.

[1] https://github.com/boothby/repiet

I came to the same conclusion over the time. Mainly because I figured out:

When you want to build stuff for profit, coding is an afterthought. There are so many tasks necessary that involve zero coding. You essentially become your own product manager that needs to talk to (potential) customers, completely reevaluate your value proposition, do marketing sales. The more time you spend on coding, the higher the chance your assumptions about what people want are wrong.

If you want to spend 100% coding I would argue that's impossible to make profitably.

"Coding" is a small part of most software engineering roles though.

I mean I think I've written more code in 2 weeks working on useless hobby projects than I have in 2 years professionally. I'm not even exaggerating

Sounds like you aren’t working on a greenfield project, granted most people aren’t. But it’s not like that for everyone.
Most of the projects I do for fun is either project I know customers are working on, or stuff we already have at work. This gives me a goal, and gives me a sense of how hard the problem actually is. If it does work out, no one care, the thing already exists.

I also have a project I normally use when attempting to learn a new language. It involves naked women and copyright violations, but it get’s me around most aspects of a language and gives me a sense of how complete a language and its eco-system it.

> It involves naked women and copyright violations, but it get’s me around most aspects of a language and gives me a sense of how complete a language and its eco-system it.

You can't just leave us hanging like that. What's the project?

Custom "The Fappening" viewer?
One of the Danish newspaper have a page 9 girl (like the UK page 3 girl). One of the magazines have a "girl of the week" (they also have a male version if that's more your thing).

For my learning project, for the last four language I looked at, my code grabs the latest "page 9" girl every day, and builds up an archive. Because Denmark is a small country, the girls in the newspaper will frequently have appeared in the magazine at some point, to it checks their archive and try to build up a merged archive.

It's a neat little project for learning, because you need to do at least: http requests, regex, database integration, an web application (to browse the archive), scheduling and how to use modules/package/third-party libraries. Later iterations also adds a REST api, so I can use the project to learn how to write JavaScript application.

I'm curious how much money you make from the affiliate links on your site?
Is it useless? Compare coding these projects to Dorodango https://www.laurenceking.com/blog/2019/09/26/dorodango-blog/

Perhaps the act is the end in itself. The journey in this case is probably more important than the destination.

This is amazing. I totally see the parallel to coding little things that are 'useless'. It is a form of meditation maybe.

Working on 'useless' code is a sort of massage for the mind sometimes.

I think the important thing is that considering a project useless frees one of any obligation to think about its usefulness. It might not be useless but its value might come from not trying to be useful.

Which is probably what you meant anyway, but I think "useless" means two different things here.

Sounds like this is how he keeps his interest in coding alive and his ability to enjoy it in spite of getting paid to do it. If you only do what you get paid to do as a coder, you may grow to hate it and this can be career-ending. You could suffer burnout or just decide to quit or get fired and no one wants you anymore.

The first rule of sustainable productivity is taking care of the thing doing the producing. If that's a human, that isn't limited to physical wellbeing, especially if they are producing knowledge work.

I love this. I feel the same way as OP. Question in my mind is why is this? Can we understand what makes our own useless projects so engaging?
You accept from the start that you will be the only critic, user and contributor of the project, so you do whatever you want.
My own guesswork answer: a 'useless project' necessarily combines a personal interest with the total absence of external obligations. Productive work sometimes has the former property, but rarely has the latter.

A successful useful unpaid project might feel like an obligation, if there are users and a community around it.

Note: does not apply to Fabrice Bellard, with his remarkable talent for building incredibly useful software on a whim, on his own, in secret (at least initially).

The intrinsic urge to create. That and the fact that the creation is taking place outside of any coercive or exploitative relationship.
Sure its nice to be "loving what you do" and its always better than having somensort of external pressure.

Now saying you really prefer to do specifically useless stuff seems like glorifying a weakness for no reason. Why not leaving an open door to both have fun and make money ? Seems like the author tries to make some moral/practical higher ground because he cant deal with the ambivalence of whether what he does is for some "inherent" pleasure or for money.

At the end of the day the way your deal with you psychology is not my problem. Having fun if is cool. Making money is cool in another way. If mixing both is too hard for you the maybe you really dont have any real problem in your life. That post wont get too much of my sympathy.

Yea it seems like OP is writing a bunch of throwaway projects that don't go anywhere. What's the point of writing software if nobody is gonna use it? I'd rather go do something else. Like go hiking or swimming or something....

Don't get me wrong, I like coding videogames as much as the next guy but it's like, if nobody is gonna play it then what's the point?

The point is you get better at it.
Yeah, you become a better programmer. And if it is fun while you at it, it another win.
The point is that he enjoys them. Throwaway project can be like a puzzle (at least for me). Pick a subject, find some problem and figure it out.

I could ask the same about going hiking, what's the point of that? You're still back home at the end of the day.

Since a little less than two years, I live from a website I built, and I have a lot more control over my schedule.

Since then, I built a lot more useless stuff. I'm the only user. I can hardcode things, introduce breaking changes, manually migrate data and so on. I can cut corners, or over-engineer everything. Other people can use it, but I don't care about what they think of my variable names, or which features they want.

The turning point for me was the concept of apps as home-cooked meals [0]. If a gardener can grow flowers only he will see, I can write code only I will run.

[0] https://www.robinsloan.com/notes/home-cooked-app/

Genuinely curious - Are you saying here that you have a blog that runs on your own code or your income comes from the project?

I only ask as if you’ve discovered a way to produce an income from coding something your own way while still having no-one else to answer to then I too would like to reach Valhalla and you must show me the way.

Show us the way!
(comment deleted)
It's a content website with affiliate income, nothing outstanding. It worked really well, but that was just luck. I didn't expect that, and I couldn't do it twice.

Before that, I worked programming contracts, and 3-4 months of those per year would also suffice.

Given our profession, many of us could also work less and live on half their income.

I really enjoyed this post, thank you so much for writing it. It made me think of a lot of "personal app" ideas I've had over the years, almost all of them orbiting around the idea of sharing something with my family friends in a more simple and straightforward way than off the shelf apps.
I didn't! It was written by a different person
I think of it as my in-house software. Most software businesses write never leave the business, with a lot of the remainder being written in a support role just to further other business needs, not to be sold (such as a bank's online banking phone app.)

But it might be even better than in-house software. I don't have to collaborate with anyone. I can observe "best practices" or not. I don't have to care about rough edges like bad error messages - I'm the programmer and user, so I know what the message means.

I'm calling it my return to hacker roots. Unix was written for hackers who cobbled together quick solutions to personal problems. I no longer feel pressure to share my creations - sometimes I think people get minimal benefit from what I share, but it's more work for me than it's usually worth. Sometimes I feel bad about "not giving back" but many people "giving back" have their own self-driven reasons, such as building their portfolio of work. I have a day job so these reasons don't exist for me.

My most useful software is my meal planning and grocery list system. I've been using it over ten years now. Occasionally I'm asked to share it but it's a very nasty personal creation. I have no desire to share it. I do need to overhaul it though.

Linus Torvalds says he uses some hacked-up abomination of a text editor because it works for him and he knows it. That's the hacker spirit.

Created an account again (lost old few weeks old one lol) just to reply in enthusiastic agreement on the utility of barebones custom software - but not so much due to the lack of public-facing maintenance and the responsibilities that lie in parallel. Frankly, my own reasons hinge on annoyance with status quo consumer-facing solutions gone boiling over.

Ex: I’ve taken to creating my own CRUD programs for iOS or likewise for shell-based Python scripts on a desktop for things from lists & reminders, tallies, to some minuscule gym data tracking, and a few memory logs. I grow weary of bloated apps and programs built for a remarkably simple purpose but lacking just basic malleable parameters - and yet swelling in size, latency, cost. Or hell, advertisements and “social” shit haranguing me at every menu bar. What the fuck? Hell, music applications are lousy with them - as with YouTube Music or Apple Music.

So yeah, I’m all for it. My life is too short to acquiesce & tolerate the specter of proprietary watered-down stacks without reservation where I consider it desirable & plausible to do otherwise.

write to the moderators to get your account back if you can provide adequate supporting information - this is what I did only so long after I'd begun this account and only emailed to inquire in a "kick me cruel world" moment...Just try if it means something to you because definitely the administration cares about keeping the HN community swell and together
This is what I love and have loved about HN, haha. Thanks.
I think that when people hark to hacker roots or however you want to call the experimental unconstrained and free wheeling pursuit of intellectual satisfaction through commanding over technology, I want to shout out aloud "hackers don't ship they deliver works of art "!

I really was looking forward to reading a deeply philosophical introspective considering the poverty of creation that can result from incessant pursuits of relentlessly necessary and important objectives that you have no part in deciding on in any way regardless of the obviousness of futility or impossibility. Impossible tasks multiply most flourishingly in your nearest non tech founded startup, if you need a refresh. Meanwhile the best of us regularly encounter projects that we cannot apply any benefits of our skills and experience to help or even avert failing. To a certain degree this is commonplace, I mean, not the default mode experience of experienced professionals in tech. We definitely can relate nonetheless.

I find pointless work refreshing and it revitalises me in every way. I tend to choose painting for my pointless occupational diversions, but isn't it a definition of art to need no purpose to exist?

I can't understand what you are saying
whilst I don't consider that comment exemplary English, and I'm inclined to rewrite or edit it, may I ask if I understand what you are saying to me, first, and if I am to take what you say literally or not?

my reason for asking is because the most common concern raised when someone's saying that they can't understand a statement or comment uses the phrase "I can't understand" in reference to a particular area of confusion or incomprehension. In this case, I would prefer to clarify the point of your concern in a postscript instead of editing the original text, since that's much better for the integrity of the discussion.

However, because omission of all mention of what's desired to be understood, in this form of inquiry so particularly diminishes the likelihood of success for your (rhetorical, implied) inquiry, or else is a omission possibly due to inattention or haste, and I have observed almost identical responses to a increasing sample of comments other than to my own from where I have been able to discern additional semantic information about the question posed, and this has been a reliable negative indicator of sincerity and a consistent indicator of positive derogatory intent on the part of the non understanding declaration, I consequently do not wish to fall into a conversational trap set up only to insult or deride anything that I have said. Indeed, since you have stated that you don't understand what I'm saying, and this can be taken to mean total incomprehension on your part, obviously simply rewriting my comment alone is not any guarantee of my being able to help you at all. Since this is something that I feel strongly about personally, I am entirely happy to completely structure my original comment anew and break it down into the constructive components and argumentative logic to convey my meaning with the maximum possible clarity.

in absolutely no way am I meaning to condescend to you or criticise your motivation or personal character in this response - absolutely the opposite : the difficulty this presents is that if eg English language comprehension is involved in a fundamental part of your reaction, then I will need to consider this and compose any renewed comment accordingly. For example this reply itself is complicated grammatically and I will restate myself in accordance with your response if any. The only reason why I write this way initially is because I want to convey the nuances of my predicament as clearly as possible to the audience in general and also for the consideration of the moderators if by any chance this is interpreted in a negative light that I haven't been able to anticipate and prevent from affecting the most broad perception of my writing which is by virtue of being a public forum necessarily and preferably my primary concern. In different circumstances but in cases of apparently identical correspondence with the same comment on my language, when I failed to appreciate the pejorative intended meaning and absence of goodwill in the statement that I replied to, it happened that the negative overtones superimposed and obscured all beyond the cursory impression of a snarky exchange and it was thought that I was engaging with a troll deliberately in order to start a cryptic flame war in the guise of semantics. I wasn't and I am not now attempting anything of the sort. But as is clear from my defensive language already, I've been caused to infer something potentially negative which effect I'm entirely certain could have been averted had you made your comment more understand, as well.

(I've worked on concurrent channel linguistic analysis since the early nineties following a successful project processing telephone sales transcripts for outcome prediction. English is far more wealthy and rich in structure than even linguists sometimes realise. Purcell's Lewd Songs are the most excellent introduction to the capabilities and subtlety of cryptic communication in the English language. Temporal ditherin...

Based on your comment history, you can write like a normal person, to communicate and be understood. Why are you subjecting us to this?
I can’t either. It reads like something out of GPT-3 or maybe even GPT-2. Lol no offense.
I hope you guys realize this is what almost all of you people sound like on this website.
A problem I experienced with this is future-me is another user. So some aspects of documentation, ease of use etc became more important. Of course, that's my decision whether to support future-me or not, so is consistent with your philosophy. But it's quite difficult if I do, to know how much, and what exactly, is really needed... because, well, I can't google for it.
This. In school I was taught: “in class, you learn the lesson then you get the test. In life, you get the test then you learn the lesson.”

This parent-comment musings drive home the importance of documentation, or complete project management. You’ll feel it viscerally and whatever the experience, you’re responsible for it.

Yep. My personal projects are documented as if I had to hand them over. It's partly because I like writing documentation, and partly because I really enjoy those readmes and comments later.
I've found that learning to empathize with future-me, also made me better at writing code that others want to read. Kind of like dogfooding.
I made a commandline tool that shows my APIs "from outside": what is public; do names make sense from that point of view; can you see the basic use/idea?

NB: (1) I made easy improvements it indicated, but not hard ones. (2) the tool itself is super-hacky.., partly my philosophy to impl once to understand the problem, once to solve it (because there's no point designing "the right" solution before you've encountered the whole problem - and I haven't yet.)

I have only ever made "home-cooked apps". Not sure I would enjoy writing software for other people.
It's a very different job, especially if you must work with other developers. That introduces a lot of overhead.
It isn't useless by any stretch, it is non-Commericial, it is playful, experimental. I understand the sentiment and the terminology, not challenging it, but being silly and playful should be just as valid as making a your next open source side hustle.

Once things start getting _serious_ for some definition, a whole other cloud rolls in. There is now a right way to do things, but how do we know this is the right way. How do the boundaries get pushed? Much of the time, best practices is a signaling phrase to have an in group and an out group.

Things like esolangs give one cover to be playful. For example if you try metaprogramming in Python, you will be called out as unpythonic. If you create classes in Python with public member variables, you will be ridiculed.

I agree 100%. All my programs are "Toy Programs" and they are very fun to build and use.
Same approach over here.

I try new approaches and languages, occasionally something gets dumped into Github for the usual headhunters requests for HR filter.

Turning them into useful stuff for others? Well that is what work is for.

It’s funny, my favorite useless projects have also mostly been compilers and game engines!

+1 to this mindset. I would go even further and suggest that useless projects tend to be morally superior to useful ones. A lot (not all) of the useful software out there ends up being used to make the world worse, but useless software can only ever inspire joy (in yourself and, hopefully, in others).

Agree. Something else: Useless software is also very educational.

I'm also into compilers and engines. I learned 3d programming by looking at small projects online. The "worse" the code, the easier to learn. If I had tried to follow the Unreal/Unity/Godot codebase I'd still be at the intro screen.

Personally, I got to the point where I realized that trying hard to make software that's useful can turn a side-project into something stressful, essentially a second job on top of my regular full-time job, which I just can't do, too much risk of burnout. Trying to turn something into a side-business adds a lot of constraints. You're not just playing anymore, you have to optimize everything towards the goal of making profit.

However, I still think you can enjoy working on things that are useful, to yourself and other people, and not for profit. The projects I'm the most proud of are projects I've shared that have been used and appreciated by many users online. You just have to keep the project small and simple, and keep your expectations low.

> useless projects tend to be morally superior to useful ones

people have claimed that crypto mining is useless too - but a lot of people also claim that crypto mining is morally wrong since it consumes vast amounts of electricity for "no reason".

I think there's no such thing as morally superior, and a project is never useless to any and everyone. A "useless" project is taken to mean useless to everyone else but the author (since it inspires joy - which makes it not useless).

So in other words, a project that's only useful for yourself is morally superior. However, that's just another way to describe selfishness. So by the transitive property, being selfish must be morally superior!

This is exactly why I hate the expansive IP contracts I've had to sign with my employer. It effectively requires me to ask permission for publishing these useless weekend stuff, robbing me of the joy.
I just cross those bits out - I'm just writing a crud app for you - and you want to own everything I think - yah, na, happy to sign over copyright for the code I write for you (literally the conversation I had for my last contract). If they say no, oh well.
I think I’m somewhere in between. I like thinking about (and sometimes building) things that are possibly useful, but difficult or painful to monetize. Kind of an academic approach where I don’t need to grovel for funding.