Hacker News new | past | comments | ask | show | jobs | submit login
Write more "useless" software (ntietz.com)
846 points by greenSunglass 10 months ago | hide | past | favorite | 254 comments



I love writing useless software! Here's some useless software I wrote this year:

- https://lines.potato.horse → the uncolouring book

- https://meat-gpt.sonnet.io → MeatGPT

- https://tidings.potato.horse → Medieval Content Farm

- https://butter.sonnet.io → You deserve butter.

- https://mrr.sonnet.io → Mrr

- https://mrrr.sonnet.io → Mrr (physically accurate)

Some of those just very elaborate blog posts, over-engineered as I found it easier to express myself through playing with code, rather than solving a real problem.

Longer list (including some accidentally useful stuff): https://sonnet.io./projects


My favorite useless thing: https://sc.rollc.at

Actually finally found a justifiable use case for infinite scroll


oh my god I was working on sth similar but with a never-ending cigarette. This is just perfect. (I struggled with quitting smoking, a lot.)


I absolutely love this idea, you should do it! Commentary on one kind of addiction using the terms of another.


An alternative for the bandwidth-impaired and hippophiles: http://endless.horse


This was underwhelming with Javascript disabled in my browser.


https://meat-gpt.sonnet.io most hilarious thing I have seen on the internet for a long time. Gold!


Marvellous. I asked it:

Which opinions do you tender?

and

Do you need a beefy GPU?

The result really was food for thought.


I got inspired by your stuff (and other links on this post) that I ended up getting a Scratch account and made an analog clock https://scratch.mit.edu/projects/910890145

My 8 year old does scratch every day and I often help him when he has questions. I was pretty fun to just make a silly project (with unnecessary animation) for fun! Thanks for the inspiration!

And by the way, a catch phrase in our house is now "Hurry to love! Hurry to love!"


Argh, I can't edit my comment – inspired by the article, I prepared my own list:

https://untested.sonnet.io/Here's+a+List+of+Toys

I actually forgot about a bunch of those


Your triple-r mrrr link doesn't seem to work, btw.


Arrrgh, thanks, here you go: https://mrrr.vercel.app


Woah, what are you using to render the brush strokes in The Uncoloring Book?


Rendering is done via SVG (and a bit buggy), the stroke thickness is calculated via perfect-freehand (by Steve Ruiz, the guy behind tldraw)


> the stroke thickness is calculated via perfect-freehand

thank you! yeah I noticed the bugginess, the thing seems to be lagging behind my actual cursor because it tries to smooth things out to within a few % of the brush's radius. kind of distracting, but tolerable.


Just came here to say that I love this


I absolutely agree. I went to clown school recently (thats a whole story) and I realised I've been focusing way too much on trying to get projects "right" or "do them well". This is really silly. Life is for living, and I squeeze the fun out of software when I try too hard to do it "right".

So instead, I'm trying to have a lot more fun with the code I write and I'm finding I've been writing way more code. Its flowing more easily. I've recently written my own protobuf-style library for binary serialization (to try out some fun ideas around schema evolution). And at the moment I'm writing a simple CRDT based local first database. I got the first data syncing yesterday! Its really exciting.

Its funny - over the years I've written a lot of code to solve Serious Problems and I've written a lot of code on a whim, to scratch my own itch. Ironically, the code I'm most proud of has often ended up being the stuff I did for fun. I find I keep coming back to maintain and improve the fun projects, but the serious projects languish and die once I move on.


I think there is this concept of min/maxing in games that resonates in other areas of our lives.

In a game instead of going with the flow and trusting the process people tend to start reading guides how to make the most OP character, maximise stats, and make it a 100% completion.

This approach eventually sucks out the pleasure of exploration and random encounters that made the games so good and instead makes people spend hours on trying to maximise stats in a random dice roll fashion.

Similarly with other activities, the sense of wonder and "just because" goes out as we are all trying to max out something, whether its wealth or code quality.


> This approach eventually sucks out the pleasure of exploration and random encounters [...]

Oh, that depends entirely on the game and what your mood is. In something like Opus Magnum that min-maxing is the entire point. In something like Factorio or Oxygen Not Included you can have fun both with bumbling around or with min-maxing.

Also have a look at https://www.sirlin.net/ptw for some perspective. Playing to Win can be fun and rewarding. See especially the chapter https://www.sirlin.net/ptw-book/love-of-the-game-not-playing...

> Now it’s time for what appears to be the opposite point of view: “playing to win” at all times is counter-productive. If you want to win over the long term, then you can’t play every single game as if it were a tournament finals. If you did, you wouldn’t have time for basic R&D, you’d never learn the quirky nuances that show up unexpectedly at tournaments, and you are likely to get stuck honing suboptimal tactics.


Man, I haven't seen David's site in forever... I remember the old Yomi posts about street fighter and the whole Hectóre Blivand design fiasco.


to be fair, that's partly the fault of the games themselves too. When the game does not provide immersion or a good story, all left is minmaxing. Developers who only add "content" and not actual memorable experiences make it so players just try to grind the game as fast as possible because they don't fundamentally enjoy the game loop, they just play for the extrinsic rewards (loot, skins, completion, achievements, whatever).

even games like minecraft are minmaxing now, even though it used to be all sorts of creative things, since the game encourages minmaxing and discourages anything else. (just see how things like minecarts, redstone etc. have been utterly neglected - in favour of exploiting elytras, villagers and building farms)


Minecraft (and to some extent, eg Factorio) is still very dominantly a free for all game. Nothing can recreate the first ten or hundred hours of gameplay, when you still keep discovering small and big stuff like tridents, coral reefs, bastions, frogs, lush caves, yes you will eventually build a cured villager trading hall and a wither skeleton skull farm and use beacons as street lamps and shulker boxes for wall textures. But that's the point. If you want to build a 100x scale statue of a shulker from shulker boxes, it's entirely your call, and your call alone, and no, it's not an easy project not by any measure.


> Nothing can recreate the first ten or hundred hours of gameplay, when you still keep discovering small and big stuff ...

Well, I played a lot of Minecraft back in the day, and I have never even heard of a single thing you just mentioned, which seems to disprove what you said there: In fact, as the devs keep adding stuff to the game, it can apparently stay fresh.


I don't think it disproves my point, I think it's the other side of the same coin. The game has so much breadth and depth that it doesn't matter in which direction you explore it; you will keep finding new ways to keep yourself amused, even without updates (some of the things I've named have been in the game for 5+ years).


> devs keep adding stuff to the game

I really wish they would add to the sea and sky.

Big sea/air ships or similar. Swimming and flying creatures etc. The land is pretty stocked up now.


Factorio is perhaps the best tangible example of why infrastructure matters, is very hard to correctly plan, difficult to scale without shutting everything down, and yet seems deceptively easy.


And yet there are so many ways to enjoy it without minmaxing to X spm. Try e.g. to beat the game without using belts (hint: use train cars), surviving the longest in a cranked-up deathworld, beating a 9-tall ribbon world (rocket silo is 9x9), and that's before you even add any mods.


Oh, for sure - I love the game. Haven’t had a lot of time to play it recently, but it’s delightful.

Except for when you realize far too late that you made some critical mistake much earlier, and will now have to refactor en masse. That’s less fun. Easier with a swarm of bots, but still less fun.


Min-Maxing can be fun. That's how you play Opus Magnum for example (but you don't have to.)

Different play styles suit different people, different moods and different games.


yeah but that's much different, on a puzzle game with an explicit goal of optimising, even a leaderboard and stuff.

I myself got pretty far on the Turing Complete leaderboard as well and I enjoyed it really much - but my comment was pretty much aimed at "general-purpose" games, not puzzle games which have the explicit goal to be optimised.


I'm not sure there are any 'general-purpose' games? I guess AAA games are that to the mainstream? Is that whey they are so same-y?


Pretty much anything which is not an indie game made with love.

Like, minmaxing in terraria is wayyyy less prevalent than minmaxing in minecraft, and that's a blatant difference in game design between both.

Of course, exceptions exist like factorio, which is a labour of love yet minmaxing is quite strong, but that's because that's one of the game's explicit goals.

however, in games like assassin's creed there shouldn't be too much place for minmaxing yet there is because the soulless decisions made by the developers.


Minecraft is a funny example, but it pretty much started out as (and stayed for many years) an indie game made with love.

I guess I mostly play single player indie games, so I don't really see many of the soulless games people keep complaining about. (And the non-indie games I play are mostly from Nintendo. The company might have many flaws, but a lack of soul in the games is not really one of them.)


