Write more "useless" software
ntietz.com
ntietz.com
- 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
Which opinions do you tender?
and
Do you need a beefy GPU?
The result really was food for thought.
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.
Actually finally found a justifiable use case for infinite scroll
https://untested.sonnet.io/Here's+a+List+of+Toys
I actually forgot about a bunch of those
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!"
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.
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.htmlIn 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
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
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.
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.
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.
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.
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.
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...
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.
Yeah, and humanity should speak the same language everywhere. Also, we have enough food for everybody, why are some people starving?
Welcome to reality.
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.
Thanks for listening to my ted talk.
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.
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.
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.
~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.
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.
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.
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 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.
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
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.
It 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.
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.
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!
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.
[1] https://coderev.app, https://zeeq.ai
[3] e.g. https://github.com/CharlieDigital/hekaton, other contract projects
As a sidenote, letsencrypt.com is free :)
Don't confuse exploratory learning code with production code, respect the boundary (IMO)
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.
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.
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!
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
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.
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!
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.
* 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.
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.
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
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.
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.
What does this mean?
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.
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.
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.
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.
Ha. My day job is where I write useless software. My side projects are actually the useful stuff. (only half joking)
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").
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/buzzword_bingo → Generate buzzword bingo cards for all of your meetings
- https://github.com/akoerner/cdbuff → Grandpa's memory pills for the 'cd' command
i'm curious to know what the criteria or thresholds are for releasing vs not releasing.
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.
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
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.
"Time You Enjoy Wasting Is Not Wasted Timed"
- 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.
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.
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.
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.
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."
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.