Reflections

Thoughts from John Karahalis

He wears a mask, and his face grows to fit it.

—George Orwell in Shooting an Elephant

#Life #Quotes

Managers and organizations want to know exactly when features, bug fixes, and other work will be done. Many have not been software engineers themselves, so they ask for exact dates. Sure, you can be off by a day or two—maybe!—but more than that, and it's a problem. After all, their boss needs to know what to promise customers. What's so hard about knowing when you'll be done?

Sadly, software cannot be estimated that way, and we need to stop pretending otherwise. It's a myth—a pervasive one—and perpetuating that myth only perpetuates its harm.

An illustration of a man with an unhappy expression looking at a piece of paper in a physically impossible maze inspired by M. C. Escher's artwork. In the background, a woman can be seen navigating the maze, confused.
Image by ChatGPT

Sure, if a task is almost identical to some previous task, a precise and reliable estimate really can be communicated. Unfortunately, that almost never happens. If the work ahead were so similar, someone would have done it already using copy and paste. If it's similar and the engineering team wanted to set themselves up for success later, they'd refactor the system, but that refactoring itself can be a hazy fog of unknowns. We've all been there many times.

Read more...

Tomorrow may rain, so I'll follow the sun

—Paul McCartney

#Life #Quotes

My friend, Rachel, who has much more experience with pets than I do, shared an excellent bit of wisdom after Kika died.

Death isn’t a failure of care.

On some level, it seems obvious enough. No one has ever beaten death. Your loved one was supposed to be the first? I don't think so.

An illustration of Kika on a desk with a blanket wrapped around her. Kika looks tired but grateful.
Image by ChatGPT, based on a photo of Kika in her final days

