A few weeks ago, in Weeknotes 2022 W52: Crisis, I spoke about my mental health struggles. Those ebb and flow, though this week I had the pervasive sense of loneliness, and that’s worth writing about.
This is going to be quite a bit of a read, but I will certainly not apologise.
While I’m still not sure where exactly it originates, I wanted to clarify that loneliness is not the same as being alone. When the latter is true, it is often by choice. I appreciate and even need regular solitude. I have (close) friends that make themselves available when I’m in need. So, if the loneliness is not caused by a lack of connection… then what is causing it?
Intellectual loneliness: I think what I’m feeling is an intellectual loneliness. I’ve got a burning sense of intellectual creativity that needs to be funneled into interesting projects. On those projects, I almost always work alone — but that is not the problem. The problem is that I’ve got too few people to share that enthusiasm with.
It’s hard to define how I want to express that intellectual creativity. A good example is writing a book about creating programming language interpreters, which I wrote about in Weeknotes 2023 W05: Fridge cleaning, or creating budgeting app, which I have been writing about on and off for the last year or so.
An increasingly large problem with creating software and publishing it, is that people will inevitably start using it. While that, erm, is sort of the point of publishing software, it does come with a potentially huge maintenance overhead. To illustrate this: Nanoc no longer feels like a fun hobby; it has turned into unpaid labor. This is why my open-source output has decreased drastically over the years; why I no longer publish new open-source products of my own.
A side effect of publishing less is that I don’t build as many new connections with people that have shared interests, and struggle to maintain existing connections, which leads to that intellectual loneliness.
Fulfillment: Here is what I want to work on: products made for real people, to fulfill real needs. That doesn’t truly happen anymore, despite all the things companies will tell you. All-hands meetings are about progress updates on growth targets, and the questions “what should we build” and “how should we improve our product” inevitably end up being replaced by the dreadful question “how do we hit our growth targets?”
What I mean by “product” is quite broad: it could be a web app (something I, as a tech worker, am good at making), or something quite different, like a piece of fiction writing, a beautiful photograph, or a painting. Those too are “products made for real people, to fulfill real needs.” Art is a real need.
(Dog-fooding is nice, but not required.)
I remember that SoundCloud circa 2013 – 2014 had that feeling of building something that felt useful. I’ve not really felt it since.
It’s just work: A piece of feedback I received at my current employer is that I don’t seem to care much about the product itself. I think that’s only partially true: I understand enough that the work I do is aligned with the larger vision.
However, the concrete work I do is so disconnected from the product, that focusing more on the product would be a distraction from my work goals. Tech stacks have grown so complex and so vast that it is necessary for dedicated roles (like mine) to exist.
To put it quite crudely: The job I have right now is “just work.” It pays the bills. I am good at what I do; my employer is satisfied and we have a good working relationship. But the suggestion that I’m playing an active part in a grand vision, is fiction. There is no way around it: my work is simply too distanced from the product to have a real impact on it, and changing that would be a huge effort, and both my employer and me would be worse off.
Treating my job as just work, and not attempting to turn it into something else, helps a lot with my mental health. It helps me focus and — perhaps ironically — helps me do good work.
The downside is that it makes it hard to build meaningful, long-lasting intellectual relationships.
Fun: Gone are the days where tech would be exciting, weird, mysterious, playful. Gone are the days where people would play around with tech just to see what boundaries they could push, and what fun they could have.
This tech is not fun. It’s not exciting. It’s dull. So dull.
These days, new tech is often presented as a solution, rather than as a piece of innovation; a stepping stone that brings us closer to developing things faster and better. Web sites and READMEs of new tools and frameworks all try to convince you that they are the best and you should use them. There is so much marketing material to cut through before you can figure out what the deal is with a new piece of tech — if you can figure it out at all.
It should be fine to build something experimental, and have it fail. Learnings will come out of that, and those learnings will help shape the next iteration. It is fine for a project to be obsolete in a year or two. Progress is what counts. Cut the marketing BS, be honest about what you create, build to fulfill real needs, and iterate, iterate, iterate.
I’d be remiss not to mention the recent hypes around blockchain and AI. Blockchain technology is hyper-capitalist garbage with no technological value. My opinion about AI is fluctuating, but I believe the tech is inappropriate and damaging for an overwhelming amount of use cases. We have to be careful not to fall for the old trap: “Here’s a new piece of tech, let’s try to use it for literally everything we can think of.”
New purpose: Perhaps I need a new hobby. It would have to be something that is intellectually stimulating and creative.
It would also have to be something where I can find a community. Otherwise, that intellectual loneliness will remain. I’d love a community of people who challenge each other in a constructive way, so that everyone benefits and grows, both as human beings and as creative individuals.
I’d also need people who appreciate my creative output. I mean an appreciation on a fundamental level: hollow praise might be worse than no praise at all. (Comments like “I can tell you put a lot of work in it” are the worst.)
It seems increasingly unlikely that this hobby could be related to tech. All of tech is becoming increasingly toxic, and it is harder and harder to escape. I need a non-tech hobby.
That’ll be a problem, though. Nearly all my hobbies have had to do with tech in one way or another. I grew up with tech; even in elementary school, I built web sites and taught myself how to program because I wanted to make games. I never really picked up any non-tech hobbies.
It has to be a hobby and not work. I’ve been playing with the idea of being a self-employed software developer, but it’ll be really tough to pull off. I’d need some starter money, and a plan to build a sustainable income. And even then, it’ll be just work, and not a hobby. The work I have right now is fine; the problem is that I haven’t been getting much fun — that intellectual curiosity — with hobbies.
I’ve started a list of potential new hobbies — things I want to try and learn. I’ll try out a few things and see what sticks.
Alright. Enough of that for now.
I know I just said “I want new non-tech hobbies,” but I’ve still got tech interests — one of them being the book on writing programming language interpreters in Ruby.
There’s some progress on the initial interpreter implementation, having basic support for strings and a proper symbol definition+resolution phase.
I need to figure out how this book will be different from the excellent Crafting Interpreters book. The way I see it:
My book is for Ruby. (That’s not really a big distinction.)
In my book, I’m exclusively focusing on a tree-walking interpreter. A compiler+VM is out of scope.
The interpreter I’m creating is explicitly multi-pass, which creates more extensibility (so a VM is not out of the question).
I want the symbol definition and resolution to be more explicit. Managing symbol tables isn’t hard, but it’s often overlooked in literature.
In my book, I want to invest effort in good error reporting.
I also want to handle strings in a more robust way, with escape sequences and interpolation (expanding on what I wrote in the Using a modal lexer for parsing sublanguages article earlier).
As I make progress, the distinction between my (hypothetical) book and Crafting Interpreters will become more clear, I imagine.
Here’s a pet peeve: the spelling of “static-site generator.” It needs a hyphen, because “static site generator” is a static generator for sites, while “static-site generator” is a generator for static sites.
It is a battle I will never win.
I keep playing Fallout 76 but I’m not really enjoying it. Why am I playing it? Why am I doing this to myself?
I watched Jurassic World and Jurassic World: Fallen Kingdom. Good: Wow, dinos! Bad: It’s mostly been the same formula.
Atlas of the Munsell color system: It’s so pretty!
How This Window Transformed Chicago (Stewart Hicks): Ooh, now I want to visit Chicago again.
Ice is cooooool (Ayliean): Wholesome ice video.
Is Masculinity In Crisis? (Mia Mulder)
Don’t play Hogwarts Legacy — play these games instead! (Renegade Cut)
I love note-taking games and I DON’T CARE if that sounds boring (Clayton Ashley, Polygon): Yes! I have stacks of old notes from games!
The Best Time to Own a Domain Was 20 Years Ago; The Second Best Time Is Today (Jim Nielsen): I’m very pleased with my own domain!
The Market for Lemons: Hear hear.