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.
>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.
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 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.
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. :*)
>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 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.
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.
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.
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)
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.
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.)
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).
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.
> 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.
> 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.
> 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.
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.
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).
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…
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.
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.
> ...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.
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.
> "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.
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.
> 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.
> 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.
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.
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.
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 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!
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.
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.
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.
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.
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!
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.
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
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.
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.
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
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!
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.
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.
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.
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 :-)
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.
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.
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.
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.
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.
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.
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.
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.
266 comments
[ 3.2 ms ] story [ 269 ms ] threadIt doesn’t matter that there are dozens of those drawings made by all the people.
But that learning experience and having a rough idea of what sql is doing under the hood is still useful to me every day.
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.
[0] https://www.glorioustrainwrecks.com/
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.
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.
Please please please elaborate on this. I can probably guess what clown school is but ... what's the motivation here?!
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. :*)
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.
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.
The fact that everyone is either assuming this is an actual clown school or an Ivy League university is telling.
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.
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)
Different play styles suit different people, different moods and different games.
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.
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.
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, 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 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.
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.
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.
I want to be the very best....
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
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.
~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.
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…
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.
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.
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.
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.
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...
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.
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?
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.
> 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.
Well, obviously it's both; there's a lot of rough, but I still want the diamonds that are buried in it.
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.
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!
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.
If Apple makes it so that it's not native, I am pretty sure there will be significant number switching OSes.
And then what? Oh no, they lost 0.1% of their market share!
They do not care about developers. Understand that.
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.
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’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.
http://www.bitboost.com/pawsense/
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'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.
currently, I'm fighting slack to make sure it doesn't update again.
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.
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.
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
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
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.
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.
As a sidenote, letsencrypt.com is free :)
https://github.com/victorqribeiro/dial
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
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.
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
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.
> 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
Which means "not using a database" does not go against "best practice".
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.
https://news.ycombinator.com/item?id=37857231
https://austinhenley.com/blog/makinguselessstuff.html
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.
--Van Gogh
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
https://reversedns.space/
https://github.com/ClickHouse/NoiSQL
https://pastila.nl/
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.
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.