On another level, I find the statement difficult to accept. There's always more that could have been done. I could have timed her medication better. I could have brushed her more to calm her and to express my love. I could have slept by her side those final days, on the floor of my office where she hid at night. I don't know why the idea only occurred to me later. Maybe she would have lived longer if I had. (To be fair to myself, I was pretty confused and exhausted in those final days. Perhaps I couldn't think clearly with her health declining.)

Read more...

I want to record an important principle I follow when writing on this blog. I do not use AI to write significant portions of text for me, and I have no intention of ever doing so. The process of writing is so helpful that I can't give it up.

There was an article where GPT-4 attempted to write three posts in my voice, but it was clearly explained as such. I also occasionally use AI to help with my grammar or other phrasing, but in those cases, I never lift more than a few words from the response. I consult with AI about wording like that about as often as I consult a thesaurus.

AI slop doesn't worry me as much as it worries some others. I expect AI-generated content will improve dramatically over time and will become indistinguishable from content produced by the human mind. We may already be there, for all intents and purposes. As far as I'm concerned, that's not the point. Again, the process of writing benefits me, and I'm not willing to forego that benefit.

There is an upcoming post which uses an image generated by ChatGPT. That post credits ChatGPT as the creator, and I plan to always credit AI for images it creates.

#Life #Tech

“Everybody wants to save the Earth; nobody wants to help Mom do the dishes.”

—P.J. O'Rourke

I love this quote, because I've been that guy. I've been the guy who thinks he can save the world but who literally doesn't help his mom with the dishes when he visits. Thankfully, I've dramatically softened in my activism (appropriately discussed ever so briefly in a recipe but nowhere else on this blog), if it can even be called activism any more, and I did help my mom with the dishes during my most recent visit, although I'm sure I could have done more.

I interpret the statement like this: riding a “high horse” can be fun, and there really are important societal problems that ordinary people can help improve. That said, there are always more ordinary problems that need attention, and sometimes fixing those things goes further than protesting in the streets.

#Life #Quotes #SocialMedia #Tech

I'm a Woz, not a Jobs. I write this in reference to the personalities of Steve Wozniak and Steve Jobs, the founders of Apple, although I would never claim to be as intelligent or as effective as either of them. Although I do have a strong product mindset and deep interests in usability and user experience, at the end of the day, like Wozniak, I want to be a good programmer, not a good businessman. I want to learn, not earn.

Some people are motivated by money, and that's completely reasonable. It pays the bills! It's just not who I am. It's not who I've ever been. Money, metrics, status: I care about those things like penguins care about Pilates. I'd rather watch paint dry.

Don't get me wrong. I can be deeply motivated under the right circumstances. You can hardly pull me away from the computer when I'm learning, iterating, honing my craft, and producing something I'm proud of. That's where I find flow. “Faster, faster, faster, more, more, more!” just because that’s what your boss wants? No, that doesn't work on me.

I'm amazed that style of management works on anyone, to be honest, but it must. I suppose some people who are motivated by promotions and prestige can clench their teeth and bear it. Maybe they even enjoy the challenge. Me? I don't see the point. Life is short, and nobody spends their final moments reminiscing about their corner office or their fancy car. Let's be honest, those things lost their luster after one week.

I regret not being more clear about this aspect of my personality in the past. Moving forward, I want to embrace who I am. If others don't like it, that's fine, but they're probably not the right person for me, and I'm probably not the right person for them.

#Favorites #Life #Maxims #SoftwareDevelopment #Tech

The other day, I watched as a customer walked into a restaurant asking for his order. The restaurant hadn't received the order, however, and the man became upset. He admitted that he's not great with technology, and he complained that this always seems to happen with the restaurant's third-party ordering system. When it does happen, he gets no confirmation email and his card is not charged.

The next day, someone in an online class expressed confusion about how to meet their coach for a scheduled appointment, but the coach had no appointment on their calendar. Similarly, years earlier, a relative told me they had ordered an Uber, but it never showed up.

In all of these cases, I'm almost certain the users did not click the final button labeled Order, Confirm, Submit, or similar. (The restaurant owner blamed browser cookies, but that has nothing to do with it.)

I can hardly blame these users, though. I once showed up to a hotel, thinking I had booked a room with them, only to find that they had no reservation under my name. I looked for the confirmation email, and sure enough, it didn't exist! I needed to quickly book with some rinky-dink place across the street. I had made the same mistake!

This isn't about tech literacy or intelligence; it's about bad user interface design. A depressing amount of software ignores the basic rules of usable design. In this case, what looks like a confirmation screen (i.e., “your order has been placed”) may actually be a confirm screen (i.e., “tell us that you're sure”). When users are on those screens, their loci of attention may be on the order details rather than the user interface. They want to know that the flight time is correct. They want to know that the price is correct. They may not be paying attention to the Confirm button, which is probably offscreen anyway. They may not be looking at the tiny text at the top which reads, “Please review this information before booking your flight.” They are focused on something else, which may explain why they miss context clues in the periphery. Jef Raskin discusses this at length in his book, The Humane Interface.

So before leaving an app, website, or other ordering system, be sure to confirm, confirm, and confirm again. Slow down. Read carefully. Scroll. Zoom in and out. Make sure there's nothing else you need to do. A few seconds of prudence may prevent lots of frustration later.

#Life #SoftwareDevelopment #Tech #TechTips

Freedom is what you do with what's been done to you.

—Unknown, often incorrectly attributed to Jean-Paul Sartre

There may be hundreds of quotes from Stoicism and other traditions that make a similar point. I also wrote something along the same lines in “You're the only person you can control”.

It is really true what philosophy tells us, that life must be understood backwards. But with this, one forgets the second proposition, that it must be lived forwards. A proposition which, the more it is subjected to careful thought, the more it ends up concluding precisely that life at any given moment cannot really ever be fully understood; exactly because there is no single moment where time stops completely in order for me to take position [to do this]: going backwards.

—Søren Kierkegaard, as translated by Palle Jorgensen

This reminds me of what Steve Jobs said in his 2005 Stanford Commencement Address: “You can't connect the dots looking forward, you can only connect them looking backwards.” Based on the stories I've heard of Jobs, I wouldn't be surprised if he knew he was borrowing from Kierkegaard.

#Favorites #Life #Quotes

Enter your email to subscribe to updates.