35 ms·
Jeffrey Snower was originally demoted over PowerShell
- wistlo 4y agoInteresting story. I have a love/hate relationship with Powershell. I was proficient in the CMD batch language, but decided to develop a set of SQL scripts in Powershell. With the object integration, it's a good enviornment for Windows; if I need to do anything in Windows, for example color-coded error output, PS does that for me. The object-oriented .NET design did not work for me in preprocessing text files for those SQL queries. PS takes 15 minutes to do what Strawberry Perl (the Windows port of Perl) does in 3 seconds with a one-liner regex. Perl is a better choice for that kind of thing, I know, but the orders of magntiude difference in processing files line-by-line was surprising. I've been contemplating migrating scripts to Python so that we would be environment agnostic, but it's not a priority. (Turns out a LInux cloud instance costs more than a Windows instance. Our company signed a huge deal with Microsoft and everything is being pushed in that direction now.)
- deleted 4y ago[deleted]
- einpoklum 4y agoQuestion for the PowerShell afficionados: Do you consider PowerShell to be "something we can count on to exist on Windows systems, in the absence of Bourne-like shells" - or is it "a superior alternative to Bourne shells which only got traction on Windows because Bourne is too deeply embedded in the Unix world"?
- Arnavion 4y ago... Neither? It's a superior alternative to cmd.exe. bash has never been a serious contender for Windows. Before PS you always wrote .bat scripts for cmd.exe (or .vbs for cscript.exe if you were really depraved). Nobody except Linux-first FOSS authors would expect Windows users to have cygwin / msys / mingw32 installed. PS gave us a saner choice, though we would still usually bundle it with a .bat wrapper, just to a) make it double-clickable and b) set `-ExecutionPolicy Unrestricted`. If you're asking "is PS better than bash", then sure it's better in some ways and worse in others, but that question only makes sense on Linux where bash is actually an option.
- einpoklum 4y agoBut instead of coming up with PS, it would have been pretty straightforward to just install bash on Windows. Someone chose to go the PS way rather than the bash way. My question is what the reason was for making this choice. > Nobody except Linux-first FOSS authors Bourne shell and its predecessors and successors are traditional and common on most computer systems since the early 1970s (starting with the Thompson shell in 1971; see: https://en.wikipedia.org/wiki/Unix_shell https://en.wikipedia.org/wiki/Unix_shell ) so, I would argue actually the other way around. "Everybody except Windows-only closed-source authors would expect people to have bash or similar shell working." The question is, why go for PS instead of adopting a regular shell.
- Arnavion 4y agoI'm really not sure what your point is. >Someone chose to go the PS way rather than the bash way. Are you asking about users or the Microsoft employees who work on Windows? Users don't want to install either bash or PS, which is why before PS existed all scripts were written for cmd.exe which was guaranteed to be available. Microsoft employees would have no benefit from adding bash to Windows given its license, and PS integrates better with the OS anyway. The author of PS is already on record that one of the original reasons was to integrate better with WMI etc [1]; given how hard / impossible it is to munge the output of ls etc in bash it should be no surprise than an object-based shell with saner expansion rules works better. >> Nobody except Linux-first FOSS authors >Bourne shell and its predecessors and successors are [...] You don't have to give me a history lesson. What you said has nothing to do with the fact that the only people who expected Windows users to have bash were Linux software authors, because their software only supported being built by bash scripts (and required make, configure, perl, what have you). Windows software itself, whether open or closed source, was built using cmd.exe scripts or VS project files. [1]: https://stackoverflow.com/a/573861/545475 https://stackoverflow.com/a/573861/545475
- raverbashing 4y agoLet's be real honest here, bash sucks. "common on most computer systems since the early 1970s" yes, that's exactly the problem, it still thinks spaces on filenames are an "exception", just as a start. It knows about lines but barely. PS has native json support.
- sterlind 4y agothe latter, though I may have some Stockholm syndrome. killer features: * objects are streamed, not text. I look upon sed and awk and their ilk as stone knives and bear skins. why not just dot into fields? * first-class interaction with libraries. I can import managed DLLs and call their methods. I don't have to build weird little one-off tools or expose porcelain. I can get at everything, it's profoundly hackable in an un-Windows way. * the language is vectorized - basically like broadcast operators in something like NumPy. $x.foo gives you x's foo if x is an object, or an array of foos if x is an array of objects. it's really really nice. * separate commands in one binary and argument (sets) are first-class. there's consistent rules about what "-i" will be short for. personally, I can pull all the valid commands and arguments automatically into my accessibility software for voice typing. the whole standard "verb-noun" thing also makes commands be what you expect and discoverable. things I don't like include the language itself, its weird bindings to .NET (it predated the C# dynamic support and modern collection types), the restriction to .NET, bad support for streams (not sequences), the slowness, and the syntax looks a bit goofy. but it's worth the warts.
- polotics 4y agoCygwin has been a reliable features-complete alternative IMHO
- sidpatil 4y agoHow is Cygwin comparable? That's like saying Wine can be compared to cmd.exe.
- polotics 4y agoCygwin brings me a compatible-enough layer on top of windows that I can reuse scripts. It is comparable as it gives me a CLI, and to hen as it is not infected by Microsoftisms it gives me a warm feeling of safety..
- at_a_remove 4y agoI found -- when I last did anything in Powershell years ago -- that third point of yours to be incredibly frustrating. I wanted to iterate over a list, but sometimes I would get back a non-iterable solo object, or a None-like object, and my iteration would fail. I ended up doing a lot of testing to see what my returned results were.
- oaiey 4y agoBash as a shell is not so outstanding. It is the gnu tools and the other command line first Landscape. So bash on windows can never fly because these tools are not natively present (cygwin and friends are just awkward). So Powershell (and the new terminal) gives us this whole package with its build-in, service and windows provided commandlets. Consequently: bash will never beat PS on Windows except when someone provided a gnu tools and hundreds of other command line tools for windows.
- oaiey 4y agoOn the topic of Powershell on Linux I think the story there could be different, however Powershell violates the core philosophy of Linux so hard (mit vs. GPL, pipe-and-filter vs loaded DLLs, ...) that Powershell will never be something integral and natural fitting there.
- deleted 4y ago[deleted]
- sidpatil 4y ago> mit vs. GPL By this measure, we shouldn't be using X or Wayland because they're MIT. > pipe-and-filter vs loaded DLLs At first I didn't understand what you were referring to, but I realized you were talking about cmdlets. In that regard, PowerShell is more like a scripting language than it is like a traditional Unix shell. The more "Unix-like" approach would be to write thin command-line wrappers around the libraries you want to use. If I'm not mistaken, this is how projects like LAME and FFmpeg are implemented.
- AndrewDucker 4y agoDealing with objects rather than strings and parameter autocompletion give massively better discoverability than other shells I've used. Being able to use all of the .Net classes trivially is also staggeringly useful.
- jrsj 4y ago(Not an aficionado) I feel like it is superior in many ways, but the syntax and case sensitivity have always been a barrier for me. It’s still worth it though when it’s the right tool. I don’t do Windows stuff often though so it’s always jarring coming back to it from bash.
- juki 4y ago> syntax and case sensitivity have always been a barrier for me Can you clarify that a little? PowerShell isn't case sensitive, and the syntax is just a mixture of traditional shell syntax (pipes, operators like -eq/-ne/-lt/-gt, etc.) and conventional C#-like syntax (if/elseif/else, switch, ?:, ??, try/catch/finally/throw, etc.).
- jrsj 4y agoThere’s some gotchas with case sensitivity that I honestly can’t remember but I think it was related to some of the more C#-y bits. As for syntax it really is the .NET elements & the relative verbosity of common things you’d interact with that just make it feel very foreign to me personally. This probably has more to do with Windows and .NET than PowerShell itself though.
- lazypenguin 4y agoHonestly I enjoy writing powershell more than bash scripts. Bash syntax is arcane and sometimes inconsistent where as powershell 7+ is fairly comfortable syntax. However, powershell does often feel cludgy and I often have have to figure out how to do more complex things. Not a perfect solution but it integrates with Windows nicely.
- drblast 4y agoIt's a better design, imo. Have you ever wanted to write a command line executable and gotten hung up on I/o and parameter parsing? With PowerShell you can write a cmdlet in C# as a PowerShell module and have strongly typed input and output parameters for free. It's a revelation. As as scripting language, it's fine but for me the killer feature is being able to easily extend it in a non-scripting language.
- bitwize 4y agoPowerShell works on fundamentally different principles than do traditional Unix shells. Unix shells are for loosely coupling small "do one thing and do it well" programs. PowerShell can kinda do this, but its strengths lie in the "object streaming" features which aren't based on external processes at all but on loading .NET libraries with a special API, called cmdlets. In this respect PowerShell is a bit more like the VMS command processor, or using Python or Tcl as a shell. To add a command to a Unix shell, you need but drop an executable in your path. To add a command to PowerShell that takes advantage of PowerShell's features, you need to write a cmdlet in a language like C# and then install the cmdlet. This is also why PowerShell takes so long to boot up: it's probing for and loading installed cmdlets. For these reasons I do not consider PowerShell to be directly comparable to Unix shells, but it is an essential part of the Windows toolkit because no one wants to use the MS-DOS-like cmd.exe for anything serious.
- rufius 4y agoThe latter. I say that as someone who only works with nix systems for the last 5 years. I still write some powershell for stuff at home. I prefer Hyper-V as a hypervisor and use it there. But the current state makes sense. Everything in Windows is COM, .NET, or a derivative thereof. Having a scripting language that natively speaks to these technologies in a flexible manner is a natural extension. nix is a lot more of the file based stuff and so a shell language that makes it easy to run a series of tools that operate on text is natural (I.e. awk, sed, grep, xargs)
- justsomehnguy 4y ago> in the absence of Bourne-like shells I never had "Oh I would really liked to have *sh on this Win machine". Some GNU tools, like grep (just because findstr has it's own arcaneties) or sed - but neither of them is the part the shell itself. Sure, before 2012 if you wanted a little more flow control than provided by cmd you had not really many options (and if you needed portability you would need to use VB/Jscript, not a 3rd party tool), but since then you have PS3 at worst (on 2012/R2), or at least PS5.1 everywhere else, including client SKUs. And writing even not a complex script with a bunch of if..else is way, way easier in PS, be it for a Win or a *nix machine.
- majkinetor 4y agoIts far superior, like light years superior. PowerShell will exist, entire MS ecosystem is now based on it. That fear has passed years ago, especially when it got cross-platform. I expect actually to see more pwsh on linux and even OTB pwsh linux distribution (heck, I will make it myself if needed when I get retired).
- jodrellblank 4y ago> "Do you consider PowerShell to be "something we can count on to exist on Windows systems" Once, yes; then they renamed it "Windows PowerShell" and deprecated it so it's no longer being developed. Instead they started trying to appeal to Linux users with new cross-platform "PowerShell" which you have to install separately. Windows PowerShell is increasingly falling behind that in performance and compatibility. We're heading away from "PowerShell included" back to the old world of "if you have to download and install something to get away from this abandonware legacy thing, why not Python or node.js?". > "a superior alternative to Bourne shells which only got traction on Windows because Bourne is too deeply embedded in the Unix world"?" It's a superior alternative to Bourne shells on Windows, and because it's basically Microsoft-Perl or Microsoft-Clunky-Python as well as being a shell, as in - it's more capable than Unix shell because it's a kitchen sink of scripting and programming language as well as command line.
- omega3 4y agoI find this twitter thread frustrating. Q: What was the justification for the demotion? What became of the leaders that made that decision? A: It was stranger than you can possibly imagine I think the gist of the story is that he was assigned to work on X but worked on Y instead. Notwithstanding how great Y idea turned out to be it seems he was demoted for insubordination?
- tjoff 4y agoTwitter threads are frustrating no matter the content, after two replies I get a banner that blocks me from reading until I register. Not gonna happen.
- dredmorbius 4y agoThis particular "thread" is simply two tweets. There's no explanation of why the demotion occurred, by whom, for what reason, when rescinded, etc., etc.
- tjoff 4y agoOk, even that was obfuscated for me.
- EdwardDiego 4y agoYep, I'm doubly less likely to sign up when you pull that crap.
- beagle3 4y agoNitter is your friend if you care (while it lasts). Nitter.net or nitter.eu usually work for me.
- _Microft 4y agoUsing Nitter is as easy as replacing twitter.com with e.g. nitter.net or .eu: https://nitter.net/jsnover/status/1523010444570419200 https://nitter.net/jsnover/status/1523010444570419200
- dredmorbius 4y agohttps://threadreaderapp.com/thread/1523010444570419200.html https://threadreaderapp.com/thread/1523010444570419200.html
- mjburgess 4y agoI've often wondered why powershell hasnt taken off on linux/mac. I'd guess MS would have a good case for investing there (given, eg., linux usage on azure). Particularly in the recent history of "every day, another shell" on linux/mac. Powershell seems to solve the problem being resolved in rust,go,scala,... over-and-over. Why not just use that?
- lloydatkinson 4y agoPowershell runs on Linux and macos too because of .NET Core/5+. The real reason is likely the same sort of people that are still typing Micro$oft in <current year> and keep spreading FUD that .NET isn't OS.
- yebyen 4y agoI have never heard anyone "spreading FUD that .NET isn't OS" but I have heard plenty of times from Mac and Linux users, "why would you want to use PowerShell" and I am mining this thread for answers, because I honestly don't know for myself. And it's objectively true that .NET/PowerShell is targeting Windows users, (which if you're Microsoft, why wouldn't you do that?) so, assuming that you don't care about interoperability with Windows users, don't use Windows yourself, don't have any customers asking for PowerShell support for whatever XYZ widget you build... what are the compelling reasons to run PS on Linux or Mac? Setting up .NET is an investment, and learning to program it is an investment, people invest in the Go, Rust, Ruby, Python, TypeScript, JS ecosystems because they are generally useful, and that extends to Windows people, but if I'm building a product targeting Mac or Linux (servers), what is the incentive for me to make my customers install the .NET runtime at the proper version and fiddle with .exe files (or am I completely off base about how it works?)
- oaiey 4y ago.NET is still ignored a lot as consequence of FUD. But you are right, there is not much FUD. The rest is spot on. Powershell has it space when you need manage windows and Linux Server using a shared platform. And that is where Microsoft puts it. As a .NET based management platform for services and operating systems on both, Linux and Windows.
- janandonly 4y ago
- pipeline_peak 4y agoIf I had to guess why, maybe because PowerShell is a little “busy”. It always feels unclear whether he was trying to make something similar to Unix Shell or a shell for the .NET environment. It’s greyed somewhere in between in a confusing and inconvenient way. Something as simple as a diff requires using objects, it just doesn’t feel like it was designed with SysAds in mind. My guess was it had to do with marketing, sort of like how JS started off as a Scheme dialect, but higher ups enforced Java Syntax. .NET was pretty new at the time.
- luma 4y agoAs a sysadmin, you can pull pwsh from my cold dead hands. Evrything being an object is a feature, not a bug. Going back to bash feels like going back a half century.
- cm2187 4y agoIt has its rough eges though. The one that pisses me off is psremote. Complex to set up, takes forever to come online after a reboot, runs in a network context which isn't allowed to interact with certain windows APIs, not the least windows update. How you create a remote shell that cannot do something as simple as updating the OS is beyond my comprehension.
- andrew_ 4y agoI'd like to know why Snower accepted abuse from corporate overlords for 5+ years (according to the thread). Being "in the dog house" for that long is ridiculous on the surface. That would never stand in today's world of tech. Is he just oldschool and had the mindset of "the company is always right"? Is he just a company man with intense loyalty? I would understand the company not adopting it and having to spend five years advocating for new tech in a company that large. But I can't understand why being demoted and punished for 5 years. I grew up with a major emphasis on work ethic but I can't wrap my mind around this.
- andrew_ 4y ago
- hypertele-Xii 4y agoHN guidelines: > Please don't comment about the voting on comments. It never does any good, and it makes boring reading. https://news.ycombinator.com/newsguidelines.html https://news.ycombinator.com/newsguidelines.html
- Sakos 4y agoYou know what makes for boring reading? People not engaging in discussion at all and just relying on downvotes to convey their opinion.
- andrew_ 4y agoSigh. it's not a comment on the downvote, it's a call to those down voting to participate to enhance the convo. If you read the rest of the guidelines, they also state not to cite the guidelines as a reply.
- striking 4y agoWhich guideline states that?
- MandieD 4y agoThere are probably several thousand, if not more, other former Windows platform admins like me that are absurdly grateful that Snover stuck with his vision, giving us a path to being automation and, later, cloud experts. I've since branched off into DevOps, but up to about 2011/2012, was pigeon-holed as a Windows admin. Doing a few clever things with PowerShell and Active Directory led to my being chosen to work on my company's Skype for Business deployment, then Azure, which led to Kubernetes and DevOps. Having an immediate work-related reason to learn a powerful scripting language means a lot in particular for people who don't have a lot of time to learn things outside of work, like parents (especially mothers) of young children.
- pas 4y agowhat does DevOps mean in this context? (I'm asking because I thought k8s is already devops, just as azure is if devs have some access.)
- joshbaptiste 4y agoToday's tech worker would have quit and launched a startup and have Powershell become the Enterprise "Ansible" add-on of Windows to then subsequently be acquired by Microsoft for [m|b]illions..
- ZhangSWEFAANG 4y agoI like the regex touch
- nobodyandproud 4y agoIn the late 2000s or early 2010s is when I first read about PowerShell (v1? it was still bleeding edge) and my jaws dropped. Ability to work with both .NET and COM objects? Piping objects and not strings? Absolutely amazing and useful tech, and I had to reread to make sure I wasn’t reading about some future plan. I wonder which division pushed hard to demote; the Windows division?
- recursive 4y agoTitle has a typo: It's "Snover".
- throwawaymanbot 4y ago
- outside1234 4y agoI have worked at Microsoft off and on for more than 20 years and it is insane how many disaster stories boil down to super horrible Windows management. “.NET cross platform?” -> Windows screwed it up “Phones” -> Windows screwed it up “Azure Linux VM” -> Windows screwed it up (but thankful we fired them and fixed it) One of best things Satya has done is essentially fire almost all of these morons.
- csours 4y ago"Remember the human". Do you start with the assumption that the product has to fit into Windows and do things the Windows way? Or do you start with the assumption that humans are going to use the product and make it in such a way that people can and want to use it.
- GartzenDeHaes 4y agoI wonder if this was some kind of corporate camouflage. EVERYONE LOOK, WE ARE DEMOTING JEFFREY, cool stuff you're doing, keep doing it.
- vessenes 4y agoThis is an intriguing peek into some upper echelon MS politics. He notes he got busted down from L69 to L68 - L68 is a significant cutoff inside MS, titled “Partner”. L70 is “Distinguished Engineer”. For recent years, L68 all-in comp is probably right around $1mm a year, although I’m sure that was a bit lower when PowerShell was being written, and much higher in toto if you held on to your RSUs. What surprises me is everything not said here - I know a number of MS Partner-level folks, and they all strike me as perfectly capable of funding and hiding a reasonable-sized team to work on anything they think is important; in fact reducing and removing precisely this practice is one of the reforms Satya has made — getting upper echelon fiefdoms more aligned. So, I think the full story is actually a lot more interesting than the tweets. I’d personally like a short memoir instead of the tweets. In any event, don’t feel too bad for him - he did fine, and PowerShell is one of the features that let Windows stay competitive with Linux as the world transitioned to the cloud.
- hintymad 4y ago> For recent years, L68 all-in comp is probably right around $1mm a year, This is in stark contrast of how people below 67 got paid. Their packages have been visibly smaller than those of similar roles in FANNG-like companies. I think this is because resources will concentrate to the top as a company becomes bigger and older most likely because visibility disappears quickly among lower ranks and what they do individually hardly matters. If the theory is correct, the natural conclusion is that one should really seek a career in a fast-growing company unless they are great at navigating a big co's dynamics.
- belter 4y agoAlso very interesting details on his presentation: "Digital Transformation: Thriving Through the Transition - Jeffrey Snover, Microsoft" https://youtu.be/nKyF8fzed0w https://youtu.be/nKyF8fzed0w
- georgia_peach 4y agoIn the cosmic sense, the demotion was lenient, considering that he breathed new life into something which is mostly an abomination, & should have been put out of our collective misery long ago. The cybersecurity industry would be a shadow of its current self if it weren't for good old Windows. The ACM needs an "H.P. Lovecraft Award" for such situations. Jeffrey Snower: RE-ANIMATOR
- agent86 4y agoQuestion for the more seasoned Mac/Linux folks on HN: Powershell has been a gift in getting things accomplished in Windows. But one thing I've also come to enjoy using it for is quick and dirty interactions and scripting with REST APIs. Things like Invoke-WebRequest, ConvertTo-Json/ConvertFrom-Json, Export-CSV, piping between almost everything, and the results being passed around like an object that I can use SQL-ish Select queries against, etc. I find myself feeling like I'm missing something helpful when I'm on a Mac/Linux device. Is there a similar go to in the Mac/Linux world for this type of stuff? My current thinking is that I either have to start picking up Python or building a mental map of wget/awk/grep type commands that can be chained together for a similar effect, but I thought it best to try to learn from the wisdom of others first :-)
- paramost 4y agoNot a seasoned mac/Linux user, but would powershell core not work? I believe it's cross platform?
- jhugo 4y agocurl, jq
- pouting 4y agoPowershell 7 is cross-platform.
- magospietato 4y agoIs there a similar go to in the Mac/Linux worlds? Yeah, it's called Powershell 7! Powershell was ported to cross platform dotnet a few years back. Currently running some Powershell scripts in production on a Linux box.
- rektide 4y ago"You can use powershell" isnt quite the same as asking what the open source world does. Adoption of powershell on Linux/Mac is tiny. If you show up on a random system, it almost certainly will not be available. It's good to know powershell is cross platform now. Good to know this can be an option. But I'd also say the original question still deserves more exploration & thought, that asking what the romans do in rome is good to know too.
- deleted 4y ago[deleted]
- Jemm 4y agoSo the implication of the title is that Powershell is being embraced and loved. Not sure I love it personally Wonder what HN thinks?