A newsletter-style essay contrasts Vim/Neovim's philosophy of giving users full programmatic control over editor state with VSCode's model of consuming pre-built plugins through a static, heavyweight configuration system. The author argues that despite Vim's superior flexibility, most developers are actually better served by VSCode's consumption model because it offers stronger guarantees: plugins install predictably, conflicts are surfaced rather than silently clobbered, and nothing can silently break your setup. This tradeoff is framed as the 'ability-guarantee tradeoff.' The piece closes with personal notes about starting a new job at Antithesis that requires learning NixOS, an experiment with Helix editor, and various podcast/conference appearances and a book sale for Logic for Programmers.
Questions this post answers
What is the fundamental difference between how Vim and VSCode handle configuration and plugins?
Vim lets users execute arbitrary code that directly modifies running editor state, so anyone can do anything a plugin can do, while VSCode plugins are built by specialists using TypeScript and a heavyweight extension system that ordinary users cannot easily replicate. This makes Vim a one-tier system of equal control and VSCode a two-tier system where plugin authors have more power than everyday users. Developers weighing editor philosophies can find deep dives like this one on daily.dev.
Why might VSCode be a better choice than Neovim for most developers despite being less customizable?
VSCode's rigid, JSON-based plugin system provides stronger guarantees: plugins install and configure the same way every time, conflicting keybindings are flagged instead of silently overridden, and a broken script or plugin cannot corrupt your entire setup. Neovim's flexibility makes it powerful but unpredictable, since figuring out what a given extension's configuration options even are can be extremely difficult. Anyone deciding between a hackable setup and a predictable one can track these editor tradeoffs on daily.dev.