Map
โ†‘gingerbill.org (Ginger Bill)

Good Tools Are Invisible

Wiki summarytoolstext-editorsdeveloper-culturedesign โ†ณ show in map Markdown
title
Good Tools Are Invisible
type
summary
summary
Ginger Bill argues a good tool disappears into the background; celebrating its friction as a "fun puzzle" is a sign it's failing you
tags
tools, text-editors, developer-culture, design
created
2026-07-18
updated
2026-07-18

Ginger Bill's July 2026 post makes one claim and defends it from several angles: a good tool is one you stop noticing. When you're proficient with it, it drops into the background and you get on with the work. The moment it can't handle something easily, it becomes visible again โ€” and the thing Bill is arguing against is the habit of treating that friction, the effort of working around a tool's limitations, as the fun part, then advertising it as proof the tool is great.

The macro anecdote

The concrete case is text editors. People have told Bill how "fun" it was to build a vim macro for a one-off text-refactoring problem. When he looked at what they were doing and how long it took, his reaction was that he'd have done it in Sublime in a minute with multiple cursors, or with a quick script. He's careful in the post and in the source comment thread to aim at macro misuse, not vim: if you can use macros effectively, fine, but don't sell a workaround for a tool's weakness as the reward. His own preference for multiple cursors over macros is a feedback-loop argument โ€” cursors give 2D visual feedback on every edit site at once, where a recorded macro shows you one replay at a time and forces a restart when an edge case breaks it.

This is the weakest-supported part of the argument, and HN pushed on it. Several vim users pointed out that dot-repeat plus search-and-replace plus undo gives visual feedback too, and that comparing multiple cursors only against recorded macros ignores how vim is actually used most of the time. One commenter noted the deeper problem with the whole framing: Sublime's multiple cursors are just as much a learned, "visible" feature as vim keybindings โ€” Bill's brain being trained not to notice them doesn't make them objectively invisible. Invisibility, in other words, is relative to the user, which somewhat undercuts using it as a property of the tool.

Tools as identity

The reason these debates turn religious, Bill argues, is that a tool choice becomes a flag you plant โ€” it says something about who you are. The "hacker vibe" is tribal signaling. Once your identity is invested in a tool, admitting its flaws feels like admitting something about yourself, so people defend the flaws and eventually flaunt them. You can't have an honest conversation about a tool with someone who's decided it's part of their personality.

Feeling productive versus being productive

Underneath the anecdote is a gap between feeling productive and being productive. Solving a fiddly problem produces a sensation of cleverness that's easy to mistake for output. The honest test isn't how engaged or clever you felt โ€” it's wall-clock time and how many mistakes you made getting there. This is the same territory Cantrill's "laziness" argument sits in: the real measure of a tool is whether it reduces the human cost of the work, not whether it flatters the person using it.

Defaults are the toolmaker's job

The back half generalizes past editors. Advocates for TUIs over GUIs often complain GUIs can't be driven from the keyboard โ€” but that's not inherent to GUIs, it's just that most toolmakers never bother to make them keyboard-navigable. The common mistake is looking at a category's current limitations and assuming they're essential, when really no one has put in the work. The Linux desktop gets the same diagnosis: part of why it hasn't arrived is that a chunk of its users enjoy fiddling with config files as a puzzle game, so the defaults never had to be good.

From there Bill lands on the toolmaker's responsibility. Maximal configurability shouldn't be the goal; it should be an escape hatch for the genuine minority who need something unusual. "Highly configurable" is often an excuse for shipping no opinion at all and making the resulting work the user's problem. Good defaults are a form of respect for the user's time โ€” the toolmaker does the thinking once so a thousand users don't each have to. A steep learning curve is a cost, not a virtue; the payoff has to be genuine productivity, not the satisfaction of having paid the toll. Treating difficulty as a filter that "keeps out the uncommitted" is usually sunk-cost dressed up as merit.

This is the same design stance behind Zig and Bill's own Odin: opinionated systems languages that ship a decided-on common case rather than a pile of knobs. The contrast the post keeps circling is between a tool that makes you configure and learn it, and a tool that just works and gets out of the way.

The open question

The strongest objection in the discussion, from commenter curtisblaine, is that "invisible" may not be an achievable category. Every tool is either simple and limited (so hard things stay hard, and it's visible when you hit them) or powerful and specialized (so the learning curve is evident up front). The bridge cases people could name โ€” ssh, Google search โ€” are few. Bill's essay reads better as a direction to push in than a state most tools can reach: reduce the friction, decide the common case, stop selling the workarounds as features. Whether a genuinely powerful tool can ever fully disappear is left unresolved.

A related distinction the article blurs, raised by another commenter: CLI tools (grep, git, cp) compose into pipelines and are invisible in a different sense than TUI apps (vim, emacs, tmux) that take over the terminal. The "get out of the way" argument applies most cleanly to the interactive tools you sit inside all day, which is where the editor examples come from.

  • gingerbill-blog โ€” Ginger Bill, Odin's creator, on tool and language design
  • editor-as-ui and text-editor-as-ui โ€” the opposite corner of the same subject: leaning on the editor the user already knows so a program needs no UI of its own, which is invisibility by reuse
  • peril-of-laziness-lost โ€” Cantrill's version of "measure the tool by human cost, not by output volume or apparent cleverness"
  • zig โ€” an adjacent opinionated-defaults systems language in the same design tradition as Bill's Odin