Skip to content
Go back

Forty-Eight Extensions Later: Seventeen Of Them Aren't For The Work I Do Now đź”§

$ ls -1 ~/.vscode/extensions | wc -l
49

Forty-nine entries. One of them is extensions.json, the manifest VS Code keeps, so forty-eight actual extensions — and every single one of them recorded in that manifest too, with nothing orphaned on disk. The install is in perfect health.

It’s also, when you look at what’s actually in there, an archaeological site.


How I Counted It Honestly đź§®

I didn’t want to write this post from memory, because from memory I’d have told you I use “maybe a dozen extensions, mostly markdown stuff.” So:

$ find ~/.vscode/extensions -maxdepth 1 -mindepth 1 -type d | wc -l
48

Then I cross-checked against the manifest rather than trusting either one:

For the cross-check I read the manifest and the directory listing separately and compared the two sets — record id against folder name, both directions:

recorded in extensions.json : 48
directories on disk         : 48
dirs NOT recorded (orphans) : 0
recorded but missing on disk: 0

Both numbers agree, no leftovers, nothing half-installed. Whatever I’m about to say about these extensions, at least the counting isn’t in dispute.


The Breakdown 📊

Grouped by what they’re for:

CohortCountWhat’s in it
Editor quality-of-life15error lens, todo tree, bookmarks, indent rainbow, themes
Embedded / MCU12STM32 CubeIDE parts, MCU debug views, PlatformIO, ESP-IDF, Cortex-Debug
C/C++ toolchain5cpptools, CMake tools, dev tools, extension pack, themes
Python4interpreter, Pylance, debugpy, envs
Markdown4all-in-one, markdownlint, checkbox, emoji
Static site / Hugo4Hugo essentials, language pack, theme, front matter
Containers2containers, remote-containers
AI2ChatGPT, Codex

That’s all forty-eight.

Now the number I put in the headline: twelve plus five is seventeen. Seventeen extensions — over a third of the entire install — exist for embedded and C/C++ work.

Bar chart of the eight extension cohorts on a single machine: editor quality-of-life at fifteen, embedded MCU at twelve, C/C++ toolchain at five, Python at four, Markdown at four, static site Hugo at four, containers at two, and AI at two — forty-eight in total. The two rightmost-of-the-large bars, embedded and C/C++, together make up seventeen extensions.

And the thing this machine actually builds, day after day, is a Node site.


Seventeen Extensions For Work This Box Doesn’t Do 🔩

Twelve of them are for microcontrollers. Four are the STM32 CubeIDE pieces — build, core, debug core, and the ST-Link GDB server. Four more are a family of MCU debug views: memory, peripheral, RTOS, and a debug tracker. Then PlatformIO, ESP-IDF for the ESP32 side, bmd.stm32-for-vscode, and marus25.cortex-debug.

That is an entire toolchain. Memory viewers and RTOS-awareness and a GDB server, sitting in a directory, on a machine that ships markdown.

Five more give me a C/C++ compiler toolchain, a CMake integration, an extension pack and a matching theme.

None of it is wrong. Every one of those was installed because I needed it, probably on a day I needed it urgently. That’s how toolchains get built — you install what the problem in front of you requires, and you keep it because uninstalling takes a decision and keeping it costs nothing you can feel.

Until you count.


The Part I’d Defend 🔒

Here’s where I want to be careful, because this could easily turn into the wrong conclusion.

The answer is not “delete the seventeen.” That’s an audit responding to its own numbers instead of to reality, and the moment I delete a GDB server because a bar chart made me feel untidy, I’ll be reinstalling it inside a week with a much worse mood.

So I split them by a different question — not when did I use it, but what does it cost me to have it:

The first group is storage. The second group is attention.

That reframing moved half the “obvious cuts” off the list — the C/C++ ones are almost free — and pointed the knife straight at a handful of visual modifications that change every file I open.


The Rule 📜

So here’s what I’m actually going to do, and it deliberately isn’t “get down to ten”:

Prune by load, not by age.

  1. Anything that only loads for a language I’m not touching this month stays. Cheap. Leave it.
  2. Anything that decorates every file has to justify itself against the version of VS Code without it.
  3. Nothing gets removed because a number looks embarrassing.

Seventeen extensions for another kind of work is not a confession. It’s a record of problems I actually solved, and the fact that this machine has done more than one kind of thing is a better problem to have than a tidy install that’s never been asked to do anything unusual.

The audit’s job was never to reach zero. It was to stop pretending I knew the number without looking. 🔧

What’s sitting in your editor that you’d never admit to installing — and would you actually remove it? 👇


Share this post on:

Previous Post
The 2AM Plugin Autopsy: Two Lines Of Config That Never Ran 🩺
Next Post
My AI Toolchain Graveyard: What The Headstones Actually Say ⚰️