well, yes, it started out great, then around ~1.6 or ~1.7 they've started to ruin the game and destroy the sandbox.


> In a game instead of going with the flow and trusting the process people tend to start reading guides how to make the most OP character, maximise stats, and make it a 100% completion.

I want to be the very best....


  I used to *enjoy* doing physics. Why did I enjoy it? I used to *play* with it.  I used to do whatever I felt like doing - it didn't have to do with whether it was important for the development of nuclear physics, but whether it was interesting and amusing for me to play with.
https://www.asc.ohio-state.edu/kilcup.1/262/feynman.html


Congrats on your admission to Princeton!


I had this same observation playing factorio. When I started I made spaghetti factories with a friend and had to constantly refactor as requirements changed in the game. It was a blast. Then we started getting into optimization and suddenly there was only one right way to do it. Overnight all the fun was sucked out of the game.

Often I will learn more by building things poorly with hubris and whimsy. “How hard can it be?” has gotten me in way over my head so many times. But I always learn a ton and discover fun digging my way out.


> clown school

The fact that everyone is either assuming this is an actual clown school or an Ivy League university is telling.


For the sake of their dignity I hope it's an actual clown school.


My role model when it comes to entrepreneurship (curious, kind, focused on sustainability and real value) is my outlaw*, also a clown!

I wrote about him earlier somewhere on HN, but here's a quick note describing his approach to work:

https://untested.sonnet.io/Physical+uncolouring+book#How+wou...

I thought you might enjoy reading this :)

PS. Always bet on clowns.

* father in law but from a previous marriage


> clown school

Please please please elaborate on this. I can probably guess what clown school is but ... what's the motivation here?!


Clowns are the last job that can be taken by AI.


If I was an AI, doing clown stuff would indeed be the last thing I would like to be forced to do


Better not try to force it, lest we unleash Bozo's Basilisk


clown school is great. it can take many forms too - there are classes, workshops, school-schools (i.e. some 1-day, some months-long)

a famous clown school is Philippe Gaulier's. famously, Sacha Baron Cohen (Borat, etc.) went (and unsurprisingly excelled) there.

this is a short/good? small snippet re: Gaulier's school - https://www.youtube.com/watch?v=wD4YFuJT0_E

but there's a lot more to it - there are schools and communities in New York, Los Angeles, Paris, ... everywhere? just as you'd find improv classes and communities all around the world.

as for motivation -- I'm not OP, but for me, it can be the same reasons that drive people to learn acting, or improv, or dancing, or meditation, or horse back riding. something about it is about exploring a new "thing" (being on stage, performing) and some is about exploring yourself (your limits, your subconscious, your inner child, etc.)

you should try it if you haven't. everyone should. :*)


That's it! You've all been holding me back too long. I'm going to clown college!


He doesn't have to justify his desire to go to clown school. https://www.youtube.com/watch?v=mwUk19cWarI


>This is really silly. Life is for living, and I squeeze the fun out of software when I try too hard to do it "right".

TBH the incentives are usually not there for that effort. That gets people doing the bare minimum. It would be another thing if most developers had comp that scaled with how good your code does.


I'll thank you not to refer to Princeton that way.


Functions, while loops, if statements. What more can you need?


Youre missing the Pepe Silva strewn classes that tie into each other intricately, and in some occasions are abstraction layers of abstraction layers


With lisp, I only need functions.


Yeah but you're not taking advantage of what makes Lisp great unless you are also using symbols and singly linked lists.


I feel like this is one of the unintuitive things about any "craft". If you do more of it, period, it generally still makes you better in the end. Write bad short stories. Throw ugly pots. Paint wonky landscapes.

Maybe it's the practice, but I feel like it's also our tendency to talk ourselves out of an idea if we can't fully see an end-product we're excited about. It feels like a smart decision, especially if you're overly analytical—you're saving wasted time! But it's also a sure fire way to make sure you never create anything at all. I've had a lot of "useless" software projects remain "useless", but I've also had some that have found more utility in the journey.

We're landing among a few cliches here (you miss 100% of the shots you don't take!, etc. etc.), but you get it.


“I am always doing what I can’t do yet in order to learn how to do it.”

--Van Gogh


When I was skateboarding as an early teen I remember wondering if “keep trying” would eventually end up in learning to do an ollie or just become excellent at failing at doing an ollie.


Skateboarding taught me the power of perserverance, and muscle memory. That and Quake 3: Defrag trickjumping.


This is not just about writing "useless" software, but also advocating for avoiding so-called "best practices" in small projects

I made a static site generator for an item catalog. The catalog is simple and doesn't change much. I was debating on which database system to employ and ultimately just decided that I'll drop everything into a static array right in the codebase. It's one less dependency to think about and works perfectly fine for my purposes


Ooh, you figured this out early. I had a project back around 1998 where we were using Oracle "because it was there" for a content store... I was doing a performance review and concluded that "we shipped new software more often than we changed any of the data, and should have just compiled it in to the product". (Never did find out if that got done - it was a "we're out of interesting problems" thing and I moved on - but after that it was always my first question when "we need a database" reared its head :-)


"Appropriate practices" beat "best practices" every time.


i dont consider "not using a database" as a "best practice". a best practice is more like: use the best tool for the task at hand. What you describe would be in-line with this example.


Fair point. But what if there suddenly needs to be a huge expansion in the catalog? What if I need to change or modify several attributes suddenly? How can this thing scale? Ack!


Stop scaling! 30 years of public use of the Internet, and still no use found for making sites scale to millions of people!


Then you add a database.


I mean, I completely agree that you should always use the best tool to get the job done and should skip a lot of best practices if the payoff isn’t there. It’s good advice that trumps “best practices” but it’s not really what people mean when they refer to “best practices” and I think you know that.

The problem really is just that people don’t understand that “best practices” are not unconditional rules, but simplified advice representing the common experiences of thousands of people doing the same thing as you. Also, more experienced people like you and me know when it’s safe to break them but that’s a lot less obvious to less experienced people.


Seems like you're agreeing with the person you're replying to. They said the article advocates for avoiding best practices for small projects, and then they provided an example of when they did that - they avoided a "best practice" because it wasn't really practical or important for the task.


no i dont think i am, my original comment says exactly what i meant


> i dont consider "not using a database" as a "best practice".

Neither does the GP. In fact that's the point of the comment you replied to - not using a database despite using one being considered a best practice.


penjelly is getting at the idea that a "best practice" can't exist independent of real-world goals

In my example, the perspective is along the lines of: I have data that I need to read and write, so the best thing to do would be to decide on which database to employ in order to do that. It automatically concludes that a database is the best way to store data despite there being other options for handling information

penjelly's perspective is more practical: given the amount and type of data, along with how seldom it's read and written, merely employing any database might be the wrong choice to make since it would introduce extra overhead while complicating the implementation. Therefore, it couldn't be considered a best practice


To be frank, I find the concept of "best practice" a little dogmatic, and a little useless, at least the way I've seen that term thrown around.

In reality, every project is different in its goals and constraints and requires different trade-offs.

Is containerization a best practice? Well it depends on the complexity of deployment. What about unit tests? Code reviews? CI/CD? All of them depend on the project and its real world goals as you said. Which begs the question of whether "a best practice" even means anything.

Anyways, I agree with both you and penjelly. I was just commenting on the fact that penjelly does in fact seem to agree with you as tommychillfiger said.


I think that's where the real discussion is. A lot of things spoken of as a best practice are really just cargo culting rituals when they're not practically evaluated


There was a talk by Julia Evans recently shared here on HN[0]. A great talk overall, but I particularly liked this bit about "best practices" which I think describes the issue beautifully.

> One way I see people kind of trying to share terrible things that their computers have done to them is by sharing "best practices".

But I really love to hear the stories behind the best practices!

If someone has a strong opinion like "nobody should ever use bash", I want to hear about the story! What did bash do to you? I need to know.

The reason I prefer stories to best practices is if I know the story about how the bash hurt you, I can take that information and decide for myself how I want to proceed.

Maybe I feel like -- the computer did that to you? That's okay, I can deal with that problem, I don't mind.

Or I might instead feel like "oh no, I'm going to do the best practice you recommended, because I do not want that thing to happen to me".

TLDR (by me): Don't share best practices, share your experience and let others draw their own conclusions from that.

0. https://news.ycombinator.com/item?id=37791002


precisely, and better said than my original comment, which im realizing now is a bit ambiguous


