A Brief Aside on "Why"
Sometimes I find myself spending lots of time on personal hobby projects that appear to have very little real world purpose to others. Those I share the project with ask me why I bothered. Either that or they nervously smile and change the topic. As to the question of why, I understand the impulse to ask it. I too have heard about projects that lead me to ask the same question. In the past, I’ve struggled to answer this question in a way that wasn’t an attempt to exaggerate the utility of the thing I was working on, or to promise some future utility “because it’s cool! This will one day open up the possibility of X for me, and it solves problem Y…”. I have been thinking about this a lot recently, and think I can finally answer the question in a coherent manner.
I’ve been working on a hardware project that involved connecting my standing desk to the internet. If I describe that project in pure utilitarian terms, its utility can be boiled down to “I want my desk to go up when I make a HTTP request to a specific endpoint”. How useful is this, really? Isn’t the previous solution of just leaning over to the right around 6 inches and pressing the button for a few seconds convenient enough for me? This is a perfectly reasonable question - if you assume my goal was to solve a real problem that mattered.
In the last few years, I’ve found that my love of tech has been dying a bit. Earlier in my life, I’d constantly experiment with Linux distributions, window managers, programming languages, text editors, hardware - really whatever was interesting that day. Spending the day compiling my kernel to test some silly tweak was never an issue. In the last couple years however I’d noticed that this experimentalist nature in me had died. I used a completely conventional Linux distro. I didn’t even bother to change the wallpaper. I had a bone stock phone. Electronics experimentalism was limited to projects that I could justify as having some real utility. If they weren’t useful, why would I waste my time on them? I learned Golang - and fell in love with its very utilitarian “get shit done” nature. No tabs versus spaces wars, no nine ways of doing the same thing, all of which are somehow not best practice according to somebody somewhere. I grew to dislike working in almost any other language.
More recently, that experimentalism seems to have bloomed in me again. I think that what originally killed it was a marriage to utility - the idea that everything I build should have some inherent useful output. Maybe I envision turning it into a startup one day. Maybe it solves a problem that others care about? Why experiment with a different Linux distribution when I can get by just fine with the one I have? Isn’t that just a total waste of time? Why bother solving some tiny niggle with a standing desk through weeks of research and learning - when the time could be better spent watching Star Trek? Maybe I could have just bought a different standing desk.
In addition, my love of tech is back in full force again. I’m now trying
NixOS
, a Linux distribution that bills itself a reproducible, declarative and reliable operating system
. Some expressed ridicule when I mentioned this to
them. Isn’t that just a waste of time? To some degree, they’re right. Everything
I do on my new shiny NixOS install is possible on any other distro, and is
almost certainly possible on a Mac. What they probably didn’t understand though
is that this wasn’t a utilitarian decision. I didn’t switch to NixOS with any
hope of improved productivity. I switched because I wanted to see what it was
all about. I wanted to struggle to figure it out. I wanted to see what the
benefits are. In that process, I have learned far more about how Linux works at
a low level than I have in my years just sticking with the known working thing.
The skills I acquired along the way will be helpful even if I decide to abandon
NixOS one day. I didn’t switch because it was the prudent thing to do - I
switched for switchings sake.
I recently acquired a 3D Printer. Many people buy a 3D printer with the goal of eventually turning it into a side gig - producing parts or whatever. I didn’t. I bought a 3D printer because I wanted to learn to model in 3D. I didn’t have a specific utilitarian goal in mind, but I felt that owning a 3D printer would push me to learn to design things in CAD in a way that doing it without having a way to make it physical would not. It did not improve my productivity in any way. My day job in DevOps is about as far from CAD as one can get - and I’m not considering any sort of career change. I don’t think I’ll ever design something that I intend to sell. I wanted to learn CAD because I thought it’d be fun, so I am, and I was right. It is fun, and it turns out 3D printers are hilariously useful machines to have around if you are willing to spend the time to use them properly. I didn’t buy a 3D printer because it solved a particular problem, or because I intend to become a product designer or artist. I bought it because I wondered how it worked.
So, revisiting the standing desk project one more time. Why did I do it? One skill I’ve always wished I had was knowing how to “sniff” data from consumer grade hardware so I could ship it off somewhere more useful. I’ve always wanted to develop some competency in C++ too - given it’s a language I’ve never had the opportunity to really write any significant amount of it. I looked around my desk, and decided that the nearest thing to me to had some data I could sniff was actually my desk. What if I could make it go up and down from HTTP requests? What if I could query its height from the internet? Thus, a project with very little apparent utility turns into an amazing puzzle, with endless learning opportunities. It involved learning some C++, how to operate a Logic Analyzer, how to decode i2c, some basic electronics, there was even a fairly hilarious reminder about hysteresis I’ll cover in a future post.
This might be obvious to some. I believe the reason why experimentalism like this captures my soul so completely when it does is because the goal is rarely the point. It’s the exploration. The learning. The sheer joy at making something work. The surprise when some previously insurmountable obstacle is surmounted. The dopamine rush as a whole new world of possibilities opens up to you. The new skills acquired along the way. The friends made when seeking help in random internet forums. It turns out that sometimes, the journey taken is far more important than the end goal.
I really hope I can keep feeling okay to taking my time working on things that have no obvious point, because the real answer to the question of why, is why not?
Other writing
- https://sigbovik.org/ the home of the Association for Computational Heresy - I specifically recommend YT: Harder drives as a good starting point. Imagine the worst storage mediums you can think of, and then marvel at the fact that these are somehow worse.
- http://antirez.com/news/123 - Antirez on the value of projects with “Hack value”.
- Hackers: Heroes of the Computer Revolution - Steven Levy - A fantastic book looking back at early hacker culture
Let me know what you thought! Hit me up on Mastodon at @kn100@fosstodon.org.