Reflections

softwaredevelopment

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 people call “fun,” what we enjoy perfecting and tinkering with, my mom calls “crap that gets in the way of what I 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.

#Favorites #Maxims #Quotes #SoftwareDevelopment #Tech

“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.”

Shit User Story on X

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, often 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.

#Life #SocialMedia #SoftwareDevelopment #Tech

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.

An open book lying on a sandy beach, with the water and sky visible in the background. No people are pictured nearby.
Image by Michael Kauer from Pixabay

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.

Read more...

Building software is easy. Maintaining software is hard.

#Maxims #SoftwareDevelopment #Tech

Simplistic is easy. Simple is hard.

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.

#Favorites #Quotes #SoftwareDevelopment #Tech

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.

#Life #SoftwareDevelopment #Tech

In researching alternative shells, I came across zx, a JavaScript runtime for shell scripting. It looks great! Perhaps I'll use it some time.

#SoftwareDevelopment #Tech

Bash has always felt like a programming language designed by someone who sleeps upside down and eats soup with a fork. I kind of love it, though.

#SoftwareDevelopment #Tech

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.

Have at it!

#Favorites #Life #SoftwareDevelopment #Tech

The best design is invisible.

In most music apps, I inevitably leave shuffle mode on for longer than I'd like. I might enable it when listening to a playlist. When I later listen to an album, I might get halfway through before realizing shuffle is still enabled and the songs are playing out of order.

This never seems to happen on Spotify, however. Spotify seems to automatically disable shuffle whenever it's no longer wanted. I don't know what heuristic Spotify uses to determine when shuffle should be disabled, and as a user, I don't really need to care. All I know is that shuffle never seems to be on when it shouldn't be.

#SoftwareDevelopment #Tech