Yep, that is my mistake - on a second read I can see that I misinterpreted what you were saying and agree with your sentiment.


Didn't you mean that you don't consider "using a database" as a "best practice"?

Which means "not using a database" does not go against "best practice".


yeah its like you say, my original comment wasnt exactly what i meant. Thanks!


I just made the same decision for a hobby project. The current version basically just queries a dataset, ie. no modification of the data (no create/delete/update). I realized it makes almost no sense to store read-only data in a database when I just pull out all the data anyway into memory to run a graph algorithm on it (no way I'm implementing Bellman-Ford in SQL!).


I have a friend who incorporates everything he learns into his open-source projects. Initially, it was a showcase of his best practices, and now his open-source projects have gained significant popularity.


Honestly, I quite strongly believe it is a "best practice" to use static data in code (or a file packaged along with the code and read in at startup or package compilation time) up until the moment it no longer works. It doesn't seem to be a widely agreed upon one in my experience though, which is a shame.


Learned that by coding with a friend I considered a terrible coder.

I worked with him on a lot of fun projects, because we get along well, and he really doesn't know what he is doing, copy / pasting all other the place, no archi, no design, bad naming... Half of the time he's not sure what the code is really doing.

And it works.

I noticed how in the end he accomplished more than I did. He didn't sweat the small stuff, he worked more, way more, as well. He didn't write unit tests, but he always tested everything manually again and again by playing with the result like a kid.

In the end I embraced the idea.

I wanted to code a contact software because all the ones I tried didn't do what I wanted. I didn't, I just used django-admin and called it a day instead of trying to craft some slick UI. I've been using that terrible stack of forms for 10 years, and it did the job.

I needed a cli for totp years before any existed, I just fired Python and dumped, in clear text, the seeds in TOML. Took me half a decade to add encryption to it, because symlinking the file from a veracrypt container was sufficient and required little work.

2 months ago I wanted a timer to top up a time budget when I do sport, and consume it when I play video games (https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...). I just splatted a wall of tailwind regurgitated by chatgpt and pupetted by HTMX. Turns out it was just enough. I show that to my friends that were asking me wtf I was doing with this, and 4 people asked me an account, one a trial for doctors for addiction programs (!). Don't even have a register form, I hard coded them :)

Wish I told my young self to stop being so obsessed with doing things right or even working on important problems. I never managed to reach "right" in my entire life anyway.


I noticed years ago that if I started by doing everyting correctly (naming my project etc) it would likely be doomed.

After I started letting my projects have the names my IDE assignes until they have proven themselves to be interesting my success rate seems to have increased.

I think this is related to the same underlying thing you describe.


I'm in the process of writing a some small system which relies on MariaDB as a storage. The thing is what I don't want to use SQL connector on the endpoints, so I need some HTTP intrrface. I vaguely remembered what I did something like that some time ago, but decided to started fresh.

Well, fastforward to the last Monday, I'm a little stuck and it gets me wondering how I managed to solve it (if ever) the last time. A couple of searches later I found out what I wrote a 'proper' REST-like API wrapper, with OpenAPI, the proper HTTP response codes and whatever... just a year ago. Yet I spent so much time on it I didn't even used it anywhere and subsequently forgot about it.


I’ve found the opposite work for me. Finding silly pun names early greatly improves the chances of me finishing it.


You can always just hammer software together and just clean it up later, when you know what you want/need.

There's some weird logic in cleaning up code, especially that of others. You curse and wonder what the hell they where thinking, but on the other hand, they got the thing of the ground so...


Same; one guy that kind of inspired me back in the day was a complete dick, and when I saw his code later on it was awful.

But, he also made $100 / hour living in a low wage country (east bloc / former soviet). He'd buy a domain and its content, redo the software, do some SEO and the like, then sell it for 10x what he paid for it in like 3 months. ~$7000 profit for three months of work is not bad, and I doubt it was fulltime.


It's funny, I have had similar experiences, with a totally different conclusion. I've worked with people who just throw shit at the wall like that, and like you, I've seen the shit stick to the wall often times. But my conclusions have been something like: 1. It doesn't work out just as often as it does, and it's impossible to predict which situation is which, and harder to fix post-facto than it would have been to just not do it that way from the start, so (IMO) it's a crapshoot with negative expected value, 2. I hate working this way, at a personal level, which leads to: 3. I just don't want to spend my time working on stuff where this is even plausibly the right approach.

All in all, this was one of the formative experiences that has led me to seeking out deeper and larger projects to spend my time on, rather than the string of smaller more trivial things that lend themselves to this approach to software. But the other side of that coin is that I'm a lot more content now with the understanding that other people just have different preferences than me. I spend a lot less time thinking about what the right way to build software is, and more time thinking about what's right for me.


I'm doing this right now, writing the dumbest, unmaintainable crap, because I don't know what I'm doing (writing a fun "useless" app with tech I know very little about), but yeah.. it's working! It's productive, even if grueling. and I'm learning a lot in the process. Fun stuff :) Luckily I do know how to clean it up later and refine it (and make it more maintainable/extensible), but I'll do that when I actually have something working. I can definitely support this approach as it's been very productive for me in the past, too (especially when trying new stuff).


That physically hurts to read.

It is why there is nothing new on the web and what's here today will be roughly the same as what's here in 50 years time.

There should be one programming stack that does work and you can understand it completely without going to MIT or getting blindsided by vendors and it sticks around for decades and you don't have to get stuck in boilerplate, or learn-the-hard-way how a bubble sort works, or how a data structure should be designed, or how an algorithm should be crafted.


This has existed for years. The programming language is called Employee and it comes stock with a natural language compiler.

Fred Brooks wrote a good book on how to hook several Employee installations together to act as a distributed code generation system.

Unfortunately, use of Employee isn't free, but if you have a PhD and work in academia you can get access to installations of Graduate Student.


Lol.

Yeah, and humanity should speak the same language everywhere. Also, we have enough food for everybody, why are some people starving?

Welcome to reality.


No offense, but that reality sucks.

When people offer utopias, that doesn't mean they were born yesterday or are terminally naive. Rather, that's how all big social paradigm shifts start at some point.


Sure, and the sky is blue.

Thanks for listening to my ted talk.


This assumes that your ideal tech stack is the same as my ideal tech stack. It also assumes that every project has the same technical challenges and requirements. Neither of those things is true.


Apple once rejected an app of mine for being "useless". App review even called me to tell me my app is useless and will not be approved to the Mac App Store.

~12 years later thousands of people have used that little useless app (KeyboardCleanTool, a very small free app to block all keyboard / touch bar input). People have used that app in ways I'd never have imagined (e.g. letting toddlers hack on their keyboards or letting their cats sleep on the laptop).

What is useful or not is really subjective.


When I desperately needed to clean my keyboard, I was searching for how best to clean a MacBook keyboard. Your app kept coming up and I kept laughing it off thinking, “yeah, how can an app clean the keyboard, will it fake shake it until it’s clean?”

It wasn’t until about 10 searches later I found a decent article about the best way to clean your keyboard, with a shout out to your app for being able to lock the keyboard.

Finally, it clicked and I downloaded it - quite useful for a “useless” app - thanks for making it and maintaining it!


I turn my laptop off to clean it and avoid the power button while doing the cleaning. Was this not an option for you?


I mean, clicking an app is a lot more convenient than having to turn the whole laptop off.


Jesus... how often do you clean your keyboard? :)


Probably after each meal? :D


I recently discovered that if I put a plate between my food and the keyboard, the keys don't get nearly as dirty as when I put the food directly on the keyboard. Life hack!


I clean mine about once a week. It tends to get grimey.


Yikes! TIL that with Apple Silicon it is impossible to stop the computer from auto-booting on lid open or key press. There was an nvram hack that worked for Intel machines but it has no effect now. What a "feature."

I've added a user account "Clean" and will do cleaning after locking the screen while logged into that account. If I happen to disable its login via failed logins due to keypresses while cleaning, I can switch back to my normal account and reset it.


there are a few apps that I don't want to quit any time (about once every 2 weeks) that I want to clean my laptop keyboard.

currently, I'm fighting slack to make sure it doesn't update again.


Recent Apple laptops switch on if _any_ of the keys are pressed.


Or if you open the lid.


I’m aware of your app. Seems pretty brilliant to me.

My mother accidentally turned on our computer (Mac IIsi) when cleaning while I was a kid. I successfully turned that into the justification for why we needed the After Dark screensaver. Flying toasters soon graced my screen. Ah, nostalgia…


