Some of the best tools I’ve used felt like they started as someone’s private playground that only later got hardened into “serious” software. Letting yourself park Boo, go build a language, and come back when it’s fun again is probably how we get more Rio/Boo-style experiments instead of yet another VS Code skin with a growth deck attached.
This is how many artists have worked. They make something for themself, and one day they show it to someone else ... or they just get the urge to share it more widely, often without the hope that anyone will really be interested. Or they keep it for themself.
I think Tolkien is in that group, for example. But don't get the wrong idea from an extreme outlier: much of the time, others aren't interested, or not many are. Sometimes, nobody is interested until after you've forgotten about it or passed away. Who cares? That's one reason you need to make it for yourself. Also, I think that otherwise it provides much less expression and insight into another person, which is at the core of art. There is a fundamental human need to 'externalize the imagination'.
Unless you're working on something with a lot of breadth, of course. A great example is yt-dlp which works on a huge number of sites. The wow-factor is high because it feels like it just works everywhere. That's only possible through a huge number of data parsers, many of which are not terribly different from one another
Too many software projects treat programmers as factory workers, where their primary value is measured in amount of storypoints or Jira tickets finished. Don't get me wrong, you can be a craftsperson and use an issue tracker ofcourse, but if quantity is the only thing management cares about instead of quality, the craft gets lost in the process. Quantity is easy to measure, quality is not.
At the same time treating software like an art is probably not very useful. That code is (typically) not written to be looked at, but to make the computer do something useful.
It's a shame artisinal software sounds so weird, because that precisely describes the level of caring I'd like to see applied to the software I use.
> Craft software that makes people feel something
Meta, Google, and all of FAANG already did that. They crafted software that made people feel hate, anger, depression, but sometimes joy. It's nice to get those cute animal posts when doom scrolling. It's a nice break from "you're all going to die", "everyone is dumb except you", and "you're powerless".Joking aside, I do very much agree with the OP. But I also wanted to note how things can get perverted. Few people are actually evil and most evil people get there slowly. What's that old cliché that everyone forgets? "The road to hell is paved with good intentions". The point is to constantly check that you're on the right path and realize that most evil is caused in the pursuit of good because good is difficult to do.
But also I wanted to share a Knuth quote
| In fact what I would like to see is thousands of computer scientists let loose to do whatever they want. That’s what really advances the field
- Donald Knuth
I am fully with him on this. It is the same reason Bell Labs had so much success. How do you manage a bunch of geniuses?[0]. You don't.
You let experts explore. They already know the best ways forward. Many will fail, but that's okay. In CS one of the biggest problems we have is that we try to optimize everything, but we're also really bad at math. If you want to optimize search over a large solution space with a highly parallelized processor you create a distribution. It's good to have that mean but you need the tails too and that's what we lose. You tighten the distribution when you need focus on a specific direction but then relax it to go back to exploration. But what we do, is we like railroads. We like to try to carry all the groceries from the car in one trip. We like to go fast, but don't really care where. We love to misquote Knuth about premature optimization to justify our laziness and ignore his quotes about being detail oriented and refining solutions.I think progress has slowed down. And I think it's because we stopped exploring. We're afraid to do anything radical, and that's a shame
[0] Knuth has another quote about programmers not being geniuses lol
This is a habit I picked up from two people I respect greatly as programmers; Casey Muratori and Jonathan Blow.
Those guys both built their own little lands; Jon went as far as building a new language, a 3D game engine in that language, and has multiple game titles in-flight in the engine.
I have a handful of projects that are similar in spirit. I'm largely the only, and target, user of these projects. It's joyful to work in an environment you control completely. No deadlines, no feature requests, no support tickets, no garbage collector, no language runtime .. just me and the OS having a party.
The mouse trail made me feel something else.
Did the author chloroform them?
"When programming becomes repetitive, the odds of you creating something that makes people go “wow” are reduced quite a bit. It isn’t a rule, of course. You need to be inspired to make inspiring software."
The purpose of software for other people is not to make them go 'wow'; it's to help them with their jobs to be done. That's it. The software is always in service to the job the user wants to get done. Can that make them go 'wow'? Sure, but you can't..aim for 'wow'. That's the wrong goal.
As far as 'inspiration' goes, I'm with Stephen King: "Amateurs sit and wait for inspiration, the rest of us just get up and go to work."
For those that might disagree (hey, it's HN), I would ask: how do you know when 'wow' occurs? Here's a clue: 'wow' can only happen when something else occurs first. That 'something else' is described above.
I can relate because of 2 things; 1. I also played a lot of legos during my childhood & loved it. 2. I have a similar "preference" on configurations & shell-profile. (ie. overall setup)
At work, I am the only person who has a personal configuration & automation package (ie. dotfiles) at my director's level organization. (Maybe there is another one or two at most)
Not only that, I also have a nearly complete automation to provision a new machine, virtual or otherwise using the same code. (usually maintained by make && make install)
I update things regularly. It has bunch of "utility" scripts. As it being a $FAANG company, once in a while, here and there, people stumble on scripts/solutions/docs (also markdown). There were even occasional CRs (code-reviews / pull-requests) I received.
It does not cost you anything to put your code on the internet; you don't need to use something like GitHub. You can just publicize a tarball. Its about sharing and giving, which is fundamentally not about you.
When people ask you to open source, they most likely want to learn and build on it.
I tend to do things the same way. I write software that I want to use.
I do tend to go "all the way," though. Making it ship-Quality, releasing it on the App Store, providing supporting Web documentation, etc.
Makes me feel good to do it.
I always used to say "My dream is to work for free."
Livin' the dream...
i can’t explain what, it wasn’t just the colour scheme
atom was objectively worse on performance and a few other things i forget, but it felt so good to use
The more "sentimental" or "egotistical" a piece of software is in itself, the less I like it. Taken to the limit, the title of the article commands us to generate Skinner boxes to maximize user engagement etc.
You can easily induce rage by shipping it full of bugs :)
When quartz watches came up the makers of mechanical watches struggled. Quartz watches are cheaper, more accurate in many cases and servicing is usually restricted to replacing a battery. However some people appreciate a good mechanical watch (and the status symbol aspect of course) and nowadays the mechanical watch market is flourishing. Something similar happened with artificial fabrics (polyester, acrylic) and cheap made clothes, there’s a market for handmade clothes that use natural fabrics.
Nobody (well, barring a few HN readers) will ever care if the software was written by people or a bot, as long as it works.
Good luck for your new project!
That was a look into a world we steered away from.
No, not like that.
That's great, but then what's the point of this article?
The author is seemingly offering advice about why and how software should be built, but then claims to not follow anyone else's advice. Cool.
Just do whatever makes you happy. If you want to work on proprietary editors and programming languages, go ahead. I would argue that doing that in the open would both improve the projects and make the world a better place, far more than blogging about them does, but this doesn't matter if you're optimizing for personal happiness.
We have Microsoft, Google, Apple. This is enough pain. We don't need more.
Fun tidbit: Just to make sure I got it right, I quickly googled the phrase. Gemini's elaboration on the topic truly made me feel something. Gemini's answer:
A "Chinese curse" often refers to the phrase "May you live in interesting times," though it's not actually Chinese but a misinterpreted English saying, while actual Chinese curses involve direct insults like "Cào nǐ mā" (Fuck your mother(sic!))