John Karahalis

SoftwareDevelopment

Progress bars—those little horizontal bars that fill from left to right as your laptop or phone updates—are notoriously unreliable. One moment, a progress bar might be 10% full. The next thing you know, the work is done. If a written estimate is provided (e.g., “10 minutes”), you might notice it change dramatically in an instant.

As it turns out, building accurate progress bars is extremely difficult. In most cases, it's almost impossible for the computer to know how long the work will take without actually doing it.

This is the problem of software project estimation in microcosm.

#Business #Favorites #SoftwareDevelopment #Technology

I’m a long time Mozilla supporter, I’ve published free and open-source software, and I desperately want Mozilla to charge for Firefox. If that sounds like a contradiction, please keep reading.

Read more...

Politics has become a means of self-realization rather than a tool for solving practical problems. Views on enlightenment differ, of course, causing intense conflict and distrust. To restore our trust in each other and the political process, now may be a good time to focus on common-sense legislation with broad appeal. Let's eliminate daylight saving time, outlaw deceptive resort fees, and begin to regulate social media. Let's stop tech support scammers, strengthen online privacy, and standardize on one charging connector for electric cars. Let's make browser vendors work together to prevent identity theft. These things may seem inconsequential, but getting along couldn't be more important. Along the way, we might discover that politics doesn't always have to be so acrimonious.

#Belief #Business #Communication #Favorites #Philosophy #Politics #SocialMedia #SoftwareDevelopment #Technology #UserExperience #Wellbeing

I once wrote a blog post entitled Less is more. It did fairly well on Hacker News, and two people commented in situ. I was pretty excited. (The comments weren't able to be migrated here.)

Years later, I read the following article from the Washington Post, which dovetails nicely with it. I recommend giving it a read:

We instinctively add on new features and fixes. Why don’t we subtract instead?

#Business #PersonalDevelopment #SoftwareDevelopment #Technology #Usability #UserExperience

I've been using Android for more than ten years now. I originally chose it in an ethical commitment to open-source software, but it's become less open over time.

Some people might be surprised to learn that I think Apple makes better products. Apple understands usability and user experience better than almost any software company, they pay exceptional attention to detail, and they've done genuinely important work on privacy. Still, they're not perfect. I think Apple too often prioritizes form over function, with the overuse of gestures being a good example, they lock users into their ecosystem, they position their products as status symbols, and they don't play nicely with others. In my opinion, they also market privacy more effectively than they actually protect it.

As an aside, I'm disappointed that Apple has become “the privacy company” when Mozilla should have claimed that title long before them. In hindsight, Mozilla may have been mistaken not to strike while the iron was hot in June 2013. Of course, it's easy to play Monday morning quarterback; it's harder to be in charge. At least Mozilla is doing great work on privacy today.

In any case, I'm considering making my next phone an iPhone, but switching now would be a hassle. Vendor lock-in is real and Google is almost as guilty as Apple. Interoperability matters.

#Business #SoftwareDevelopment #Technology #Usability #UserExperience

The Helix text editor fascinates me.

Vim has been my primary text editor for more than ten years now. (Technically, I've been using Neovim for two or three years, but for the sake of simplicity, I'll use the term Vim generically in this post. The two editors aren't that different, in the grand scheme of things, and their differences aren't relevant here.)

I think of Vim as an IDE that one builds themselves. That can be good and bad. I have a deep understanding of my editor's capabilities, for example, because I enabled many of its features myself. It's also completely free and it supports just about every popular programming language out there. However, configuring it takes time and handling conflicts between plugins can be annoying. I also find that it's difficult to keep abreast of the state of the art in text editing this way. It took me a while to discover that other people were using multiple cursors, for example, because that feature wasn't added to my editor automatically. I'm sure there are lots of other useful features I could add to Vim, if only I knew they were common in other editors. I don't know what I don't know.

Ultimately, if I were just starting out today, I'm not sure that I'd make the same investment in Vim. When command-line editing is truly required (my original motivation), Micro is a great choice, being much easier to use and more than powerful enough for most tasks. For everything else, JetBrains IDEs are pretty magical, if occasionally overwhelming.

Helix seems to sit somewhere in the middle. It's console-based, with modal editing and Vim-like keybindings, but with Everything Everyone Wants built-in: LSP, tree-sitter, fuzzy-finding, etc.

I'm not sure which editor I'll be using in ten years. Maybe I'll still be using Vim because it's comfortable, or JetBrains because it's straightforward. I'll add Helix to the list of contenders, though.

#SoftwareDevelopment #Technology #Usability #UserExperience

When writing software, we should approach our own ideas with skepticism. We have more ideas than users have needs.

Features do not guarantee success. If they did, we would line up to trade smartphones for punch cards. Myspace would acquire Twitter. Picasa would be the new Instagram. This doesn’t happen. The history of software is the history of simplicity and elegance winning. We succeed when we attend to what really matters, not when we build every feature imaginable.

Read more...