Thanks for KeyboardCleanTool! I’ve used it for years, and it inspired me to add a similar function called Cleaning Mode in my Lunar app: https://lunar.fyi/shortcuts#cleaning-mode

I needed the MacBook screen and monitors to be completely black while cleaning so I can see the dust that would result in scratches if cleaned with a cloth. I also needed the trackpad to be disabled and an easy to press key combo to turn off cleaning mode (I arrived on spamming the Command key at least 8 times as a combo, hard to accidentally press, easy to remember)

I’m always annoyed by Apple’s practices in app review, why would they decide for users what is useful and what isn’t? Not to mention the scams that pass review and are left to live in the App Store for months.


I've benefitted from your app! Thank you for the awesome anecdote.


I will save this comment whenever someone defend the apple wallgarden


i refuse to call apple a walled garden. To me it is plainly a prison, doesn't play well with anything outside


I've wanted that for years, thank you! Apparently nobody at Apple has a cat.


Cat like typing detected

http://www.bitboost.com/pawsense/


It wasnt useless, it was their way of telling ‘not suitable for average user because they can lock themselves in and were gonna take the heat’


I love your app! It is perfect for my MBA M1. I was annoyed there wasn't an option to temporarily disable the keyboard for cleaning. I found your app through brew.


Oh interesting, I wrote something very similar: https://github.com/albertz/mac-suppress-mouse-keyboard

It also blocks mouse presses.

The only way to unblock is to type in a special sequence of letters on the keyboard. But an on-screen display will tell you what to type.

It was mostly for my toddler.


Funny you should mention, I just needed to clean my keyboard yesterday and I was looking for a way to disable my keyboard without turning off my PC. Thanks for your app!


Pfft I used your "useless" app! I wanted to clean the keyboard and the app lets me do that without shutting the computer down. Very happy! Thanks.


TBH I just switch to the lock screen if I need that


We did some video meetings (or online sport sessions) during corona, and our toddler always wanted to play around with the computer.


In Linux, I switch to a vty (ctrl-alt-f4) and don't log into it when I want to disable the keyboard.


I would think in most cases some sort of lock would be fine - whether that's switching to a getty, calling xscreensaver/gnome-screensaver/whatever, or whatever your platform's equivalent is.


This. I just lock the machine and have a go at it.


how did you get it approved?


It is published outside of the apple app store.


Yet multiple times I’ve seen people on this site defend Apples approval process as a good thing since they get such a great curated experience as a consumer. But here’s the thing - you don’t know what you’re missing because you never see it. If this persons idea was for iPhone instead of macOS it would never benefit those thousands of users that it did.

And - I’m going to put this bluntly while trying not to be too rude - Apple does not assign the best of the best to their App Store approval process. The experience is rife with reviewers who seem to have never looked at your app and are incapable of communicating in English outside the scope of auto form responses. Imagine the worst call center experience you’ve ever had as a customer - now you get that experience after having put hundreds or thousands of hours into a project and in some cases , a business of yours. And your concerns are a speck of dust to this trillion dollar company.

And let’s be real - you can’t seriously make a mobile app and ignore iPhones. It’s not a pure monopoly but they effectively have the leverage of one.

It’s unimaginable to me that on a site called hacker news I would see support for such incredibly antagonistic behavior towards developers that Apple exhibits but unfortunately I have multiple times so I hope this persons brilliant keyboard app that has helped so many people serves as one of the many many examples as to how Apples broken App Store process hurts developers and hurts consumers and benefits absolutely nobody.

I haven’t even touched upon the fact that you have to pay $99/year and THIRTY percent of revenue for the privilege of this experience.

The simple solution is a legal mandate to allow third party app stores. It’s fine if Apple wants the official rails to be highly curated but there simply must be an off-ramp.

We are so lucky that European regulators have some sense here.


> "you don’t know what you’re missing because you never see it."

I saw the Cydia store, I see the Google Play store, I see the Microsoft Windows store, I see the internet outside the stores and all the software offerings on the web and on GitHub and Sourceforge and all the rest. What makes you think there's some secret buried treasure of high quality apps and not an overwhelming noise of 99% crud? And no, one example of a good program doesn't refute this, this is not a claim that there are zero good programs outside the app store (or even that there are 100% good programs inside it), this is a claim that removing moderation would be like removing the walls of your house in winter - how dare you try to keep the heat in and the cold out when I know of some warm places outside; the majority of places outside are cold.

This is like wishing for unmoderated blog comments; I like this blog[1] but see how long the scrollbar is, scroll down until the original sensible comments turn into spam. Yes there may be a good comment lost in anti-spam moderation systems, but getting rid of them is worse.

[1] https://yosefk.com/blog/compensation-rationality-and-the-pro...


Your concern is addressed in the OP:

> The simple solution is a legal mandate to allow third party app stores. It’s fine if Apple wants the official rails to be highly curated but there simply must be an off-ramp.

Right now Apple has an effective monopoly on the software that can run on its machines, especially the iPhone which is extraordinarily difficult to install non-appstore software on. I don't understand why that's considered acceptable when we once pilloried microsoft for having internet explorer be uninstallable. In that case you could at least still install whatever other browser you wanted... (obviously software being uninstallable is also bad)

> What makes you think there's some secret buried treasure of high quality apps and not an overwhelming noise of 99% crud?

This could be because of the barrier to entry to getting software onto the platform. I don't really face this problem with other platforms, such as Android or Linux. Maybe because I have my own curation process though, which brings me to my final point:

If 3rd party app stores were mandated, not only does that allow users to install the software of their choice on the computers they purchased, it also allows competitive markets. Apple right now can (and might?) pull an Amazon and promote their own products/software over others' because they own the market and the algos that run the search on the market. They can prop up their partners, and they can charge whatever markup they please to be listed in their curated experience.

3rd party markets means new algos representing different needs without daddy Apple getting say-so. F-droid is a great example. The various marketplaces for linux software is another: Ubuntu's official repositories, Arch's, etc, with offramps in the form of AUR or just compiling software on your own that you find on your favorite search engine or forum if you're so inclined.

Apple's app store is monopolistic behavior, plain and simple. You can love it, you can have it, it's actually quite fine imo for there to be an official software repo, but there must be an offramp to enforce user freedom.


The Cydia store was good and had amazing, high quality apps and tweaks, and the other two examples you mention are walled gardens curated by companies who have historically amplified bad actors rather than stifle them.

There is a need for curation, but I don't think Apple is qualified to perform the kind of curation that is best for consumers, it is both so loose as to permit an app store mostly filled with useless garbage, a great deal of which they promote on the "curated" home page ( to-do lists, mrbeast unity game, financial management tools that simply exist to bait consumers into enabling bank api access) and so tight as to stifle the creativity of those who think outside the narrow box of the monotony that is popular on their app store.

Curation is necessary and valuable, but distribution and curation aren't the same, and as the examples you cited, and Appls's app store reveal, the motivations of curator and distributor are in a fundamental tension between maximizing sales and improving the experience of the customer.

And as for the principle of being able, even to your own harm, to freely install the software you choose on your device, infants and the sick may need walls to keep them safe from winter, but if we build walls so high that those who would hunt cannot pass outside, and so strong that when spring comes we cannot tear them down, we shall all perish.


> "And as for the principle of being able, even to your own harm, to freely install the software you choose on your device, infants and the sick may need walls to keep them safe from winter, but if we build walls so high that those who would hunt cannot pass outside, and so strong that when spring comes we cannot tear them down, we shall all perish."

Oh pulleeease, you're a superior "hunter" to the "infants" who use vendor curated app stores? Can you hear yourself regurgitating this embarassing Alpha Male/Ayn Randian drivel? It's software not manliness gym-bro posturing world. The experience of picking quality software from the large volume of total software isn't "powerful hunter" it's panning for gold - sifting a ton of river silt for hopefully a few flecks of gold, or being a filtration feeding sea creature, swallowing litres of seawater for a few morsels of sustainance.

You have freedom with Android, Chromebook, PinePhone, Windows, Linux. You covet iPhone and macOS because they're so obviously better people will spend two, three, four times the money to avoid the alternatives but then you want to break them and make them as bad as the alternatives? What about the principle of being able to, even to your own harm, choose to buy and use a restricted, limited device? The freedom to avoid having to be a human spam-filter, the freedom to make and sell restricted devices that people can opt-in to buying?


