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, however, most user stories are written to add some feature that some manager wants, even though no reasonable human being would ever want such a thing. In those cases, the user stories sound extremely awkward. Another might be, “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.
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.
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.
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?
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.
edit (2025-12-15): I could move these personalities to character.ai, but given what I've heard about the platform, and given its fairly negative reputation overall, I don't want to support them.
After honing them for many years, I've finally open-sourced my dotfiles. For those unacquainted, dotfiles are small files that customize a computer and its programs, as well as a set of utilities that make day-to-day operations easier. If a computer is a workshop, dotfiles are the shelves, pegboard, and carefully crafted tools.
I've actually never thought of dotfiles that way until writing that sentence. I'm reminded of my papou's workshop, which he loved just as much, if not more. I guess his skills really do live on in me, albeit in a different form. I also have no doubt he would cry if he could read this. He was extremely sensitive and sweet, a WWII teddy bear. I inherited some of that from him.
In any case, I'm open-sourcing my dotfiles because I hope they can be useful to others. I've shared them under the MIT license, which basically means anyone can use them for any purpose as long as they give me credit. It's another departure from my past ideological support for the GPL, which enforces something like mandatory cooperation. I definitely admire and see the value in the GPL, but I don't think it makes sense for a simple project like this. Use my code! I'm just glad it may be helpful.
On the technical side, I'm really proud of my shell scripts, Bash functions, and methods of organization. I started using docopts in shell scripts about one or two months ago, and it's a real game-changer. I encourage everyone to check it out. It may even help others reuse my code.