There should be an app, browser, browser add-on, or some other tool called Deshittify which does everything accomplished by uBlock Origin, Pi-hole, Unhook, DeArrow, SponsorBlock, Fakespot (which is now discontinued), ClearURLs, and more, with reasonable defaults and in one convenient package. God, that's a long list. For those who aren't familiar with those tools, they block ads, trackers, addictive designs on YouTube, fake reviews, and more. The web is a mess.
If anyone wants to steal this idea—not that the idea is all that original—please, go right ahead. Mozilla, Brave, someone: do this!
I enjoy the craft of computer programming, the endless desire to solve problems better than I did last time. I may enjoy it more than any other aspect of my job, and it’s served me well in my career. I’ve become a good programmer. I may even be a very good programmer. I don't know. I’m not sure I can make that distinction myself.
Is that enough? I don’t know. In all commercial art, the artist needs to sacrifice some amount of beauty and perfection to pay the bills. (I don't mean for that to sound too pretentious, but I do think of software development as art, or at least much more like art than most people imagine.) Too many sacrifices, though, and the work becomes painful. Where's the line? How much should one allow it to move? I don’t know.
I've been rewriting my Neovim configuration in Lua to take advantage of the built-in LSP client, leverage mini.nvim as much as possible, and use more modern plugins in general. I honestly struggle to understand why the process is so much fun. Maybe it's that perfect balance of challenge and relaxation, novel and familiar. It feels like playing a good video game.
In any case, as enjoyable as it's been, it has only cemented my view that Helix is the future of terminal-based code editing, at least for those who like modal editors. Setting up Neovim for feature parity with Helix is a monumental effort, requiring many, many hours of work. I can't imagine most people being crazy enough to do it, unless of course they find it intrinsically enjoyable. That said, given what I know about the Vim and Neovim communities, a surprising number of people besides me do find it intrinsically enjoyable.
“People don't want to buy a quarter-inch drill. They want a quarter inch hole!”
—Theodore Levitt
I read this today in the 2013 edition of The Design of Everyday Things, and oh goodness, is it true. For the vast majority of people, software is a means to an end. How easily we geeks forget that. The world is not like us.
My mother doesn't want to use Facebook. She wants to connect with relatives. She certainly doesn't want to remember her password, complete multi-factor authentication challenges, create a profile, change her settings, add people as friends, upload images, check her notifications… She wants to connect with relatives. What we techy types call “fun,” what we enjoy perfecting and tinkering with, my mom calls “garbage that gets in the way of what I actually want to do.”
No one wants to use your software. Well, no one but the geeks like us, and even we don't want to tinker with everything. Most people most of the time just want to get things done.
How different would software look if we remembered that?
On the password front, I'm certainly not suggesting we sacrifice digital security for user experience—being hacked isn't a great experience, anyway—but let's use something better, like passkeys. They're just as secure, if not more secure, and they're practically invisible. People hardly even notice themselves using them. That's a good thing.
“As a Facebook user, I want to have my personal information stored and utilized in very specific ways so that I can be manipulated into attempting to dismantle democracy.”
For those who don't get the joke, user stories are used in software development to describe features that should be added to applications. They describe the features concisely, but they are also supposed to be written from the point of view of someone who would want that feature (“As a… I want… so that…”). In practice, many user stories are written based on some mandate from management, even though no reasonable human being would ever want such a thing. In those cases, the user stories sound extremely awkward. Another example might be something like, “As a user, I want to pay more for the software so that the company can make it better over time.” That's the basis of the “Shit User Story” humor. It's funny because it's all to easy to imagine some product manager at Facebook actually writing this.
User stories come from Agile Software Development—a method of developing software that originally intended to empower developers, reward craftsmanship, and improve customer interaction. It saddens me that Agile has become yet another tool of bullshit corporate control, yet another half-assed, top-down process that engineers are forced to follow after the concept has been twisted and mutilated past the point of utility. That's been going on for years, though. I'm not saying anything that hasn't been said a thousand times already. I suppose it could now be called the enshittification of Agile.
Why do non-technical people sometimes dramatically underestimate the time, money, and effort required to build software? I think it’s because they only see the end result: the app, website, or other product.
If a Martian visited Earth and inspected War and Peace or the encyclopedia, they might assume books were easy to produce. Some paper, some ink… what’s the big deal? How hard is it to scribble on pulp or bang on a keyboard? Of course, the visitor wouldn’t understand what the ink and pages represent. They wouldn’t understand how much research went into the work, let alone reading, planning, conversation, editing, and life experience. Thankfully, most of us have had some writing experience in school, and we understand it’s not so simple.
This is a slight rewording of something Alex Limi once said during an internal presentation at Mozilla. The point is not about usage, but rather creation. Building something simplistic is easy, but building something simple is hard. The observation stuck with me, and I think it's a great little maxim.
Think about it in product design. Picasa was simplistic, but Instagram is simple. eBay is simplistic, but Facebook Marketplace is simple. IRC is simplistic, but Slack is simple.
To be clear, I'm not saying Picasa, eBay, or IRC are incapable. On the contrary, they're too powerful. I prefer the designs of Instagram, Facebook Marketplace, and Slack for what they can't do. Of course, whether anyone should use Instagram, Facebook, or Slack is another question. Even cigarettes can be thoughtfully designed.
edit (2026-01-27): I later deleted these chatbots. I wrote about the decision to do so in a blog post.
I created some chatbots which pretend to be historical figures. They respond to messages based on the knowledge, values, and personality of the people they represent. To use one, simply click its link and follow the on-screen instructions. None of the money currently goes to me.
I'm sure there will be hiccups, as there always are, but I'm proud of them. I think they'll be especially useful in education. What better way to learn than by talking to the topic of one's studies?
Abraham Lincoln (link removed)
Dr. Martin Luther King, Jr. (link removed)
Frederick Douglass (link removed)
George Washington (link removed)
Jesus (link removed)
Moses (link removed)
Rosa Parks (link removed)
Socrates (link removed)
Susan B. Anthony (link removed)
The Buddha (link removed)
Thomas Edison (link removed)
The GPTs are built on top of ChatGPT and will launch with the GPT Store some time this week. To use them, one must sign up for ChatGPT Plus, which currently costs $20/mo. None of that money goes to me, and there's currently no way for me to charge an additional fee to use one of my GPTs. OpenAI may adopt a revenue-sharing model in the future, but it hasn't been rolled out yet. I have opinions on that (“Let's make the marketplace less like the App Store and more like Spotify!”” —No publisher ever), but there isn't much I can do about it right now. If I become annoyed enough by the enshittification, I'll consider removing my GPTs in protest. Besides, I don't honestly expect I'll make much money (or any money) doing this. It's just fun.
I have to share credit with my dad, who expressed an interest in chatting with an AI version of Abraham Lincoln. Now it's possible! I'm sure I'll add more historical figures in the future, so keep an eye out. When the GPT store launches, perhaps you'll be able to search my name or otherwise search for GPTs made by me.