Ayn Rand? LOL, play your comic book political fantasies to another crowd, there is no marketplace here. There are two companies that have behaved monopolistically, using illegal means to crush all competition, and now lay flat on their backs and shriek bloody murder when weak Western regulators even sniff at reminding them of what they need to do to at least maintain the illusion of a "fair" marketplace. And for the sake of.... what in your estimation is high quality curation? (TikTok, Candy Crush, Fruit Ninja) In what sense is having the same 5 timewasting apps on the homepage for over a decade curation? Don't you imagine that a 'curator' would promote a diverse array of the high quality content and tools that are available on their platform?

You seem incapable of conceiving of a way of life outside of that of the consumer, sitting around waiting for a bit of gold to fall into your hands. Others are out there trying to build things, some of which are interesting, and most of which are miserable failures. And in the world that I want to live in, and in the world that Western democracies have built empires on the promise of, individuals and collectives ought to be able to attempt to do so without having to crash into the infinite fields of iron gates erected by the ~12 megacorporations that collectively have a stranglehold on >90% of every market for >90% of goods.

I am not interested in whatever male fantasies of individual struggle that you are seeing projected onto the foreheads of others, we should not deny a generation their collective and individual rights to self-determination by failing to see that we've created a world where digital life is a prerequisite for living, and our governments have protected a small number of aristocrats set on binding the digital lives of human beings to enrich themselves.


> What makes you think there's some secret buried treasure of high quality apps and not an overwhelming noise of 99d% crud?

Well, obviously it's both; there's a lot of rough, but I still want the diamonds that are buried in it.


The missing out is real, but it is still a tradeoff. I’d prefer the world where we could have both all the reasonable apps and no spyware/pii-ransomware nonsense in app stores. But we only have this one and have to share it. You don’t see it as a tradeoff, that’s okay. But voting to ruin the experience that people actually liked for decades… that’s hard to understand.


> THIRTY percent of revenue

What is a reasonable percentage?

> ...a legal mandate to allow third party app stores.

My proposal is a bit more, um, simple:

Apple's App Store must be spun off and operated as an entirely separate entity. Maybe even run as a nonprofit org.

I cannot abide by markets also competing with their own vendors. Apple cannot both run the App Store and sell its own apps on it. They must pick a lane and stick to it.

Ditto Amazon, Walmart, Google, etc. Amazon can be an e-commerce site or sell Amazon Basic (etc), but not both.

Said another way: No vertically integrated monopolies. Dominate one market, by default or by design, fine (sort of). But using that domination to enter and dominate other markets, adjacent or otherwise, is not allowed.


> My proposal is a bit more, um, simple:

I think your suggestion is kinda based, but it's definitely not more simple, as it would require targeting a single company and enforcing a monopoly action against it to force it to split up. I believe the last time that happened in the USA was 1982 when Bell System was broken up: https://en.wikipedia.org/wiki/Breakup_of_the_Bell_System

Meanwhile a legal mandate to allow third party app stores can be accomplished more simply (imo) similar to how the EU forced Apple to use USB-C: market directives.


Let's be honest, there's probably a dozen antitrust actions that are overdue in the US tech sector, and since the US doj has ignored that issue for so long, it now probably needs to be done the Standard Oil way, with a hacksaw. Of course it's not going to be easy, but the current situation happens because for 4 decades the US has taken the easy way, or done nothing at all.

As for simplicity, it lies in the fact that lighter actions often don't produce enough effect, can be side-stepped or simply ignored without continuous oversight. On the other hand, when you force divestment and bust corporate control, it is much easier to guarantee that the desired effect happens.


Fortunately macOS apps don't have to be installed through the Appstore system. There are third party stores.


I imagine the majority non-Apple App Store hosted apps are installed independently of any app store.


I wonder how long that will remain true.


The EU seems keen to enforce this. The DMA set to come in will force Apple to allow third party app stores and side loaded apps to iOS, where it's not currently done


I think regular anti-trust laws would be the way this would be fought on the desktop.

macos as a whole doesn't have enough users in the EEA to fall under the purview of the gatekeeper section of the DMA, unless the "app store" counts as a single thing. Which it kind of does now that apple has unified it between iOS, iPad OS, and macOS.

Windows S versions that only allow software from the microsoft store haven't drawn any ire from EU countries, AFAIK.


I mean off the top of my head, google chrome isn’t on the App Store for macOS. It also overwhelmingly dominates the browser market. There are just too many products like that that are not on the App Store that I don’t think Apple can afford to lock people off from.

I’d say 60% of my apps on my Mac are not from the App Store. Sure I am probably not representative of the average user, or maybe I am, I don’t know, but assuming I am not it’s such a large number that I can’t help but think most people have at least a couple of key things they don’t get through the App Store.


Forever, if Apple wishes to have a developer ecosystem.


> Forever, if Apple wishes to have a developer ecosystem

Apple routinely goes out of their way to reinforce the sentiment that Apple hates developers. The only reason developers still support the Apple ecosystem is because there's a lot of money to be made within the US (where Apple devices carry non-trivial market share).

If Apple banned 3rd party App Stores, the money would just become more concentrated. Therefore, all the developers will go to the Apple App Store...

No loss from Apple's perspective - in fact, it would be a tremendous gain.


This is a ridiculous assertion. Developers still support the Apple ecosystem because they have no choice. They want a still Unix experience but their companies require remote management software that isn't available for Linux for security compliance. So we're stuck with Mac. We're not talking about developers targeting Mac as a platform. Just regular software targeting servers. A customer needed me to figure out how to install and use rsql, Amazon's official client for Redshift, to see if it would be feasible for their researchers to use. Not to mention, you know, awscli itself. AWS packages nothing whatsoever through third-party repositories. They won't even put botocore in PyPi any more. Not only do you need to get the client from Amazon's website (also their VPN client), but it requires openssl 1 because Amazon is too lazy to keep stuff up to date. Does Apple even have library packages at all in its app stores? Libraries aren't an "app." They certainly aren't going to carry long-obsolete old libraries.

If Apple ever stopped letting you install arbitrary CLI tools, they'd lose every software company issuing their developers Macs. Yeah, they'd keep the solos actually targeting Mac itself as a platform, but that is not going to be anywhere near the plurality of people using it.

iOS is the way it is because, for better or worse, Apple sees it as an appliance, not a general purpose computer. That has never been true for their PCs. It isn't true for any PCs at all. Microsoft will never do this with Windows, either. It doesn't matter how little you think of them. You people on Hacker News are way too cynical about this stuff to be realistic. The business cases alone make no sense. Plenty of companies need to be able to install their own software that they write for internal use only. They're not going to put that in a public app store or through any kind of external review process. Those customers might even still want central control, but through their own app store, not Microsoft's or Apple's. That's why SCCM and JAMF exist. They not only allow third-party app stores, but you can get the third party app store from the official app store!


> Developers still support the Apple ecosystem because they have no choice. They want a still Unix experience but their companies require remote management software that isn't available for Linux for security compliance.

If that's what it actually was, they would be using WSL. Or their companies would have them using WSL (because supporting Mac endpoints is a pain in a Windows-first shop, which is to say most shops). The fact that so many developers still use Macs even years after WSL came out indicates it has to be something other than the unix experience.


WSL is a bolt-on Unix environment while Apple has a native one.

If Apple makes it so that it's not native, I am pretty sure there will be significant number switching OSes.


> If Apple ever stopped letting you install arbitrary CLI tools, they'd lose every software company issuing their developers Macs

And then what? Oh no, they lost 0.1% of their market share!

They do not care about developers. Understand that.


You're being obtuse. First, macOS market share is closer to 20% in the desktop segment. Second, part of that market share consist of essential developers making products for the entire Apple ecosystem. I mean, what else are they gonna use for developing Apple software? An iPad? Don't be silly.


> If Apple banned 3rd party App Stores, the money would just become more concentrated. Therefore, all the developers will go to the Apple App Store...

No, they may leave the Apple ecosystem as main development platform and only use a company Macbook on the side to port their app to the appstore.

As long as Linux exists I don't really need Mac OS, I need a laptop & OS which lets me install & build arbitrary software.


I love writing expressive, joyful software. To learn or explore. It's what hooked me, and what keeps me programming.

Unfortunately, needs get in the way. Under threat of starvation I must be productive. I care about those I am productive with, and I feel guilty when not producing. It drains my motivation even in my personal time.

It's amazing to see so many people with the stability and freedom to express themselves. Those who have the means to go to the Recurse Center, or those with many personal projects or a myriad of blog posts describing their escapades. I'm envious, but happy for them. Most have worked hard to get to where they can carve out a life like that for themselves. I'd love to do that too.

