Live data from Hacker News

Jeffrey Snower was originally demoted over PowerShell

twitter.com

101–110 of 153 posts

Re: Jeffrey Snower was originally demoted over PowerShell

#101
post #92

Question 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…

Is 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.

"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.

Re: Jeffrey Snower was originally demoted over PowerShell

#102

Earlier quoted context omitted.

> it seems he was demoted for insubordination? Probably, and what management blunder that would have been if Jeffrey had left Microsoft because of it.

They would never have known. When you cook the goose, you get a nice meal but you never know about the golden eggs that never got laid as a result. Everyone thinks they did the right thing except for the goose.

Yeah, but almost always geese lay regular eggs. You cannot just never kill geese in the offchance one lays golden eggs. The maintenance costs get astronomical.

Re: Jeffrey Snower was originally demoted over PowerShell

#103
post #43

I'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…

They make a joke of it in Silicon Valley, "Rest and Vest" check out this clip: https://www.youtube.com/watch?v=y30pML-AW4k

Re: Jeffrey Snower was originally demoted over PowerShell

#104
post #43

I'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…

Live in California long enough and your work ethic will melt and your life will become much more interesting.

Re: Jeffrey Snower was originally demoted over PowerShell

#105

I'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?

Would want to look at how people use Power Shell on Windows and compare to how people use bash/tools/procfs/Python/C on *nix. I think that, on *nix, Power Shell loses to cli tools/bash/procfs for trivial problems, to Python for simple problems, and to native strongly typed languages for complicated problems. Many Windows APIs are COM based, for both arguments and results, so an OO-based scripting language is helpful.…

In mixed enviroments being able to use Powershell on both Linux and Windows allows for people to only have to learn one scripting environment, and allow you to share functions, modules, and tooling between the systems.

that alone is a big WIN for PS imo

Also I find Powershell to be more enjoyable to use (I like the verbosity, the help system, and passing objects instead of text streams.. I know I am crazy), and easier to train new Admins on PS than bash or python.

Re: Jeffrey Snower was originally demoted over PowerShell

#107
post #82

Earlier quoted context omitted.

Look, I’ve written a lot of powershell, and I don’t mind it at all, but its not surprising at all to me. Powershell isn’t in the same problem domain as rust/go/Scala/python. The niche it fills is “calling windows apis from c++” or, more recently, c#. It’s less effort than that, so it’s useful, on windows. It is not less effort than using say, a bash script on other platforms because it: - does not provide unique acce…

Also if you look at interactive shells, which have the lower bar to people trying them out (as seen by fish, nushell, etc. picking up users in recent years), powershell is actually quite clunky as an interactive shell. It doesn't appear to have completions matching those shells, the command names are quite tedious for those that don't have built in unix-y aliases, it doesn't provide a facility for common shell shortc…

> It doesn't appear to have completions matching those shells

What kind of completions do you mean? PowerShell has completion for commands, parameter names and arguments. You can define arbitrary script blocks to do custom completion (or for simple cases just use `ValidateSet`). They can be defined either in the script/function itself, or separately with `Register-ArgumentCompleter` (that also works for non-PowerShell programs).

Re: Jeffrey Snower was originally demoted over PowerShell

#108
post #9

Earlier quoted context omitted.

the 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…

I 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.

As with any large software project, there are at least few features in PowerShell that are confusing, inconsistent, or both.

Auto-vectorization is one of them; usually it "just works", but can be a PITA when dealing with, e.g., pipelines returning sequences you'd prefer to keep separate.

Another is that PowerShell error handling, while robust and powerful, can be difficult to implement properly, especially when "the right thing" isn't what PowerShell expects. Case in point: originally, PowerShell handled standard error output from external commands specially, wrapping lines of stderr output in error objects. While convenient in some cases, this made it unnecessarily difficult to work with external commands that output to stderr in non-failure cases, and was therefore changed in newer versions of PowerShell.

A final, non-language example is cmdlet availability on non-Server Windows versions. While PowerShell mostly has feature parity between desktop and server SKUs, there are at least a few non-Server-specific cmdlets that only work with Windows Server. The only example that comes immediately to mind is the ...-WindowsFeature set of cmdlets to manage installed Windows features; while present on client Windows systems, they fail with an error message unless the target system is running Windows Server. This is a particularly mystifying omission because dism.exe provides an equivalent command-line interface that works everywhere.

Re: Jeffrey Snower was originally demoted over PowerShell

#109
post #91
post #66

Earlier quoted context omitted.

Probably he was still getting paid a lot? It is MSFT after all. I imagine that a certain kind of person, willing to write tooling and even get demoted for it, is willing to stick around with a bit of a pay cut anyways.

The Microsoft of that time period was infamous for deliberately paying less than other tech giants.

Absolutely true.

Re: Jeffrey Snower was originally demoted over PowerShell

#110
post #107
post #82

Earlier quoted context omitted.

Also if you look at interactive shells, which have the lower bar to people trying them out (as seen by fish, nushell, etc. picking up users in recent years), powershell is actually quite clunky as an interactive shell. It doesn't appear to have completions matching those shells, the command names are quite tedious for those that don't have built in unix-y aliases, it doesn't provide a facility for common shell shortc…

> It doesn't appear to have completions matching those shells What kind of completions do you mean? PowerShell has completion for commands, parameter names and arguments. You can define arbitrary script blocks to do custom completion (or for simple cases just use `ValidateSet`). They can be defined either in the script/function itself, or separately with `Register-ArgumentCompleter` (that also works for non-PowerShel…

In fish, if I type ls -, I get a history based autocomplete suggestion (ls -l), and also a summary of options with brief descriptions:

    ls -l
    -1                                           (List one entry per line)
    -A  --almost-all                         (Show hidden except . and ..)
    -a  --all                                                (Show hidden)
    -B  --ignore-backups                      (Ignore files ending with ~)
    …and 51 more rows
I can use the arrow keys to cycle into the "and more rows section, or type further to narrow the list. zsh supports similar.

In Powershell, if I type Get-ChildItem -

It just cycles through options apparently abitrarily. The first suggestion is "-Path", and it offers no facility to provide explanatory information.

Post reply on HN