17 min readJust now
–
Press enter or click to view image in full size
**Warning: **This article contains swearing (Quoted, from Bill Gates).
As a UNIX-aligned engineer, I’ve always looked down on anything Microsoft.
But a recent cross-platform project forced me to learn PowerShell — a technology which, just like blockchain, is amusing by how its core idea almost makes sense.
Besides tech details, I want to explore the psychological impact that a piece of documentation had on me. A political piece on par with Machiavelli, “The Monad Manifesto.”
Yes, PowerShell was originally called “Monad.” More on that later.
Let’s be clear: I respect PowerShell. I’m not here to make fun of it, no matter how hilarious some of its hubri…
17 min readJust now
–
Press enter or click to view image in full size
**Warning: **This article contains swearing (Quoted, from Bill Gates).
As a UNIX-aligned engineer, I’ve always looked down on anything Microsoft.
But a recent cross-platform project forced me to learn PowerShell — a technology which, just like blockchain, is amusing by how its core idea almost makes sense.
Besides tech details, I want to explore the psychological impact that a piece of documentation had on me. A political piece on par with Machiavelli, “The Monad Manifesto.”
Yes, PowerShell was originally called “Monad.” More on that later.
Let’s be clear: I respect PowerShell. I’m not here to make fun of it, no matter how hilarious some of its hubris may be. I’m using PowerShell as a case study for a universal truth about survival in the corporate tech world. I’m here to teach you how to win flame wars and influence the roadmap.
This article is for those who want to learn the dark arts of tech persuasion. Those who value agency at work. Those who want to avoid the “Cassandra burnout” of seeing the iceberg your project is headed towards, but which management ignores because you didn’t frame it right.
The Master Persuader
Jeffrey Snover is the creator of PowerShell. Currently a Distinguished Engineer at Google. He also worked at MIT before Microsoft. He’s one of the architects of our modern world alright.
He wrote the “Monad Manifesto” to explain his vision for PowerShell.
The very fact that the previous sentence is true, can only be captured by a three-letter acronym: LOL.
Snover had a years-long battle to realize his vision. As he puts it:
I had executives say, “What the hell is this Snover guy talking about? Comes in from the outside, doesn’t drive a freaking Porsche.” […] But over here, it’s like, I wrote this GUI, I got a promo, John wrote a GUI, he got a promo. Like, who’s the person who wrote a CLI and got a promo? ¹
A recent talk by Snover at “PowerShell Summit 2025,” and a CoRecursive 2024 interview, substantiate my claims. The fact that the conference video² sits at 250 views despite the bombshells might be a sign that the algorithm turned a blind eye to his damning testimony.
When I joined Microsoft, we’d done a study of the differences between administering a UNIX system and a Windows system — And by the way, I’ve never told this story in public. It was a devastating report. […] For the things that you could automate on both Windows and UNIX, it took Windows admins on average 10 times longer. More horrific than that report was the response from the Windows team, “That’s ok, Windows admins are really cheap.” I was horrified.³
A viral tweet by Snover in 2022⁴ clued many about the nature of his journey:
When I was doing the prototype for what became PowerShell, a friend cautioned me saying that was the sort of thing that got people fired.
I didn’t get fired.
I got demoted.
It was profoundly embarrassing.
I had to tell my wife, but I kept it from my family and friends.
I never mentioned it to anyone for over a decade until I got promoted to Distinguished Engineer.
In the end, they figured out [that Powershell is the unifying tool suite for admins, and it saves the bacon every day.] but I was in the doghouse for 5+ years.
How did he build the rhetorical playbook which saved the bacon? Well, look at his background:
I am a college dropout. In college I studied Physics, Philosophy, and beer drinking. As all physics/philosophy dropouts with bad fashion and a terrible sense of hygiene, I became a UNIX admin [laughs].⁵
Microsoft’s 2000s Hellscape
GUIs were considered the “next big thing” in tech from the Xerox days in the 80s to the late 2000s — not unlike today’s AI hype.
As Snover himself recalls, “Two keynotes ago, Bill Gates got up there and said, ‘Look, here’s cmd.exe. It’s the last time you’re ever going to see it.’ And he types exit, carriage return, and it goes away.“⁶
How did a UNIX guru end up at this Microsoft? Snover explains:
On my final interview, I said, “No, Microsoft software is crap.” [The interviewer] said, “Jeffrey, I know, and I need help. Think of it this way: if you do come here and help me fix this, think of the effect you’ll have on the world.” That was like a laser-guided missile to my psyche. I said, “Yeah, I’m in”⁷
Snover was opposed to the GUI-only model, so he devised a plan:
We’ve got to develop our own professional class of administrators, people who can do more than just click “next.” And then they can become heroes. So how do we do that? The answer is of course, the Unix composition model. Have a standard tool chest of small tools that these people can put together to solve unique problems, automate it, and then go solve the next one.⁸
Yet to get anything done at Microsoft, it had to pass through the boss.
The Rage of Bill Gates and The Judo Gambit
What follows is an unbelievable account of a Bill G. meeting:
Bill Gates was famous for his reviews, where executives would pile into a boardroom and give him status updates on various projects. This one time Bill’s all smiles, like what the hell? What happened was that that morning, just before the meeting, he, as part of his other work, had acquired a bunch of patents for malaria treatments. And so he’s riding high on that.
Then I started to present. On the first slide, Bill’s face changes. And in just a matter of five minutes he’s losing it.
And he’s screaming at me, “YOU FUCKED HIM! YOU FUCKED HIM! YOU FUCKED HIM!” Spit — I’m not making this up — Spit is coming across the conference room table and landing on my glasses as he’s like, “YOU FUCKED HIM!” I have no idea what the hell he’s talking about. The other execs were like, “Bill, Bill, Jeffrey didn’t fuck anyone.”⁹
Let’s savor this one more time: Bill Gates walked into the meeting “riding high” because he acquired patents for malaria treatments. Reality beats satire every time.
Bill was beating us up because he wanted more .NET. I was like, man, that’s just not going to help me. But okay, let’s find out what he’s talking about.
So, that’s where I began to say, “Ah, this can help me.” All I had to do was to write the [PowerShell] utilities on top of .Net. So that’s how I got down that path. Using .NET was using Bill’s anger to get me leverage internally.¹⁰
This insight gave Snover a political angle. But make no mistake, he understood the technical problem:
There’s a core architectural difference between Unix and Windows. On Unix, everything is a file, okay? That’s why
awk/grep/sedare management tools, because they manipulate files. So then I said, “Great, Take that and put it on Windows. Happy days, right?” No, because Windows is not a file oriented operating system. There are very few files in Windows. Instead, everything’s behind an API. Soawkdidn’t work against the registry,seddidn’t work against Active Directory. None of it worked.¹¹
Snover might actually be an even bigger CLI zealot than me:
I’ve never seen anybody use a GUI in a clever way. Ever. There’s no cleverness to it. Like, “Oh my God, you should see the way Adam clicked that mouse. Oh my God. Adam’s going to click the button. Oh my God.” It just doesn’t happen.¹²
He might not be aware of the wizardry of Excel pivot table auteurs, who never touch the mouse. But I’ll give him a pass — Sometimes it takes a true believer to break new ground.
Snover understood both the “ideal solution” (UNIX composition) and the “practical solution” (pipe objects instead of text). His newfound “political solution” (those objects had to be .NET objects) got him a team to work on his vision.
A New Hope
Snover’s new team named their project “Monad” and was lacking staff. They outsourced some of the work to India. And so, to align everyone with the project’s vision, he created the Monad Manifesto.
This document became a cornerstone of the project.¹⁴
If someone around you looks down on Indian developers, you can remind them that Windows became remotely usable thanks to AI… That is, “Actually Indians.”
The “Monad” name also had a cultural angle. For a document meant to align a team in India, it strongly resembles the Hindu concept of Brahman.
Snover stood on the shoulders of a giant, Geoffrey Moore, author of the tech marketing bible, “Crossing the Chasm:”
I basically laid out the argument in very clear notions: What is the problem? What is the traditional approach? What is our new approach? Why is this valuable? Finishing with “Geoffrey Moore” market-relevant statements, which I found to be incredibly hard to do.
It takes the format of: For who offering unlike offering and then repeat, repeat, repeat.¹⁵
Snover has said little about the manifesto itself, likely due to its morally gray nature.
Now, let’s dive in.
The Monad Manifesto: The Real VS The Politik
Press enter or click to view image in full size
Yes, there are two footnote markers on the title alone. Iconic!
The opening image is a work of political art: a stylized yin-yang, replacing the stark black/white with HR-safe cold/warm pastels. A symbol instantly recognizable to any PowerPoint executive, which also goes by “Great Monad” in Western esotericism.
It’s also a mathematical-looking shape that, paired with Snover’s physics background, is an instant flex which will stay in the frontal cortex during the following wall of text.
1. Accumulatio
Monad is the next generation platform for administrative automation. Monad solves traditional management problems by leveraging the .Net Platform. From our prototype (though limited), we can project significant benefits to developers, testers, power users, and administrators. Monad leverages the .NET Common Runtime to provide a **powerful, consistent, intuitive, extensible and useful **set of tools that drive down costs of administration and make the life of non-programmers a lot easier.
Note the rhythmic flow of adjectives: “powerful, consistent, intuitive, …” It’s a trick formalized by the ancient Sophists as Accumulatio, and it’s been on every political speech since. The repeating structure is effective at the micro level (Adjectives), and the macro (Adjectives[], many adjective-heavy phrases). Believe it or not, it works.
2. Teleological Determinism
The footnote for “Monad” is an exquisite obscurantist flex:
Monads are Leibniz’s term for the fundamental unit of existence that aggregates into compounds to implement a purpose. In this philosophy, everything is a composition of Monads. This captures what we want to achieve with composable management […] More information on Monadology can be found at: http://www.wise.virginia.edu/philosophy/phil206/Leibniz.html
For any programmer today, “Monad” brings to mind Haskell. A coincidence, as functional programming Monads were not that popular in 2002. However, both share the rhetorical trick of a philosophical base, sprinkled with math.
Press enter or click to view image in full size
When explaining the “missing piece” that PowerShell fits, Snover pulls a few tricks:
- A chart comparing similar tech. By all accounts, an accurate chart. But most importantly: It’s a chart. Execs love charts.
- A citation to a scientific paper with a grandiose title: “Scripting: Higher Level Programming for the 21st Century,” by John Ousterhout. Pure appeal to authority.
- Says that “we should continue to ride Moore’s Law to move development to higher levels of abstraction via script.” In 2002, Moore’s Law was considered a law of nature outright, rather than a heuristic of its time. Teleological determinism at its finest.
3. Historical Revisionism
So far everything is elevator pitch, but fair. This will change…
[In the UNIX approach of shell pipelines] an executable outputs text and the downstream commands must use text manipulation utilities to try to get back the original objects to do additional work. While this basic model is extremely powerful, its intrinsic flaw is the tight binding [parsing objects from text, processing objects, outputting as text]. This requires clumsy, lossy, imprecise text manipulation utilities.
The traditional model reflects the state of the technology that was available at the time it emerged. .Net provides a new set of capabilities and opens up the possibility of new approaches
Any critical reader should be asking one thing at this point, “Does the author believe his own words, or is he a natural-born rhetorician?”
Here comes my hottest take so far. A quick shout out to the prior artists who analyzed this before me and might disagree. Yet I stand by it:
Given what we know about Snover, I think he’s “bullshitting,” but for the right reasons.
This is plain historical revisionism. UNIX was designed to use text in deliberate opposition to the dominant OSs of its time, like MULTICS. The only reason Microsoft couldn’t make a UNIX-like shell back in the day — and had to fall back to MULTICS API-centric shenanigans — was due to the hardware limitations of the PC era (and a taste for vendor lock-in).
The fact is that text-based shell scripting — one of the most successful ideas in the history of operating systems — has been virtually unchallenged in over 50 years.
Snover crafted a narrative for a specific, non-expert audience (Microsoft execs) who wouldn’t know any better.
This is the core of his political move: He took a Windows-specific problem and reframed it as a universal flaw. It’s dirty work, but someone had to do it.
I think writing this was the part that Snover found “incredibly hard to do.” But, once the script is written down, it’s easier to recite on demand.
4. Strawman
The traditional approach to building commands is inefficient. Much of the effort is spent rewriting the same functions over and over again by different people in different ways. They all:
- Parse, validate, and encode user input
- Document usage
- Log activity
- Format data, output results and report errors
Yet, despite all this commonality, most platforms provide little to no support for doing these activities in common consistent ways. (UNIX has the
getopt()call for simple command option parsing.)
This is factually true, with caveats.
Yes, UNIX has little standardization on tasks that scripts usually need to do. In fact, he appears to be defending UNIX because it provides at least some help: getopt() for option parsing.
What this fails to notice is that most UNIX scripters are aware of and in full support of this state of affairs. Indeed, the common wisdom is that getopt() itself is a poor standard, and seldom used in practice. Ask any UNIX greybeard.
UNIX users know that not all scripts need access to an opinionated standard for common tasks. If they need to parse options, they go ahead and write the 25 or so lines — muscle memory for the expert — while keeping full control.
Common wisdom is that, if a shell script grows enough to need the full range of all the features that Snover lists, then the correct approach is to move to a full-fledged programming language.
In short, Snover is willfully strawmanning the UNIX engineering culture, and the common wisdom around getopt().
5. Pathos
Monad takes a different approach providing developers maximal leverage and end users maximal consistency by defining an **automation model **for applications which factors out common functions so they can be implemented once in a common runtime environment
The above section only makes sense if you replace the word “automation” with something like “API” or “framework.” But of course, execs love “automation,” and it’s frequently used in the manifesto when other words would provide a baseline of clarity. Pathos over Logos.
6. Chromatio ad Absurdum
The point is brought home with the best chart on the entire manifesto. Take a minute — It’s confusing by design:
Press enter or click to view image in full size
First, the line labels are more “tangentially-related maxims” than actual labels. Props for actually labeling the axes correctly (if we take “Functions” to mean “Number of Functions”, which is of course how Microsoft would measure success).
Let me translate the rest:
- “Unix scripting” is the thick, angry red line (remember, for Porsche-driving execs, “red” means “stop”). It looks like “linear growth”, which is hardly ever the winning case in complexity analysis.
- The thin, gentle green line (“green” means “Porsche goes brrr”, “thin” means “efficient”), posits that Monad’s dev cost grows slowly after accounting for the single-cost “automation.”
This chromatio ad absurdum might seem minor, but it sold PowerShell to 2000s Microsoft. Think of colors on your next Canva session.
7. Concessio
The chart is charitable by showing that UNIX is faster for small scripts — which are the overwhelming majority of scripts. A rhetorical concessio.
But between the red line and confusing labels, few execs would notice.
I could keep going all day, but let’s conclude with the most hilarious and effective trick:
8. Enthymeme
Monad provides a rich set of management framework service Cmdlets to facilitate building admin GUIs. […] The goal is to be able to provide 50–70% of a generic management GUI tool for free.
Monad provides resources so that GUI interactions are displayed in a command line console. Users can use this to learn the automation layer. This mechanism is also leveraged to provide macro record/playback.
It is true that complex GUIs like “Exchange Server” were built on top of PowerShell, and even had a button to show the PowerShell command history during the session. It was a great learning tool:
Press enter or click to view image in full size
A GUI that knows who’s its CLI daddy.
But any exec reading “GUI” so close to “macro record/playback,” would think instead of the lucrative concept of “GUI record/playback.”
With the AI technology of today, making a workable pipeline of “GUI Actions -> User Intent -> Replayable Macro” is a moonshot project, which some crazy teams are surely working on right now.
Back in 2002, it was outright impossible. But Snover didn’t need to promise it. He just needed to put “GUI” and “macro record/playback” close enough for execs to make the inference.
Snover pulled what Aristotle called “the strongest of rhetorical proofs”, an enthymeme: The rhetor designs a conclusion meant to be filled in by the audience, who will also feel smart for coming to it on their own.
Ultimately, a manifesto is a secret weapon. Its strength is 10x that of debating on the spot, because the author becomes a team of their own time-displaced copies, each one asynchronously sharpening the message.
Bringing the right PowerPoint slides to a meeting is like bringing a shotgun to a knife fight.
The Last Stand
Not all went according to keikaku (Translator’s note: “Keikaku” means plan).
The Windows Vista development cycle was infamous. At one point, .NET itself was almost taken out. The patronage of Bill Gates didn’t move the needle:
Bill Gates always got it. Bill Gates got it. That helped me exactly zero. Helped me not one bit.¹⁶
Even without the Gates card, PowerShell found an unlikely ally.
The massive “Microsoft Exchange Server 2007” product (an enterprise email server) relied on PowerShell.
When there was a meeting like, “Okay, let’s kill PowerShell this time.”
The Exchange guys would then say, ‘No. I have a multi-billion dollar business. I need this. You can’t kill it.”¹⁷
PowerShell got released on Windows Vista, and the rest is history.
PowerShell Today
The open-sourcing and cross-platforming of .NET, eventually enabled PowerShell to do the same in 2016.
The “UNIX of Windows” now runs on UNIX itself, and is a real contender in the open space between “text-based shells” and “full-fledged scripting languages,” alongside modern projects like Nushell. Is there value in this space? We might find out for sure one day.
Not surprisingly, the cross-platform details of .NET¹⁸ and PowerShell have some quirks.
My own exploration revealed that PowerShell’s readline (PSReadLine) has a “vi mode,” but it can’t indicate the mode with both the cursor shape and the prompt. It also has problems with the PAGER env. I’ve opened issues for both.¹⁹²⁰
Literally unusable.
Jokes aside, PowerShell fulfilled the promise of a framework that abstracts away common scripting tasks, as can be seen in this code:
Is that readable? Practical? Better than Python or Ruby for a complex script? The jury is still out.
PowerShell also has the advantage of avoiding UNIX’s baggage. Commands like ls and cat are just aliases to properly-named “cmdlets” (Get-ChildItem and Get-Content). This was not possible in the 60s due to character limits (A constraint that gave us dmesg, where nerds still argue what the d stands for).
I’ll leave you with one more tidbit:
Providers
The core PowerShell abstraction is the “Provider” model. It’s a file-system-like interface to several things. It takes the “everything is a file” UNIX philosophy, and replaces it with an “everything is a” interface.
This feature is very useful on Windows. A Provider abstracts away the Windows Registry, a cursed database containing most system configuration (usually stored as text files on UNIX).
So far so good, but it appears PowerShell initially tried to “dogfood” Providers to many things, such as flat language constructs like Function, Variable, and Alias. Even env vars are accessed through a Provider.
To make it worse, Providers have “drives” as namespaces, which is particularly clunky on Linux, where the Filesystem provider has / and Temp drives (a ludicrous idea).
Naturally, this was a shim to ship PowerShell out of Windows, and it’s a far cry from cleaner filesystem abstractions like that of Common Lisp, which understands that some filesystems have drives and some don’t.
My point is: Even when PowerShell went “full UNIX,” it did it with Windows in mind, to the detriment of its cross-platform ambitions.
Closing Thoughts
Most engineers never get “radicalized” because, when good projects fail, everyone shrugs and says “the better solution lost to office politics.” But here’s a document that weaponized technical language to win the political fight. Years later, its author admits as much.
Why did Snover do all of this? It all comes down to his worldview:
I’m an existentialist. That means I don’t believe in a life after this. I don’t believe in any grand narrative. I believe life is what you decide to make of it.
When I went through discarding comfortable beliefs and embracing this. That was a very difficult period. But after that I said, “Well then, what do I want to make of this?” And it really comes down to is that I’ve got a certain amount of time and I want the world to be different and hopefully better, because I existed.
It’s that simple. So it’s really about “having impact” and “mattering” that made me say, “yeah, I want to do this.”²¹
So, did he succeed in his quest to matter?
Maybe more than he expected. PowerShell was key in bringing Microsoft into the cloud computing era:
At some point I went to work in Office. We were having lunch, and the head of Office said, “You know, you realize that PowerShell is the reason why Microsoft’s in the cloud?”
“What? How’s that?” He says, “Well, Office led the way to the cloud. We were, you know, many years ahead of Azure. Having scripts allowed us to scale up.”²²
For all the techno-feudalism Snover unleashed, he did teach a whole generation of GUI administrators how to be programmers. Hell, the dotcom and JavaScript craze did the same for me, so I appreciate those who pave the roads.
Here’s one of life’s lessons: Every now and again, you just need to know when to be a butthead. If you’re always a butthead, you’re never going to get very far. But if you’re never a butthead, it probably means that you’re not taking enough courageous chances and driving a reticent organization where it needs to be.²³
And the final twist? The fact that Snover shared all this gossip in the last couple of years, is not just him “not giving a fuck” anymore. It’s a liberating, but still calculated act of legacy-building, helped by the fact that his name rhymes with “Snowden.”
The final proof that Snover is one of the great political engineers of our time is that he’s still doing it.
And here I am, sharing my take on this thrilling arc of software history. He got me to do his PR for him. Well played, Snover.
Thanks for reading! If you felt empowered by my PowerShell take. If you felt that PowerShell is the ‘Posh Spice’ of shells, consider buying me a coffee at https://ko-fi.com/sebastiancarlos. You can also read my Vim Guide.