The only way to do so, it seems, is to burn more life on productivity. With enough years burnt in sacrifice, perhaps luck will be tempted to grant me the right to live. It's funny.

I'll enjoy writing more useless software then.


Like so many things in life, if you put it off "until I can afford it," you'll probably never have it.


I used to feel like writing useful software was the mark of a competent software developer, and I wouldn’t allow myself to spend time doing things which weren’t overtly useful in ways which were easy to communicate.

That’s a great way to make software a chore. I’ve since become comfortable creating useless stuff. It’s fun. I reiterate existing ideas in new ways because I don’t care if it has been done already. I will even do it in the same way someone else did if it’s just for kicks, like covering someone else’s song. You learn, you have fun, it’s worthwhile. And sometimes you find ways to improve it!

I learned this by getting into writing firmware. It was too daunting to be useful all the time, and I had to really let my ego deflate and get out of the way. It turned out to be a ton of fun, writing crappy code to do stupid things. It also turned out to be an awesome way to get out of my own way and let myself learn and experience ideas in a low-pressure and enjoyable way.

Plus as others have mentioned, useless stuff winds up being surprisingly useful. Every useless thing I’ve done in the last couple of years has wound up contributing useful code, if not insights and knowledge, that I didn’t expect. It’s great.


A long time ago I used to run a meetup group, the "Houston Recreational Computer Programming Group", which was almost but not quite entirely concerned with showing off useless fun software projects. Was a lot of fun, though I've moved away and I'm not sure the town I'm in now is large enough to muster such a group or if I have the energy to run such a group anymore.

One good thing (for me) about it was that once a month, I was forced to come up with some little project to show off, just in case nobody else brought anything to the table, the table wouldn't be empty (only happened a couple times in 2 years or so). One of those little projects[1] turned out really cool and I'm quite proud of it, and it's not entirely useless.

[1] https://github.com/smcameron/gaseous-giganticus


Thank you for your work helping to build the culture of TX/RX labs. They've really thrived since then.


This is very timely because I completed writing a useless software just a few minutes ago:

CFR Brackets: https://susam.net/cfr.html

Demo: https://susam.net/cfr.html#3

Source: https://github.com/susam/cfr

It is a very minimal drawing language that supports only 5 commands: C (change colour), F (move forward), R (rotate), [ (begin block), and ] (repeat block). The commands are slightly inspired by the Logo programming language. The minimal nature is inspired by P′′. However, unlike both, this is not Turing complete.

No practical usage is intended. I wrote it for fun and I am hoping to have some more fun with it trying to draw interesting shapes using it while keeping the input code as small as possible.

“I think that it's extraordinarily important that we in computer science keep fun in computing.” -- Alan J. Perlis


>A terrible chess engine and UI, riddled with bugs, which taught me about GUI programming and game programming, and led to a more thorough understanding of how chess engines work.

This is my number one advice to anyone interested in game dev. Don't think that you need to sit around and come up with the most amazing novel mechanics and flashy graphics or novel-length story. Just start making games. Implement Chess, or Go, or Poker. Learn how engines work and focus on the core of what actually makes a game fun and engaging. Some of the best studios today cut their teeth on silly shovelware titles, and so should you.


I majored in Game design in college, every semester we would make one game for the final project. To be honest a lot of my classmates suck at making games, but still, we can get a good laugh and fun time when playing the "bad games". That's when I really started to love games, they don't need to be "good" to bring joy! That's also when I got into communities like Glorious Trainwrecks[0] that focuses on making "bad" games, a lot of people I see there are the most creative people I've seen in my life.

[0] https://www.glorioustrainwrecks.com/


I’ve learned a lot by just rewriting stuff that already works. Not because I need the new software, but because making something compatible is a great way to discover the edge cases of the existing software.


Reimplementing other software is one of the most rewarding exercises in frustration that exist.


It's surprisingly fun to focus on the how, rather than the what, with the safety net of knowing the what will still be something worthwhile.


Just like drawing, everyone draws still life to train or figure out their issues.

It doesn’t matter that there are dozens of those drawings made by all the people.


Almost 20 years ago we had to write our own database with indexing for a software dev class. It was crap by every definition possible

But that learning experience and having a rough idea of what sql is doing under the hood is still useful to me every day.


Reimplementing classic games (Pong, Tetris, Snake) sits at a great spot along the effort-to-reward curve.


Totally agree with the sentiment. Also, "useless" is a totally subjective label.

I think it's worth quoting PG on this one:

> Just as trying to think up startup ideas tends to produce bad ones, working on things that could be dismissed as "toys" often produces good ones. When something is described as a toy, that means it has everything an idea needs except being important. It's cool; users love it; it just doesn't matter. But if you're living in the future and you build something cool that users love, it may matter more than outsiders think.


And remember that the largest toy company is worth billions of dollars. Toys can be serious business.


Nvidia and Epic were built with gaming money. Now they are almost vital technologies with all sorts of useful non-gaming applications


I first learned about computers in 1970 when I took the only computer course my college offered: a one semester course of Fortran. In 1977 I passed the bar and became a trial attorney. In 1978 I bought a Tandy Model I. I spent lots of hours developing expertise in a courtroom over the ensuing 40+ years. But my love was playing with programming (mainly basic; dBase; FoxBase; FoxPro; VB; VBA).

I spent a huge percentage of my non-working life programming. I created a lot of software I implemented in my own firm, starting with a timekeeping/billing program in 1981 before computers existed in law firms. In many ways, my firm was my "home lab". It was what brought me joy.

I retired from law in 2019 and I now spend 100% of my free time learning c; bash; linux; networking; virtualization; with assembly, rust, lisp, and more on my agenda. And I do it for the same reason I always have: because playing with computers is a blast!


In 2023, I've written a LOT of useless software. I've built 1 feature complete product [0], 2 kinda-feature complete products [1], and a bunch of half-finished stuff.

Unfortunate for me, none of them generated any revenue.

But it's been a fantastic experience refining a lot of the rough edges on how to build faster. Biggest gain for me has been speed; each project, I get a bit faster because I've ironed out some unknown along the way. It's crazy looking back how much I built in 6-ish months.

[0] https://turas.app

[1] https://coderev.app, https://zeeq.ai

[3] e.g. https://github.com/CharlieDigital/hekaton, other contract projects


The article contains solid advice that certainly transcends coding, alone; in my free time, I try to essentially "find work". Sometimes that work consists of writing software to solve weird little home "problems" that may or may not be actual problems. Sometimes that means building something as a joke, just for fun. Sometimes that work consists of over-engineering a water heater box-turned-space shuttle for my daughter. Or recording my dog's wheezing and turning it into "classic industrial" music. It all feeds the same internal need, though; to learn, to build, and to produce something, rather than to passively consume other people's products. It keeps my brain alive, and I find improved performance/innovation in other work-related projects, as a result of just staying active, mentally.


Curious if you've tried any "work" games. Factory building games (Factorio, Dyson Sphere Program, Satisfactory, Captain of Industry, etc.), programming games (Human Resource Machine, 7 Billion Humans, anything by Zacktronics), or colony sims (Rimworld, Oxygen Not Included, Banished)?


I have not. I'm afraid I am a gaming luddite, though for no particular reason other than having a lengthy list of mental "to-dos" in front of it.


My pride and joy: http://lipsislips.com


My girlfriend and I had fun with this, thanks for sharing!

As a sidenote, letsencrypt.com is free :)


That was unexpectedly fun :D Turns out: Lips _are_ lips!


This is a funny little game man. Thanks for sharing.


I think there is a balance: I try to write useless explorative software that has no expectations beyond learning in my spare time, and at work I try and focus my time on very pragmatic, focused, "useful" work.

Don't confuse exploratory learning code with production code, respect the boundary (IMO)


I agree with this, even with my own projects. When I write code I go for pretty code that is designed well for what it's doing and doesn't have much cruft. I refactor if the next thing I want to add doesn't match what I've built, and figuring out how to replace it in a minimal yet clear to read way is where I get my fun from, I've mostly figured out. I'm an organic designer and a code artist, I guess.

Having said that, when I step into territory that's new to me I'll write the worst code imaginable without the normal restraints just to get something that works, then spend a week painstakingly trying to figure out why each piece works and how it's supposed to work and refactoring it into a nice relatively clean design.

At work I will write an exploratory bit of code, through it away once it runs correctly, and rewrite it in the code it needs to live in afterwards.


