He's going to die eventually, and he thinks he's going to paradise.
If he were correct, then the thing he did would not be a wrong.
Obviously we believe he is incorrect, and that what he did WAS wrong, and as justice relies on a concept of proportionality, death seems like the appropriate response.
I would contend that less than the death penalty here would be to de-value the lives of those he killed. Taking another's life is too serious of a crime to punish by any lesser measure.
You might recall that we have a justice system, and that justice is generally defined by punishments meted out in proprotion to their crime. What punishment would be more just than death for one who has killed many?
On the flipside for anything remotely complex like printing you would expect it to be riddled with bugs and about 5-10 years behind everyone else. Lacking subsystems means creating 3rd party apps for it will be "fun": sounds like a return to DOS days. Which I guess is good news for me, because I never got to experience them in their heyday, so I can see firsthand what instability looks like when you dont have OS provided APIs for things.
That sounds like theyve been actively un-learning all of the lessons the computer science field has spent decades learning.
Here everyone else has been learning how abstraction can promote collaboration and keep bugs simple, and theyve found a way to justify removing abstraction as a way to reduce complexity (lol?).
This is called a risk assessment, and its something that most people (and the media) have no patience for: its far too levelheaded, and not nearly hysterical enough.
This is the sort of logic that would block implementation of automated plane systems which could save thousands of lives per year because it might crash once or twice.
A system doesnt need to be perfect to be implemented as a replacement; it just has to be better, when you look at the big picture, than the thing it replaces.
There are a lot of things that might kill people; to reduce the number of people killed to zero isnt possible, though you could pour endless resources into trying to do so.
The question is whether there are reasonable ways to provide access to 911 that do not themselves create worse problems like swatting; 70% of calls being fradulent starts to get into an area where legitimate services are impacted. Put another way: how many people die because legitimate resources were diverted by fraudulent calls?
Too bad I've written many examples of such a thing, purely in powershell. Too bad lots of people do things like this. Too bad theres many examples on poshcode.
Because some of the tools-- rm, mv, ls-- use a "take 2 letters from the word, thats the command" convention, while others are completely different (tar, unzip, gunzip, passwd, man). Theres no common convention whereby you could say"I want to do X" and know what the command is off-hand.
To the uninitiated, there is no particular reason to think "mv" would be the move command; you have to already know that.
Best practices be damned, you're rockstar coder. Who cares if no one else can look at that code and figure out why you created it and where its probably being used?
Well, I claimed to be a powershell user, not a Java pro. I still think the first example is superior if you're intending the source code to be maintained by other people and some of them may not be expert coders-- as will be the case with scripts.
Massive, heterogeneous, "Enterprisey" deployments benefit from far more complete tools than fucking PowerShell,
I mean its not like PowerCLI is a thing required for the creation of AutoDeploy profiles for VMware, or like thats a major feature for using stateless hosts on datacenter-scale clusters. Its not like Storage arrays commonly require SSH to configure, but offer powershell as an alternative.
Reading your post, I get the impression that you think that network switches, routers, and SANs are configurable via some webpage. I can promise you, when that is the case, its an awful experience. Generally "enterprisey" admins are sticking to CLI for those things because CLI reduces the chance of screwups: you can stage and review your change in notepad and then deploy it to hundreds of clients.
The bloody verbosity of the platform (it really is a platform - not a language) was the worst part
A few things-- the language has a large number of shortcuts, like "fl" instead of "format-list" or "?" instead of "where-object" or "%" instead of "foreach". But the verbosity of it is not really a bad thing, as it makes the resulting code at least somewhat self-documenting; its crystal clear what each command will do most of the time.
An IDE was necessary so you could scroll through the list of available functions to find the one you were looking for as they were generally not that obvious
This is what tab-completion or get-member or even "get-help [command] -examples" is for.
A quick for loop to rename files? Definitely bash. Holy cow is that a pain in Powershell.
You mention usefulness- the usefulness as you said is that its a platform supported by an incredible number of vendors. Just about every piece of infrastructure I've come across has vendor-provided powershell integration; the ability to take output from a get-VM command and pass it into a storage provisioning command makes a number of tasks incredibly easy.
Lastly, I would say: man pages.
get-help is your friend, and is far superior to man with the -detailed or -examples switches. Not sure where you're getting the "1.7GB", but this page indicates that the size is more like 9KB.
An MMC would not allow you to use a text-field to search for a user, press a button, and have a new VDI instance spun up, storage provisioned, and permissions configured.
A more common use case would be what I described, but without the GUI, repeated 100 times for 100 different users.
The nix shells I have used are very powerful, but also very, very painful to learn. Learning sed / awk syntax could easily fill 4 of those 8 hours I mentioned; and thats not even getting into how each and every tool has its own unique idea of how to do syntax. What does a -z switch specify? I dont know, probably fire up that man page and dig through it. What about -h? Is that help, or human readable?
it really just feels like a kludged attempt to bring CMD.exe to something closer to bash.
Theyre not even remotely close. They both operate on the idea that data should be passable between consecutive commands via a pipeline, but bash makes no attempt to deal with different types of data nor any good way to determine what data is incoming. Powershell solves this by being object oriented, and letting you easily determine the type of data coming in, export it to XML, and reimport it at a later session if desired.
As an example-- if you have an error in bash, whats the stack trace look like? Do you have a good way of capturing it? In powershell you can reference the $error[0] variable, and pull up any piece of info you might need to troubleshoot, or even just export the whole thing by "$error | export-cliXML -file C:\somefile.xml" if you're running a nightly job; any issues can later be imported into a new session to diagnose.
Now the question becomes just because you can use it, does it mean you should?
Yes. If you deal with IT infrastructure at all, you would be absolutely crazy not to learn it; its explicitly supported (with native commands) by:
* ALL of the major virtual infrastructure providers (VMWare, HyperV, Xen
* All versions of windows
* A great many storage providers (EMC, NetApp, probably others)
* A number of network infrastructure providers
* IIS, and Exchange -- like it or not these are huge players
* And anything else you want to add support for yourself-- I note that Hadoop for example has community support for powershell
By support, I dont mean in the sense that you could use bash to launch SSH to manage these things. I mean in the sense that VMWare allows you to run the following native powershell commands:
Connect-VIServer myVMCluster
Get-VM | Where-object {$_.powerState -eq "PoweredOn"} | foreach { stop-VM $_}
And all of your VMs will be shut off. Trying to do something like that in bash is doable, it just requires screwing around with scripted SSH access to the VMhosts which is painful, for anyone who has done it.
I much prefer being able to see/etc/fstab than working with some nebulous class with functions that barely make sense.
This is a criticism of object-oriented languages, not powershell. You might as well rail against.Net, or Java, or C++.
An IT department equipped to do reimaging is probably equipped with at least one IT guy dedicated to security who would want to find out what happened and how to prevent it.
Its an eyesore if your idea of a pretty scripting language is one that uses unconventional naming schemes and arbitrarily picked switches that require a man page to explain, sure. The beauty of powershell is you can do tasks you've never done before simply using tab-completion, relying on the parameter names to describe what they do.
Powershell is good for the same reason that this: public String getFirstThreeCustomers (String[] customerList) {
final int NUMBER_OF_CUSTOMERS = 3;
String outputText;
for (int i = 1; i NUMBER_OF_CUSTOMERS; i++) {
outputText = outputText + customerList[i-1];
}
return outputText; }
Is better code than this: public String gfc (String[] i) {
return i[0] + i[1] + i[2]; }
Both do the same thing, one is short but not really clear what its used for, the other is explicit and flexible, but wordy.
He's going to die eventually, and he thinks he's going to paradise.
If he were correct, then the thing he did would not be a wrong.
Obviously we believe he is incorrect, and that what he did WAS wrong, and as justice relies on a concept of proportionality, death seems like the appropriate response.
Society imposing a proportional punishment on one who has inflicted wrong on another is commonly called "justice", not "two wrongs".
I would contend that less than the death penalty here would be to de-value the lives of those he killed. Taking another's life is too serious of a crime to punish by any lesser measure.
You might recall that we have a justice system, and that justice is generally defined by punishments meted out in proprotion to their crime. What punishment would be more just than death for one who has killed many?
On the flipside for anything remotely complex like printing you would expect it to be riddled with bugs and about 5-10 years behind everyone else. Lacking subsystems means creating 3rd party apps for it will be "fun": sounds like a return to DOS days. Which I guess is good news for me, because I never got to experience them in their heyday, so I can see firsthand what instability looks like when you dont have OS provided APIs for things.
That sounds like theyve been actively un-learning all of the lessons the computer science field has spent decades learning.
Here everyone else has been learning how abstraction can promote collaboration and keep bugs simple, and theyve found a way to justify removing abstraction as a way to reduce complexity (lol?).
China has state policies on human rights and freedom of religion, as well.
This is called a risk assessment, and its something that most people (and the media) have no patience for: its far too levelheaded, and not nearly hysterical enough.
This is the sort of logic that would block implementation of automated plane systems which could save thousands of lives per year because it might crash once or twice.
A system doesnt need to be perfect to be implemented as a replacement; it just has to be better, when you look at the big picture, than the thing it replaces.
Take that away and it might kill people.
There are a lot of things that might kill people; to reduce the number of people killed to zero isnt possible, though you could pour endless resources into trying to do so.
The question is whether there are reasonable ways to provide access to 911 that do not themselves create worse problems like swatting; 70% of calls being fradulent starts to get into an area where legitimate services are impacted. Put another way: how many people die because legitimate resources were diverted by fraudulent calls?
Comparing the NSA to the Chinese MSS can only be done by one who is completely in ignorance of them.
Excuse me, Im looking for strawmen and someone told me this thread would be a great place to find them.
Im pretty sure you cant control user-side GPOs or IE settings from a HTML header.
I think what we have is clear examples of people who read the article and those who did not.
So you want complete freedom of expression as long as others agree with your vision.
Got it.
The NSA isnt the problem.
China Telecom
Thats the problem. Look up who they are and who is the hand that feeds them.
Too bad I've written many examples of such a thing, purely in powershell. Too bad lots of people do things like this. Too bad theres many examples on poshcode.
Because some of the tools-- rm, mv, ls-- use a "take 2 letters from the word, thats the command" convention, while others are completely different (tar, unzip, gunzip, passwd, man). Theres no common convention whereby you could say"I want to do X" and know what the command is off-hand.
To the uninitiated, there is no particular reason to think "mv" would be the move command; you have to already know that.
Best practices be damned, you're rockstar coder. Who cares if no one else can look at that code and figure out why you created it and where its probably being used?
Well, I claimed to be a powershell user, not a Java pro. I still think the first example is superior if you're intending the source code to be maintained by other people and some of them may not be expert coders-- as will be the case with scripts.
Massive, heterogeneous, "Enterprisey" deployments benefit from far more complete tools than fucking PowerShell,
I mean its not like PowerCLI is a thing required for the creation of AutoDeploy profiles for VMware, or like thats a major feature for using stateless hosts on datacenter-scale clusters. Its not like Storage arrays commonly require SSH to configure, but offer powershell as an alternative.
Reading your post, I get the impression that you think that network switches, routers, and SANs are configurable via some webpage. I can promise you, when that is the case, its an awful experience. Generally "enterprisey" admins are sticking to CLI for those things because CLI reduces the chance of screwups: you can stage and review your change in notepad and then deploy it to hundreds of clients.
The bloody verbosity of the platform (it really is a platform - not a language) was the worst part
A few things-- the language has a large number of shortcuts, like "fl" instead of "format-list" or "?" instead of "where-object" or "%" instead of "foreach". But the verbosity of it is not really a bad thing, as it makes the resulting code at least somewhat self-documenting; its crystal clear what each command will do most of the time.
An IDE was necessary so you could scroll through the list of available functions to find the one you were looking for as they were generally not that obvious
This is what tab-completion or get-member or even "get-help [command] -examples" is for.
A quick for loop to rename files? Definitely bash. Holy cow is that a pain in Powershell.
$date = get-date -format yyyyMMdd
get-childitem -filter *.txt | foreach {rename-item $_.fullname "$date_$($_.name)"}
Really not that painful.
You mention usefulness- the usefulness as you said is that its a platform supported by an incredible number of vendors. Just about every piece of infrastructure I've come across has vendor-provided powershell integration; the ability to take output from a get-VM command and pass it into a storage provisioning command makes a number of tasks incredibly easy.
Lastly, I would say: man pages.
get-help is your friend, and is far superior to man with the -detailed or -examples switches. Not sure where you're getting the "1.7GB", but this page indicates that the size is more like 9KB.
An MMC would not allow you to use a text-field to search for a user, press a button, and have a new VDI instance spun up, storage provisioned, and permissions configured.
A more common use case would be what I described, but without the GUI, repeated 100 times for 100 different users.
The nix shells I have used are very powerful, but also very, very painful to learn. Learning sed / awk syntax could easily fill 4 of those 8 hours I mentioned; and thats not even getting into how each and every tool has its own unique idea of how to do syntax. What does a -z switch specify? I dont know, probably fire up that man page and dig through it. What about -h? Is that help, or human readable?
it really just feels like a kludged attempt to bring CMD.exe to something closer to bash.
Theyre not even remotely close. They both operate on the idea that data should be passable between consecutive commands via a pipeline, but bash makes no attempt to deal with different types of data nor any good way to determine what data is incoming. Powershell solves this by being object oriented, and letting you easily determine the type of data coming in, export it to XML, and reimport it at a later session if desired.
As an example-- if you have an error in bash, whats the stack trace look like? Do you have a good way of capturing it? In powershell you can reference the $error[0] variable, and pull up any piece of info you might need to troubleshoot, or even just export the whole thing by "$error | export-cliXML -file C:\somefile.xml" if you're running a nightly job; any issues can later be imported into a new session to diagnose.
Now the question becomes just because you can use it, does it mean you should?
Yes. If you deal with IT infrastructure at all, you would be absolutely crazy not to learn it; its explicitly supported (with native commands) by:
* ALL of the major virtual infrastructure providers (VMWare, HyperV, Xen
* All versions of windows
* A great many storage providers (EMC, NetApp, probably others)
* A number of network infrastructure providers
* IIS, and Exchange -- like it or not these are huge players
* And anything else you want to add support for yourself-- I note that Hadoop for example has community support for powershell
By support, I dont mean in the sense that you could use bash to launch SSH to manage these things. I mean in the sense that VMWare allows you to run the following native powershell commands:
Connect-VIServer myVMCluster
Get-VM | Where-object {$_.powerState -eq "PoweredOn"} | foreach { stop-VM $_}
And all of your VMs will be shut off. Trying to do something like that in bash is doable, it just requires screwing around with scripted SSH access to the VMhosts which is painful, for anyone who has done it.
I much prefer being able to see /etc/fstab than working with some nebulous class with functions that barely make sense.
This is a criticism of object-oriented languages, not powershell. You might as well rail against .Net, or Java, or C++.
An IT department equipped to do reimaging is probably equipped with at least one IT guy dedicated to security who would want to find out what happened and how to prevent it.
Its an eyesore if your idea of a pretty scripting language is one that uses unconventional naming schemes and arbitrarily picked switches that require a man page to explain, sure. The beauty of powershell is you can do tasks you've never done before simply using tab-completion, relying on the parameter names to describe what they do.
Powershell is good for the same reason that this:
public String getFirstThreeCustomers (String[] customerList) {
final int NUMBER_OF_CUSTOMERS = 3;
String outputText;
for (int i = 1; i NUMBER_OF_CUSTOMERS; i++) {
outputText = outputText + customerList[i-1];
}
return outputText;
}
Is better code than this:
public String gfc (String[] i) {
return i[0] + i[1] + i[2];
}
Both do the same thing, one is short but not really clear what its used for, the other is explicit and flexible, but wordy.