I agree with your approach - I think I did not write clearly enough, and I should say that when I say exploratory code in this context, I'm thinking about trying out new libraries, languages, etc. Certainly if one is on a new project or in a new domain, the code has to be exploratory at first.


one of the reasons to write more 'useless' software is I think also that for most people it's a straight up better use of their recreational time.

At some point I got sick of watching The Office for the 20th time or just aimlessly clicking around on Youtube. Programming is a hell of a lot more stimulating even if no good software comes out of it.


What do you mean useless? Dial is going to revolutionize the way people insert numbers.

https://github.com/victorqribeiro/dial


Woah, let me know when the kickstarter campaign for a physical version is live!


Useless and also "non-profitable".

Here on HN I feel like there is some pressure to make money, and on a lot of comment threads there is always someone who pops up to mention their little side project they started for the lolz that now makes them 100k/month in passive income or whatever.

We need to give ourselves a break and do things for fun.with no expectations that anyone else will ever even see it not care!


The "useless" programming language that OP created is actually pretty interesting. It only uses exception throwing and catching as the only control flow and apparently that's enough to do pretty much anything.

I mean, obviously I'm never going to use it, but it was a fun read.

Hurl language: https://ntietz.com/blog/introducing-hurl/

HN discussion: https://news.ycombinator.com/item?id=36393673


My man! It is definitely useful in while writing a deeply complex recursive code.

The procedure is kind of a walking two sub trees in parallel and making changes to existing subtrees while walking. But, if the recursive procedure fails we should revert the tree. And the code is recursive methods calling other recursive methods.

I once used such thing along with command pattern for remembering the code to be executed if the recursive procedure succeeds. And while doing that, if anything fails, we can just throw away the list of commands collected and execute it later if the whole recursive procedure succeeds.

The control flow was exactly this.


I wrote a useless CHIP-8 emulator and it’s the most fun I’ve had in year with computers!

Not just that, but even though I didn’t know it (since I was having fun…) I was also learning!

The concepts, principles and techniques that I learned from that project are far from useless!


I rather came to a different conclusion yesterday: I want to write less, but more beautiful code. Simple, elegant and powerful. And getting the job done. I am kind of sick of useless boilerplate, wrapper, workaround, ductaping ...

The magic feeling when something simple and elegant works faster and better then the hacky mess, this is to me the magic of programming. Not writing useless software for the sake of it. It is fine if most side projects don't go anywhere, but I think I rather wrote too much useless code in my life, which was draining and for me keeping the sparks fly was achieved very strongly yesterday, with simple, elegant and useful code. A work of art I am proud of. I want to do more of that.

And when I am done coding, I rather go outside and do something else.


I’ve done lots of “useless” software.

  * Lexers, Parsers, Compilers
  * Shortest path, traveling salesman
  * Physics sims, numerical methods 
  * Discrete event simulation 
  * Document formatter
  * Tried to add a GUI Tab pane context and lifecycle to Java CDI. Yea, that just doesn’t work. Lipstick on a pig in a square hole. 
  * Object based drawing program (i.e. MacDraw, not MacPaint). Lots of Edison progress, I know hundreds of things that don’t work. (Anyone write one of these?)
  * An interesting DB and query language that had some novel temporal capabilities. 
Currently fighting with a “spreadsheet engine”, though I’m teetering on the abyss of machine learning and might step off.

If it needs graphics or a GUI, it’s Java. If not I tend towards Common Lisp or Elisp.


This is what keeps me saying I love programming. I do it professionally as well but am burnt out and tired of the job. However, in my free time, I still fall down obsessive rabbit holes writing weird little apps that modify an image in a unique way or a wave file or modding one of my favorite games.

A lot of times I don't have the energy for it since I spend all day doing it but I got into development because I wanted the freedom to make my computer do whatever I wanted not for the cash. I taught myself as a child, well before I even cared about making money. I just wish there was something else as lucrative. I'd love to switch careers but I'm not willing to give up the income.


The fact that everything needs to have a "purpose" (not just with tech, but with life in general) is something I continuously struggle with. I know I'm not supposed to care about it but I have a really hard time applying it in practice.


I do a lot uf useless and experiment software, like these:

https://namechecker.leandrosf.com/ -> Check if your pretended project name is already used in somewhere

https://github.com/lsferreira42/bli -> a brainfuck interpreter that is intended to help you understand brainfuck

https://github.com/lsferreira42/nadb -> a threaded key value store with memory buffering

https://github.com/lsferreira42/hnpes -> a hackernews chrome extension to find previous posts of the url your are browsing

All of them work, but not at all usefull hahahaha


I have quite a few of my own personal projects (apps, scripts, utilities, etc.), and I would say most of these would probably be useless to anyone but me, but it’s fun and satisfying to create, especially in a cold corporate/enterprise environment where all the joy is sucked out of software development.


Well I'm winning than. I've written so much useless software, and projects, and starts of projects.

It's all fun and joy until you come back to it 1 or 1.5 years later, and resources are now throttled because they're so over used because of the explosion in AI. The fun seems to go away when you come back to an old project, and things have changed.


> It's all fun and joy until you come back to it 1 or 1.5 years later, and resources are now throttled because they're so over used because of the explosion in AI.

What does this mean?


No yesterday, I just tried to spin up an old project using common crawl, which is hosted on AWS open data, seems like it's gotten quite popular since I lasted worked on it, and they're experiencing throttling from over usage, maybe even ddos (or just a really bad developer).

But seems to be a pretty common thing with stuff related to data and crawling. Everyone is cracking down on crawlers, adding paywalls, removing previously free APIs, so coming back to old projects in that domain seems to be impossible.


What's the lesson to be learned from that experience?


Finish something and exploit (I mean market) the shit out of it. Or find a lot more money somewhere and build a lot more from scratch.


What kinds of resources?


commoncrawl at the moment.

But also used to have some stuff using the old reddit (through pushshift) and twitter apis. Plus some old classified crawlers, where sites have taken a more proactive approach.


There is also an hybrid of work and play where you put way too much work into a marginally useful feature because it's fun.

I run a content website for a living. There are off-the-shelf tools for that.

6 years in, it runs on its own static site generator. It was a blast to build. I also spent a month or two writing a German tax calculator because there were no nice ones. Surprisingly, it became the most popular page on the website. Likewise, my citizen office's appointment finder garnered a lot of positive press.

If I were minmaxing this website as a job, it would be one long pitch for various products. Or perhaps an endless series of keyword-targeted posts.

Instead it's a playground for my ideas. These long detours on pleasant roads yielded a website that has some magic to it. It's a lot more to me than just a job.



I really agree with this take. I think the software and designs people stumble upon when they do things for fun and pure curiosity yield can yield interesting and thought-provoking stuff, that you wouldn’t have otherwise encountered when in “productivity” mode.

Do things to explore the design space, explore the most-unconventional idea, do something because it sounds hilarious, because who knows, you might just come up with something awesome, or your work/thoughts/failures/successes might inspire someone else and in turn they get the bump they need to solve some new problem! I don’t think this is limited to just “writing software” either, I suspect it applies basically everywhere.


yeah, imagine only creating software when you know it's useful by every measure.


See my blog post from 2021, “Why I prefer making useless stuff”

https://austinhenley.com/blog/makinguselessstuff.html


I just read Part 1 of your Teeny Tiny Compiler series and thought it was fantastic.


The link seems to be dead


Sorry, fixed. I forgot all my academic URLs are now dead.


It doesn’t have to be useless. Scratching your own itch can be fun. Especially if you forgo “SaaSifying” it and just knock something up quickly that is rough and ready. You don’t need authn flows and price pages or even Tailwind components if it is just for you!

I find JS with few/no libraries and frameworks quite a good spot for fun web based projects. Make it a static site if possible. Use local storage. Amazing how productive you can be on the feature without the weight of all the backend and frontend boilerplate!

I also like Elm for such projects. It is a satisfying language to get stuff done in. I can’t explain why, just a personal thing.


> When you spend all day working on useful things, doing the work, it's easy for that spark of joy to go out.

Ha. My day job is where I write useless software. My side projects are actually the useful stuff. (only half joking)


I think this recent thread ("Half-baked projects") has a similar theme, and I really enjoyed it:

https://news.ycombinator.com/item?id=37857231


Man I always miss these. I have so much half-baked stuff to show off!


I think it's great to engage with your muse. See what happens and learn something along the way. You don't need to "release" this software on the world.

With that being said, it's your personal site and anything goes. If it's complete enough to be useful/educational/usable then by all means release it.

I hesitate to release anything too early because the internet is full of half-complete projects (devblogs for X game that never make it past episode 2, yet another todo app, a create react app with one commit, "template projects").


Writing dumb little programs to automate some trivially annoying task is one of my favorite things to do. I get to play around with UI design, or build some hideous monstrosity out of reflection and polymorphic generic classes. I get to play with parts of the language I don't normally use. Who cares if it's ugly or slow? It runs once a week, it doesn't matter so long as it works.

I wouldn't really call these programs useless, but I could definitely live without them. The way I like to think about it is making little programs that make my computer suck less.


- https://github.com/akoerner/8ball → bash magic 8 ball that pulls the good entropy from random.org

- https://github.com/akoerner/buzzword_bingo → Generate buzzword bingo cards for all of your meetings

- https://github.com/akoerner/cdbuff → Grandpa's memory pills for the 'cd' command


For individual play, exploration, and edification certainly do it, but sharing such software is careless. Consider keeping it to yourself, otherwise label it clearly for what it is: an experiment, a joke, or a personal challenge. Otherwise it clutter the ecosystem, divert newcomers from battle tested tools, poses security threats, deludes perception of quality by sending message that thoroughness and quality control aren't essential, diverts community to spent time on "useless" projects instead of addressing real-world challenges.


> clutter the ecosystem what ecosystem? > diverts community to spent time on "useless" projects what community? > addressing real-world challenges. what challenges?

i'm curious to know what the criteria or thresholds are for releasing vs not releasing.


ecosystem of packages, libraries, gems, crates or what the fuck people calling this things these days.

community of programmers within different technology stacks.

challenges to make software simpler, smaller and faster, to maintain software and prevent modern bloat from eating up gigahz of cycles on many cores.


Or there's my take: release early, release often, release everything.


Honestly, all those things sound cool and good. Anything that reduces the value of software to capital is great in my book.


I’m building my own de duplication because I found some edge cases


I’ve recently come to the conclusion that “real artists shitpost”. They will play with their craft and make something stupid, all as a form of recreation and expression.


Seeing everything as a new startup or money maker is so unhealthy. There is a whole world to live in and explore and chasing money will never help you find it.


interestingly, i find that many of the things that also make money aren't even really useful, they just exist and people want them for some obscure reason. so you're right, and also it might actually lead to making money anyway because what might seem useless doesn't exclude valuable.


some of my recent useless software with an audience of mostly 1 (me)

https://updownredgreenetc.franzai.com/

click the icon that matches the word (red word -> red icon, green word -> green icon, up word -> up icon, so easy)

http://lalo.li/lsd/ - LSD refactored and now in color

https://flapimoji.franzai.com/ - a flapy bird implementation in emojis

https://ashtanga-muskeln.franzai.com/ - a german yoga anatomy learning app and quizz

same for yoga vokabulary - https://ashtanga-vokabeln.franzai.com/

https://github.com/franzenzenhofer/lighthouse-script - a bulk google lighthouse testing suit

https://github.com/franzenzenhofer/thisismy - thats hard to explain, its a file and website text extracter minyfier copy to clipboard command line tool

https://github.com/franzenzenhofer/qrpwd - backup encrypted data as qr images in your google photos / whatsapp / fb photo streams


Why craft when you can play? Great to see a refreshing perspective amidst the hustle and grind of the tech world. Next time someone asks why I spent my weekend making a digital potato, I'll just link them to this article. On a side note, there's a secret brilliance in 'useless' software: it reveals the pure essence of the coder's joy and curiosity.


I like writing useless software because its use, if any, will exceed initial expectations. Examples:

https://reversedns.space/

https://github.com/ClickHouse/NoiSQL

https://pastila.nl/


> https://reversedns.space/

That's a really cool visualization of the IPv4 space. It's fun to look at it like that. Thank you for sharing.

Did you consider adding an option for lookup in the tooltip and/or coloring by ASN info? It seems it'd be really interesting to see the clusters that would emerge from that.


One of the most impacted "sayings" I once heard that made me think like no other before it.

"Time You Enjoy Wasting Is Not Wasted Timed"


I made a fortune database from Marcus Aurelius's Meditations. You can go "fortune /path/to/meditations" and get a random paragraph from the book. But you need to build it first.

https://github.com/fnune/meditations-fortune


Next useless project: a program that mimicks some "schizo"-memes about CIA-Mind control. Goal is to somehow make it look like the one in the memes, publish it somewhere and see how many folks actively launch that piece of software. Will probably integrate some basic facial recognition like OpenFace n something.


Why software when you could also make it a creative outing for yourself?


It's a creative outing for myself. But dw, when I leave work, I tend to avoid getting in front of my computer as soon as I'm home ahah. Jogging remains my first love, even tho I'm not really good at it.


Some joke/useless software i've written:

- https://github.com/wader/jqjq

- https://github.com/wader/flac.tcl

In most cases i learned way more then i expected. Even made some friends.


Woot, I'm doing this right!

This week's project has been a django app for my house which doesn't seem to do anything useful yet?

requests -> beautifulsoup -> to track website changes? Changes every time! Ugh.

Weather forecast stuff but again useless because forecasts are terrible.


In my eyes nothing is useless. Even the useless machine [1] is not so useless after all!

[1]: https://en.wikipedia.org/wiki/Useless_machine


How do you guys get ideas for “useless” software? I’d like to do some more personal projects but I always get stuck at what I want to even do


Anyone know if there is something like `The Recurse Center` in London ? would be cool to join something like this. :)


It's annoying to constantly face questions like "Why do you make this?" when it's always just "for fun!!"


Stop having fun! ٩(╬ʘ益ʘ╬)۶


This is a great way to exercise programming skills in preparation for "more serious" projects.


What a way to take all the fun out of it.


write all you want, but if your useless software has to be maintained by other people, think really hard about it. and write it properly. I had maintained way too many "don't lose the play factor!!111one" codebases at ${dailyjobs}.


HN Hug of death?


https didn't work, http said "malware and phishing"


Comcast SecurityEdge blacklist strikes again?


Everything I write outside of work hours is specifically useless, if only to keep my work from being used by the enshittification company or the MIC. Yeah, my software is Open Source, have fun trying to find a way to monetize a gopher-to-gemini proxy.


Let's play "devil's advocate" and ... advocate writing LESS "useless" software.

I'm not saying don't work on your own stuff, but if you're going to invest a significant amount of your life into something, ideally it should also have the potential to earn you some money. Unless you're already rich and your problem is boredom instead of money like for the 99.9% of us.

I'm doing just that. I have a long running project that I built for myself, which was tangentially useful in experimenting various software architecture designs but the key part in this project is that it's "business driven". So if I understood something it's the employer's focus on the business rather than the tendency of developers to get lost in the useless beauty of technicalities.

I seldom build a feature for the fun of it, mostly I just need the damn thing to work. And when I do build the feature, it's almost never the most bleeding-edge aggressive optimized version, it takes me weeks and months to think about an use-case so running getting results in 10 seconds versus 100 seconds is absolutely irrelevant, actually relevant if getting 10 seconds instead of 100 takes me another couple hours of thinking.

Recently I am dabbling with the idea of starting another personal side project and again, it's gonna be something of potential commercial value. No harm combining the pleasant with the useful, in fact being useful rather than useless is what keeps me going.


> if you're going to invest a significant amount of your life into something, ideally it should also have the potential to earn you some money.

This is a sad, sad way to live life


I dunno about the greater context of your snippet, but at face value it seems optimistic to me. It's a wonderful thing when many important axes of consideration are in alignment. Many people find happiness in feeling useful, and money is how a civilization abstracts usefulness into something fungible. It's certainly not a perfect abstraction, but it's not inherently good or bad either.


Indeed.

That person is going to end up being the type that will be lying on their death bed thinking "I wish I had allowed myself to have more fun."


> This is a sad, sad way to live life

That’s just how living under capitalism is like for the people who aren’t the lucky few who have a great job doing something they like. If you want a world without the need to earn money, advocate for and implement UBI.

Until then, don’t disparage people trying to earn money.


Thank you for the lecture, Karl


Calling people communists is hardly a productive mode of discourse.


Have fun and learn when you need it, and work to earn when you need it. I see no harm in both.

But it might be better to have some fun in a while (it does not have to be writing code), so you do not feel like you are trapped in an endless rat-race (99.9% are in the rat-race). Having fun would also reduce the probability of burning out / going deep into depression.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: