I don't think Ballmer is bad in every way, I think there are some teams he seems to have recognised know what they're on about and so he just leaves alone for the most part. Windows Server and SQL Server for example have just continued to get better.
I think Ballmer's flaw is that he has no vision, whilst Steve Jobs knew a good product when he saw one and knew when resources needed to be poured into it, and also knew when a product was a lost cause and knew when to axe it I don't think Ballmer is capable of that.
In other words I think Microsoft's product success (like Kinect) happen in spite of Ballmer, rather than because of the support of him, but it doesn't mean that impressive products can't get through and tried and tested products can't just continue to improve when he just leaves them alone. It's possible he'll just take a hands off approach with the XBox One now.
Or in other words I think Ballmer is a relatively passive leader, he doesn't have the drive to really fire up Microsoft and make it move, but he doesn't have the competence to axe bad ideas either. Microsoft nowadays strikes me as being somewhat in zombie mode with some departments coming up with good ideas and getting them through all by themselves without any help from leadership and other departments coming up with awful ideas (Windows 8 Metro) and pushing them through with no real leadership opposition either.
Still I may be wrong, there are people here who work at Microsoft, maybe they can give their thoughts and explain it even if anonymously.
It's hard to imagine Mattrick was a scapegoat given that he implicated himself by defending so rabidly the DRM policies in interviews to the extent of insulting customers. I very much doubt his orders were "Don, go make a dick of yourself in public".
If you look at what happened with the DRM fiasco, we had Don insulting his customers saying basically that DRM was for their own good but also importantly that it couldn't be removed, then within a couple of days you had it removed including detail of the implications that had on other systems and features which is not a mere couple of days work to evaluate properly.
I suspect what happened is that Sony did their unveil, Don refusing to admit he was wrong (because he hates consumers, and is an arrogant dick, hence why Zynga is perfect for him) carried on parroting the DRM line whilst his reports knew that this was a major problem, bypassed Don because he was a waste of space and went straight to Ballmer to say "Let us remove this or we're done", Ballmer gave permission, they sent to work on it and had a good week to do it whilst Don was still oblivious, or knew full well, but was trying to fight his corner internally. Either way he obviously lost eventually.
Hence why he has now gone, because he was basically undermined by those under him who knew far better than him what the customer wanted and what strategy was required not to completely destroy their product before it was even released.
This is also I suspect why they're not replacing him, because his reports probably knew better what made a good product than he did, hence why they may as well report directly to Ballmer and cut out the idiot in the middle.
Goodbye Don, you wont be missed, EA's most awful DRM regime period, overseeing Microsoft's worst XBox ideas, Zynga, you're an example of everything that's wrong with the games industry. It's nice to see you've finally ended up somewhere that deserves you and that you deserve to be at.
Ignore my previous request, someone else just posted the US regulations on revocation of passports and it looks like the US is particularly strict in this regard and can indeed revoke based on nothing more than a charge regardless of validity.
There are some subtleties involved though and that's where the problem lies.
It's certainly not a violation of human rights to prevent someone convicted of a crime travelling, it's certainly not a violation of human rights to confiscate a passport of someone who has been charged awaiting trial from travelling.
But what's not so clear cut is if it's a violation of human rights to revoke the passport of someone who is already out the country, who committed no crime in the country they were in at the time of the incident they're being tried for.
The normal path for dealing with this situation is extradition judged by the host country on it's merits and revocation of passport is an unusual step normally only used when someone has also been say stripped of citizenship for example.
The problem is that Snowden is in limbo, because he can't enter Russia without a passport, and Russia can't even consider the US extradition without him officially entering Russia. This is why there's arguably a human rights violation and why I suspect he has claimed to have been made stateless - sure he has US citizenship still, but he's currently not officially residing in any state and feels that nor can he.
Do you have a link to the US' policy on password revocation? A guy above posted a link to Canada's rules but they're obviously not relevant and in fact prove the opposite - Canada's rules state that revocation only occurs if the passport has been used to commit a crime, but as he hasn't been convicted of anything then it could not be revoked under that clause. I'm intrigued to see when the US deems it valid to revoke a passport and whether unlike Canada it's on a mere charge rather than conviction.
Although you're absolutely right that revealing classified information is a crime in just about every country you mustn't forget that there are often whistleblower exceptions too (here in the UK they'd fall under public interest protections). Hence why it's too early to revoke his passport for committing a crime - you need a conviction to determine that, hence the reason for being intrigued to see the US' laws on the issue.
It's also worth noting there's generally a distinction between passport revocation and passport confiscation. Confiscation of a passport is usually what's used when a criminal is awaiting trial and a flight risk, revocation invalidates an existing passport such that a new one would have to be issued for someone to obtain a valid one once more. This does have some relevance to this case in that Snowden was already out of the country and hadn't broken any laws in the country he was in at the time. Does the US even have universal jurisdiction laws for this sort of thing? I was under the impression the closest they had was the Protect America Act but that's reserved specifically for terrorism IIRC.
I know on Slashdot it's popular to think binary (whether that's because just about everyone here is an IT worker and it's a trait that plagues that mindset I don't know) such that you're either with something and claim that something is most definitely right or against something and claim that something is most definitely wrong, but I don't think it's that simple, I think it's far less clear cut than that hence why I raise the question of whether the US can really even just revoke his passport like that.
The rest of what I mentioned regarding the UDHR I think is pretty well established fact though, it seems a bit of a farce to pretend the US hasn't breached those articles listed pertaining to things like torture/degrading treatment, right to fair trial and so forth when it's run Guantanamo and performed extraordinary rendition and extrajudicial killings, though I don't know if you were disputing that part of my post or just the parts relating to Snowden?
On what grounds could he have sought asylum before he was in a safe haven? If he hadn't released anything he'd have just been laughed at. An American citizen fleeing persecution with no evidence that he was being persecuted? Asylum application rejected.
So if it's a privilege not a right then why is it defined as a human right in the UDHR which the US was active in both writing and voting for? The problem is they're not stopping him leaving the US for committing a crime there, they're stopping him travelling full stop by revoking his passport. That's not quite the same as a court forcing surrender of travel documents.
What about Chen Guangcheng? He was deemed a criminal in China but the US seemed to have no problem with arguing to get him out of the country? Is it only okay to support the UDHR which the US voted for when we're talking about foreigners?
There still seems to be a certain degree of extreme double standards here whatever the technicalities are.
This news is a day late. Since this happened Putin told him he can't leak anything else if he wants to stay in Russia so he's withdrawn his request to Russia.
As for the US breaching article 14 I don't think it matters anymore, they've long thrown articles 5, 6, 7, 8, 9, 11 and 12 out the window in the last decade and no one did anything so of course they'll try and get away with violating the rest despite being a signatory to the UDHR.
But in this case they're also now violating article 13, which states that:
"Everyone has the right to freedom of movement and residence within the borders of each State.
Everyone has the right to leave any country, including his own, and to return to his country."
Revoking Snowden's passport also violates this from what I can see as by removing his passport they're removing his right to travel and hence to leave Russia.
Or in other words the US has pretty much now completely thrown the de-facto document on basic levels of standards of human rights entirely out the window.
As each year goes on they're breaching a new article, when they do that how can they realistically preach to any other nation on human rights? How can they pretend to have the moral high ground next time a blind Chinese human rights activist turns up at their embassy and they claim they should be allowed to let him go to the US against China's will?
Sigh, okay, I'll bite, I'll try one last time on the principle that your claim of being willing to learn is posed on good faith, but you have to do me a favour, you have to actually read what I write now, and re-read what I posted previously where relevant because claiming you're willing to learn and that I haven't answered your questions when I have actually done so doesn't strike me as the attitude of someone that's willing to learn, it strikes me as the attitude of someone that doesn't want to learn and wants to stick to his guns no matter how wrong.
"No, it's true. Inheritance breaks encapsulation. This is a indisputable fact. It's VERY well established in the literature."
No it isn't indisputable fact, and where it's "established" in literature that literate is rather old and dated, and everything else that "establishes" it does so by just parroting those dated arguments without trying to see if they still make sense.
The arguments made a bit more sense when keywords like protected weren't implemented, or were implemented poorly but afterwards the argument seems to have evolved more into what happens if you create a sub-class that's tightly bound to a parent class and you later need to change the parent class? This is literally the only argument remaining backing the claim but it's wrong, because it's premised on the idea that bad design has been used and ignores techniques that are commonplace to resolve such issues nowadays like IoC/DI.
So yes you can of course create bad hierachies and bad OOD in a class based OOP language, but that's a fault of the developer, not the language.
Compare and contrast this to the original argument that Javascript does not properly implement OO and is badly designed as a result and it's night and day - in languages like C# and Java inheritance breaking encapsulation occurs as a result of bad design by the programmer, whilst with Javascript it's broken as a necessity of bad design by the language, and that's the fundamental difference. Effectively in something like C#, bad OO design is optional, in Javascript it's a necessity because you can't ever safely inherit, you need to get that fundamental difference as to why one is far worse than the other, something you've not grasped to date.
So moving on from this point I'm going to throw it back to you, I've explained twice why inheritance doesn't inherently have to break encapsulation in well designed languages, it's now up to you to prove that it unavoidably does and then hence explain how this therefore justifies Javascripts position of requiring forced breaking of encapsulation in every case, rather than class based OO's accidently breaking in cases of poor design if you wish to persist down this route. That doesn't mean fob me off with academic papers that don't back up your position because the chances are I've read them and as I say they stem from an era when languages were very different such that their arguments are no longer valid, or instead just hinge on assuming bad design (which is a different problem).
"Have any evidence? Because I don't think you do."
Answered already. Check the web for the plethora of people citing problems with their Javascript programs that stem from the previously mentioned examples of bad language design. Because these problems are inherent only to Javascript it's a given then that it introduces more issues than other languages that don't have these problems because Javascript developers face the problems shared with those languages, and then the problems that are Javascript specific on top. Again the same is true of PHP - it results in inherently worse software because more pitfalls = more bugs.
"Once you learn the language"
You keep repeating this but miss the obvious - people have to go to much greater lengths to full learn all of Javascript's quirks than they do most other languages, and that in itself is a problem because if they have to go to greater lengths then there's a greater chance they'll miss things. Your argument can be exte
Well when you start by telling the GP his post makes no sense one can only assume that you don't in fact get it because his post does make an awful lot of sense.
China may well be involved in some degree of espionage, but the point is that it'd do just fine without espionage too. It's development of things based off of espionage is such a trivially small amount of it's economic growth power that it's not really relevant yet the US government's rhetoric towards China would have you believe that it's the only reason China is succeeding, which is obviously false. Just the sheer amount of cheap labour alone working on internal infrastructure projects is enough to push China's economic up the global rankings without any espionage at all.
The problem is that US rhetoric towards China is mostly just scapegoating, China is seeing healthy economic growth whilst the US economy has struggled bolstered only by stimulus and rather than accept responsibility the American government prefers to pretend that it's all China's fault, and that's the problem.
"When Microsoft pulls stunts like this, I take notice and I know I'm not the only one. Why would I want to invest my time and money into a sinking ship? I have 20 to 25 more years of development before I retire and right now I'm a.NET developer. C# is a pretty good language, but Microsoft is screwing up so much else, I don't really see how businesses are going to continue to support Microsoft. When those businesses drop Microsoft, it's going to go fast and my ability to get and keep a good paying job will go with it."
Why? I wouldn't sweat it. I'm primarily a C#.NET and C++ developer, but we had a requirement at the start of the year to produce a Java implementation of one of our C# solutions for use in the banking industry. Switching from knowledge of ASP.NET MVC to Java and Spring MVC wasn't particularly difficult in the slightest.
Spend a bit of time learning and playing with other languages in your spare time, you don't need to invest much. If the Microsoft world falls and C#.NET becomes free from employment prospects then Java is the language that's going to fill that void and it's a really simple jump over to Java from C#.
It's not really something worth worrying about, employment for C# roles is still on the increase despite being perhaps the most popular language already for new recruits across the globe. It'll become quite obvious when the decline starts, but it's certainly not there yet, not even close. Don't worry about it, just keep on doing what you're doing and do the odd check on the jobs market and so forth once a month or so to see if there are any changing trends in languages requested.
Microsoft may go but worrying about transferability of skills isn't something that you should let bother you if you're even half way skilled with C#.
Or you know that Mattrick was desperate because he'd been given his notice period after the colossal XBox One DRM screwup which he was defiant in defending and the subsequent reversal.
It's nothing to do with the "writing on the wall", he got pushed, period.
This is the guy who basically told his customers to go f themselves and insulted just about every serving member of the US military whilst also claiming removing DRM from the XBox One was impossible, only for the company to do exactly that literally only a few days later.
It's pretty obvious this guy fucked up, and was given his notice. Had he not got this job at Zynga I'd wager in a few more weeks time he'd have "decided to leave Microsoft to spend more time with my family".
It's good news, this is a pro-DRM anti-consumer idiot and the XBox 360 got progressively more ad filled under his reign. Zynga will suit him as it's the kind of anti-consumer company he'll fit right into.
The XBox One is now way better off because they no longer have this guy interfering to make it anti-consumer and so there is a possibility it will actually become better for consumers. The XBox 360 was made a great console without him, it's now possible the XBox One can be too.
Getting rid of this guy is the best thing Microsoft's E&D division has had happen to it in quite some time so it's win-win for everyone. A stronger XBox One even if you hate it is still a good thing in preventing Sony becoming complacent with their offering which was always the danger if the XBox One was a flop because Sony was bad enough to customers even when it had no right to be complacent with the PS3 so god only knows what we'd see if it basically had the whole generation to itself.
China already has nukes but I think you missed the GP's point, why would China even care about the US' nuclear technology when there's no need to use them? The GP's point was that China is more interested in growing it's economy than anything else, whilst the US seems busy both destroying it's long term economic prospects by building the largest mountain of debt known to man and spending trillions on wars that make literally no difference at the end of the day and by destroying all international credibility past generations of American leaders had worked so hard to build up.
Or in other words, China doesn't need to steal American nuke plans because America is already very busy destroying itself without any weaponry even being required. It's already thrown away all pretences of liberty and justice that were at the supposed core of what America once stood proudly for by doing things like Guantanamo bay, torture and extraordinary rendition. The fabric of what made America great is already well torn and it's busy rushing down a path that will, if it continues, destroy it completely.
"Umm... Inheritance is fundamentally incompatible with encapsulation. This isn't exactly a big secret. Google "inheritance breaks encapsulation"."
Wrong. In a language such as C# you can have a member set as protected, private, or public. If it's private data hiding is retained such that it's hidden from subclasses, if it's protected it's a shared property between parent and subclass, if it's public it's not hidden to anything. Nothing here breaks the principle of encapsulation as levels of data hiding are provided to cover each eventuality. Either the data shouldn't be shared, it should only be shared with inherited classes where the shared member makes sense, or it should be shared with anyone.
Contrast this to Javascript where you can't have members shared only with inherited classes they have to be made public to everyone.
If you have a Mammal class with a brain property that shouldn't be public then with C# you could create a Human and Horse subclass that retain data hiding by calling it public - both are still meant to have a brain, it makes sense. With Javascript everyone has to access the brain, or your Human and Horse don't have a brain, data hiding is broken.
You can of course produce broken designs in class based OO languages if that's what you're referring to but that's not an inherent language fault like Javascript's failure to maintain encapsulation in the face of inheritance is.
"Well, what are they?"
Um, learn to read? I provided some examples.
"One of the greatest strengths of PHP is that it is incredibly simple to learn and use. What are these mysterious quirks that millions of amateurs are apparently willing to slog through learning before hacking out yet another home-grown CMS?"
That's exactly the point, just as with Javascript they don't slog through them, they're just not even aware of them and as a result they write wrong code, buggy code, vulnerable code. The same is not true of languages like Java and C#.
"More buggy that what?"
More buggy than an equivalently skilled developer would produce with better designed languages. There's a reason most security exploits on the internet nowadays hit PHP web applications and so many sites have Javascript faults and it's certainly not because PHP is more popular given that C# and Java are erm, more popular.
Still enough is enough, you're obviously not willing to learn enough about this topic to have a rational conversation instead quoting lines from books that are now nearly 20 years old from when OO was far less common and far less well understood and (in many cases) implemented. It's obvious you're out of your depth given that, not that your inability to understand why many things in Javascript's inherent design are bad didn't make it obvious enough already.
Have fun basking in your ignorance with your Javascript and PHP with all the other low skilled web hipsters.
"This statement isn't even coherent: "This is a relic of the fact that Javascript wants to be both OO and Prototype based". What other conclusion could I draw?"
That you don't know much about language paradigms? The problem is that the three pillars of OOP are inheritance, encapsulation, and polymorphism. In Javascript you can't do inheritance without sacrificing encapsulation which is a trait of it's prototype based approach and hence precisely why it's a farce to pretend it follows a genuinely OO paradigm. It clearly does not because it cannot fulfil the basic criteria of OO.
"Points 2 and 3 clearly shows that you don't understand the scoping rules. Once you actually learn the language it becomes clear that there are no issues to "work around". The rules are simple and clear. There are no inconsistencies. Though it looks like you want to introduce some..."
Of course there are inconsistencies, hence why you have to use a rather brutal hack to pass a variable value to a binding. Again you're just highlighting your lack of knowledge of other languages here, you say it's not possible, you say it can't be done, except every other language on the planet manages to handle scoping just fine, including other prototype based languages. I know what the scoping rules are, but to pretend there's justification as to why they have to be that way displays once more complete and utter ignorance of language design.
"Here's something fun: PHP perfectly fits your criteria for a "good, well designed language" as it "doesn't require you to take extra steps to 'learn the language' beyond the concepts necessary to use it at a base level"."
No it doesn't, you're just further demonstrating what very little knowledge you have of programming languages outside Javascript. PHP has a number of quirks that are a result of bad design that you have to learn to use it properly, just like Javascript. For example, with PHP, you have to be aware that it's ternary operator works in a completely backwards when chained, it's === operator compares value and type, except when it doesn't. Languages like Java and C# have none of these problems. The base language features of PHP neither work consistently nor in a logically sound manner (i.e. == isn't transitive). The same cannot be said of C# and Java. When I talk about base language I mean your standard features like logical operations, conditional operations and so forth without more advanced functionality like lambdas and such.
If you're not even aware of that then I can't really help you, you seem to know Javascript and nothing else so assume Javascript is the only way things can be done, which to anyone with even the slightest experience with other languages is obviously and demonstrably false.
You're one of those people whose only tool in their toolset is a plastic fisher price hammer, so you think the plastic fisher price hammer is the best thing ever invented and that every other tool must be exactly like this plastic hammer and that no other tool is possible.
Until you can discuss based on knowledge of languages other than Javascript I'm not quite sure what else can be said. The fact you believe PHP has no underlying quirks that are a result of bad language design and that must be learnt to use even the base language properly without introducing faults speaks volumes but given that you believe Javascript has no faults I'm not entirely surprised to hear that you also seem to believe PHP has no design flaws.
To answer your final question, well, I've already answered it, it's quite simple - not have poor design traits that result in inherently more buggy software at all skill levels. Javascript has all too many of those, and that's the problem.
Bless. Look at the amateur trying to pretend he knows what he's on about with cries of "learn the language".
Yeah, me and even the most experienced Javascript developers on the planet, obviously we all need to learn the language. Obviously the scoping rules and handling of captured variables make perfect sense, that's why they're the number one cause of bugs in Javascript yet largely a non-issue in just about every other language.
Let us bow down to your superiority as the only person who really actually understands Javascript.
Don't worry, maybe one day you'll get a proper job where you can use well designed non-toy languages and start to learn a bit more about good language design but yeah I guess in the meantime you can pretend it's just because no one else gets the language, only you do, because of course you're awesome.
But just in case you do wake up from your rose tinted slumber that shows a complete ignorance of language design and implementation of many other languages out there that simply do it better, then might I suggest you start by recognising that your entire post has missed the point? Hint: It doesn't matter if learning the language let's you work around these things, the fact I highlighted them demonstrates precisely that I do know the language, am aware of them, and hence can work around them, but that doesn't change the underlying point which people above have been trying to make to you - that these issues are the result of bad design and kludges. It doesn't matter if you can work around them, they just wouldn't be there in the first place if the language was well designed - yes there is a technical explanation as to why NaN works the way it does for example, but that doesn't make it a good part of the language.
A good, well designed language, doesn't require you to take extra steps to "learn the language" beyond the concepts necessary to use it at a base level, Javascript does (and so do languages like PHP) and that's exactly why it's kludgy. Compare and contrast to say, Java, F#, or C# and they far more often just work exactly as you'd expect - you don't need to go and learn a plethora of warts and quirks. Why? because they're far better designed and aren't kludgy. Which is kind of the point people have been making to you but you're apparently just not smart enough or educated enough about different languages, paradigms, and design issues to get.
I fully get the classification procedure and the fact there's an official procedure for declassification.
I'm saying that if something has been declassified in effect (even if not in name) because it's been released widely and publicly that any attempts to continue to treat it as classified are merely time wasting bureaucratic nonsense.
There's literally no point wasting any time and tax payers money pretending that information that has been widely publicised by one of the more prominent media organisations in the world.
This is why I used the term non-thinking - the only people to whom it's a good idea to continue wasting time and money enforcing this sort of procedure on something that's classified only in name but not in practice are people who are frankly brain-dead drones who can't even wipe their own arse without a set of procedures. To everyone else it's a massive waste of time and money.
I just have a problem with people not knowing what they're on about redefining well established terms through ignorance and pretending they've invented something new.
It's like carrying a cat into the office one day and saying it's called a dog and then proclaiming you invented it and it's never been seen before.
Quite rightly you'd get a few funny looks.
I don't think you've understood my post though, you mention the desktop but I didn't mention the desktop at all. If you were mentioning the desktop in terms of real time computing then that's not what I was on about and still not what real time computing is. Real time computers are systems that have the lowest of latencies in response and can guarantee that, they may be used for example in regulating drug administration in a hospital where you can't simply have a few second spike as the OS decides to do something in the background because not regulating those levels to the closest millisecond can be the difference between life and death.
If you were referring to my comments on responsive design then again I think you've misunderstood the new definition of responsive design. The term responsive design as used by the hipsters refers to using CSS3 features and such to make a page adapt depending on the user's resolution and DPI. The reason I take issue with this is that designing a responsive website historically referred to using Javascript to limit server side callbacks, for example doing pre-validation on a form field client side and telling the user immediately that there's a problem without requiring a postback - that's what responsive design meant in the classic sense. The issue is that they've caused ambiguity because now when they say "Hey we need to build a responsive website" it's impossible to tell if they mean one that adapts to different display devices and changes it's layout to suit or whether they mean one that responds quickly to user feedback or if they just meant both. Of course, it's all also really just a natural evolution of resolution independent design at the end of the day, which is what we always used to call this sort of thing before it got more fancy with CSS3's new media tags et. al.
Things like high concurrency, maintainability, scalability and state management are as old as the web (well, older really) so are far from emerging concerns. It's as if there's a new generation of web developers that have appeared in the last 5 years who have managed to become web developers without having learnt anything whatsoever about the things that came before them and they're just repeating the mistakes everyone else that came before them made with their fancy new technologies that the people who came before them then have to come in and fix. All people like me ask of these people is can they not just learn a little bit about the history of web development so that they can expend their efforts on moving forward rather than continuously reinventing the wheel repeating and then solving problems that have already been made and solved previously and without creating contradictory terminology in the process?
1) You say stop trying to use it like an OO language yet the language supports OO features badly. It wants to support them but then people say it has shit support, if a language has shit support for something such that people say don't use it then yes it's a shit kludgy language
2) If you don't prefix a previously unused variable it goes into the global scope. What. The. Fuck. Why in a code block like a function would you ever want a variable to become global by default? This is kludgy, it would've been better to only go global if you explicitly declare global.
3) It tries to simplify things but this often makes things harder. You have no option to pass by reference or value explicitly so when you try to do something like pass a loop variable as a parameter to a binding and want to explicitly pass by value it passes by reference and captures the variable retaining it long after it's gone out of scope naturally. You have to use the most god awful syntactically ugly kludgy hack of creating a new scope to force the variable to be copied by value.
4) Usage of new is so bad the expert advice is often just "don't use it". This is a relic of the fact that Javascript wants to be both OO and Prototype based and utterly fucking fails at the former.
5) Semi-colon use at line endings is optional, except when it's not. This causes all sorts of debate as to when you should and shouldn't use them and results in newbies having buggy code because of the utter confusion caused by what in most other languages is a pretty fucking simple rule - end your lines with a semi-colon. Again, the language trying to be smart causing more problems than it solves.
6) Javascript doesn't have real arrays, just objects. Except it's defenders keep telling us we shouldn't treat it as an OO language despite one of the most fundamental data structures in existence being implemented as an object.
7) parseInt's default radix handling is counter-intuitive and fucks people up because it parses for example numeric strings in a way people would least expect by default.
8) typeof NaN === 'number' is true, and NaN === NaN is false. Not a number is a number but Not a Number is not Not a Number. What. IsNaN is a required hack - a kludge you might say - implemented to solve the problems this can cause.
Need I go on?
Javascript is everywhere on the web, it's a necessity now and you can do some really awesome things with it, more so if you understand how to avoid it's quirks.
But despite it's prevalence one simply cannot argue that it's a "good" language, it's really not. It's probably the most warty language I've ever had the misfortune to deal with after PHP. People defending it (fanboys) initially pretend the problem doesn't exist, then when, as I have, you explain the issues they say "Well it's not a problem if you know what you're doing" but it is, you can look at the change history of any number of open source Javascript projects and you will find bugs that have been fixed that exist purely because of the warts despite the people introducing the bug being some of the most experienced Javascript developers on the planet. If there's an additional vector for bug introduction then eventually bugs will be introduced through it, and Javascript has plenty of those vectors.
So yeah it works, yeah it's what we're stuck with, yeah amazing things can, have and will continue to be done with it, but it's still not good. Which is kind of the point most people are making when they say exactly that.
I don't think Ballmer is bad in every way, I think there are some teams he seems to have recognised know what they're on about and so he just leaves alone for the most part. Windows Server and SQL Server for example have just continued to get better.
I think Ballmer's flaw is that he has no vision, whilst Steve Jobs knew a good product when he saw one and knew when resources needed to be poured into it, and also knew when a product was a lost cause and knew when to axe it I don't think Ballmer is capable of that.
In other words I think Microsoft's product success (like Kinect) happen in spite of Ballmer, rather than because of the support of him, but it doesn't mean that impressive products can't get through and tried and tested products can't just continue to improve when he just leaves them alone. It's possible he'll just take a hands off approach with the XBox One now.
Or in other words I think Ballmer is a relatively passive leader, he doesn't have the drive to really fire up Microsoft and make it move, but he doesn't have the competence to axe bad ideas either. Microsoft nowadays strikes me as being somewhat in zombie mode with some departments coming up with good ideas and getting them through all by themselves without any help from leadership and other departments coming up with awful ideas (Windows 8 Metro) and pushing them through with no real leadership opposition either.
Still I may be wrong, there are people here who work at Microsoft, maybe they can give their thoughts and explain it even if anonymously.
It's hard to imagine Mattrick was a scapegoat given that he implicated himself by defending so rabidly the DRM policies in interviews to the extent of insulting customers. I very much doubt his orders were "Don, go make a dick of yourself in public".
I'm pretty sure he managed that all by himself.
Quite the opposite I think.
If you look at what happened with the DRM fiasco, we had Don insulting his customers saying basically that DRM was for their own good but also importantly that it couldn't be removed, then within a couple of days you had it removed including detail of the implications that had on other systems and features which is not a mere couple of days work to evaluate properly.
I suspect what happened is that Sony did their unveil, Don refusing to admit he was wrong (because he hates consumers, and is an arrogant dick, hence why Zynga is perfect for him) carried on parroting the DRM line whilst his reports knew that this was a major problem, bypassed Don because he was a waste of space and went straight to Ballmer to say "Let us remove this or we're done", Ballmer gave permission, they sent to work on it and had a good week to do it whilst Don was still oblivious, or knew full well, but was trying to fight his corner internally. Either way he obviously lost eventually.
Hence why he has now gone, because he was basically undermined by those under him who knew far better than him what the customer wanted and what strategy was required not to completely destroy their product before it was even released.
This is also I suspect why they're not replacing him, because his reports probably knew better what made a good product than he did, hence why they may as well report directly to Ballmer and cut out the idiot in the middle.
Goodbye Don, you wont be missed, EA's most awful DRM regime period, overseeing Microsoft's worst XBox ideas, Zynga, you're an example of everything that's wrong with the games industry. It's nice to see you've finally ended up somewhere that deserves you and that you deserve to be at.
Go read a bit about universal jurisdiction and you'll understand the problem better.
Ignore my previous request, someone else just posted the US regulations on revocation of passports and it looks like the US is particularly strict in this regard and can indeed revoke based on nothing more than a charge regardless of validity.
There are some subtleties involved though and that's where the problem lies.
It's certainly not a violation of human rights to prevent someone convicted of a crime travelling, it's certainly not a violation of human rights to confiscate a passport of someone who has been charged awaiting trial from travelling.
But what's not so clear cut is if it's a violation of human rights to revoke the passport of someone who is already out the country, who committed no crime in the country they were in at the time of the incident they're being tried for.
The normal path for dealing with this situation is extradition judged by the host country on it's merits and revocation of passport is an unusual step normally only used when someone has also been say stripped of citizenship for example.
The problem is that Snowden is in limbo, because he can't enter Russia without a passport, and Russia can't even consider the US extradition without him officially entering Russia. This is why there's arguably a human rights violation and why I suspect he has claimed to have been made stateless - sure he has US citizenship still, but he's currently not officially residing in any state and feels that nor can he.
Do you have a link to the US' policy on password revocation? A guy above posted a link to Canada's rules but they're obviously not relevant and in fact prove the opposite - Canada's rules state that revocation only occurs if the passport has been used to commit a crime, but as he hasn't been convicted of anything then it could not be revoked under that clause. I'm intrigued to see when the US deems it valid to revoke a passport and whether unlike Canada it's on a mere charge rather than conviction.
Although you're absolutely right that revealing classified information is a crime in just about every country you mustn't forget that there are often whistleblower exceptions too (here in the UK they'd fall under public interest protections). Hence why it's too early to revoke his passport for committing a crime - you need a conviction to determine that, hence the reason for being intrigued to see the US' laws on the issue.
It's also worth noting there's generally a distinction between passport revocation and passport confiscation. Confiscation of a passport is usually what's used when a criminal is awaiting trial and a flight risk, revocation invalidates an existing passport such that a new one would have to be issued for someone to obtain a valid one once more. This does have some relevance to this case in that Snowden was already out of the country and hadn't broken any laws in the country he was in at the time. Does the US even have universal jurisdiction laws for this sort of thing? I was under the impression the closest they had was the Protect America Act but that's reserved specifically for terrorism IIRC.
I know on Slashdot it's popular to think binary (whether that's because just about everyone here is an IT worker and it's a trait that plagues that mindset I don't know) such that you're either with something and claim that something is most definitely right or against something and claim that something is most definitely wrong, but I don't think it's that simple, I think it's far less clear cut than that hence why I raise the question of whether the US can really even just revoke his passport like that.
The rest of what I mentioned regarding the UDHR I think is pretty well established fact though, it seems a bit of a farce to pretend the US hasn't breached those articles listed pertaining to things like torture/degrading treatment, right to fair trial and so forth when it's run Guantanamo and performed extraordinary rendition and extrajudicial killings, though I don't know if you were disputing that part of my post or just the parts relating to Snowden?
Feel free to expand upon them and explain their relevance.
On what grounds could he have sought asylum before he was in a safe haven? If he hadn't released anything he'd have just been laughed at. An American citizen fleeing persecution with no evidence that he was being persecuted? Asylum application rejected.
So if it's a privilege not a right then why is it defined as a human right in the UDHR which the US was active in both writing and voting for? The problem is they're not stopping him leaving the US for committing a crime there, they're stopping him travelling full stop by revoking his passport. That's not quite the same as a court forcing surrender of travel documents.
What about Chen Guangcheng? He was deemed a criminal in China but the US seemed to have no problem with arguing to get him out of the country? Is it only okay to support the UDHR which the US voted for when we're talking about foreigners?
There still seems to be a certain degree of extreme double standards here whatever the technicalities are.
This news is a day late. Since this happened Putin told him he can't leak anything else if he wants to stay in Russia so he's withdrawn his request to Russia.
As for the US breaching article 14 I don't think it matters anymore, they've long thrown articles 5, 6, 7, 8, 9, 11 and 12 out the window in the last decade and no one did anything so of course they'll try and get away with violating the rest despite being a signatory to the UDHR.
But in this case they're also now violating article 13, which states that:
"Everyone has the right to freedom of movement and residence within the borders of each State.
Everyone has the right to leave any country, including his own, and to return to his country."
Revoking Snowden's passport also violates this from what I can see as by removing his passport they're removing his right to travel and hence to leave Russia.
Or in other words the US has pretty much now completely thrown the de-facto document on basic levels of standards of human rights entirely out the window.
As each year goes on they're breaching a new article, when they do that how can they realistically preach to any other nation on human rights? How can they pretend to have the moral high ground next time a blind Chinese human rights activist turns up at their embassy and they claim they should be allowed to let him go to the US against China's will?
Sigh, okay, I'll bite, I'll try one last time on the principle that your claim of being willing to learn is posed on good faith, but you have to do me a favour, you have to actually read what I write now, and re-read what I posted previously where relevant because claiming you're willing to learn and that I haven't answered your questions when I have actually done so doesn't strike me as the attitude of someone that's willing to learn, it strikes me as the attitude of someone that doesn't want to learn and wants to stick to his guns no matter how wrong.
"No, it's true. Inheritance breaks encapsulation. This is a indisputable fact. It's VERY well established in the literature."
No it isn't indisputable fact, and where it's "established" in literature that literate is rather old and dated, and everything else that "establishes" it does so by just parroting those dated arguments without trying to see if they still make sense.
The arguments made a bit more sense when keywords like protected weren't implemented, or were implemented poorly but afterwards the argument seems to have evolved more into what happens if you create a sub-class that's tightly bound to a parent class and you later need to change the parent class? This is literally the only argument remaining backing the claim but it's wrong, because it's premised on the idea that bad design has been used and ignores techniques that are commonplace to resolve such issues nowadays like IoC/DI.
So yes you can of course create bad hierachies and bad OOD in a class based OOP language, but that's a fault of the developer, not the language.
Compare and contrast this to the original argument that Javascript does not properly implement OO and is badly designed as a result and it's night and day - in languages like C# and Java inheritance breaking encapsulation occurs as a result of bad design by the programmer, whilst with Javascript it's broken as a necessity of bad design by the language, and that's the fundamental difference. Effectively in something like C#, bad OO design is optional, in Javascript it's a necessity because you can't ever safely inherit, you need to get that fundamental difference as to why one is far worse than the other, something you've not grasped to date.
So moving on from this point I'm going to throw it back to you, I've explained twice why inheritance doesn't inherently have to break encapsulation in well designed languages, it's now up to you to prove that it unavoidably does and then hence explain how this therefore justifies Javascripts position of requiring forced breaking of encapsulation in every case, rather than class based OO's accidently breaking in cases of poor design if you wish to persist down this route. That doesn't mean fob me off with academic papers that don't back up your position because the chances are I've read them and as I say they stem from an era when languages were very different such that their arguments are no longer valid, or instead just hinge on assuming bad design (which is a different problem).
"Have any evidence? Because I don't think you do."
Answered already. Check the web for the plethora of people citing problems with their Javascript programs that stem from the previously mentioned examples of bad language design. Because these problems are inherent only to Javascript it's a given then that it introduces more issues than other languages that don't have these problems because Javascript developers face the problems shared with those languages, and then the problems that are Javascript specific on top. Again the same is true of PHP - it results in inherently worse software because more pitfalls = more bugs.
"Once you learn the language"
You keep repeating this but miss the obvious - people have to go to much greater lengths to full learn all of Javascript's quirks than they do most other languages, and that in itself is a problem because if they have to go to greater lengths then there's a greater chance they'll miss things. Your argument can be exte
Well when you start by telling the GP his post makes no sense one can only assume that you don't in fact get it because his post does make an awful lot of sense.
China may well be involved in some degree of espionage, but the point is that it'd do just fine without espionage too. It's development of things based off of espionage is such a trivially small amount of it's economic growth power that it's not really relevant yet the US government's rhetoric towards China would have you believe that it's the only reason China is succeeding, which is obviously false. Just the sheer amount of cheap labour alone working on internal infrastructure projects is enough to push China's economic up the global rankings without any espionage at all.
The problem is that US rhetoric towards China is mostly just scapegoating, China is seeing healthy economic growth whilst the US economy has struggled bolstered only by stimulus and rather than accept responsibility the American government prefers to pretend that it's all China's fault, and that's the problem.
"When Microsoft pulls stunts like this, I take notice and I know I'm not the only one. Why would I want to invest my time and money into a sinking ship? I have 20 to 25 more years of development before I retire and right now I'm a .NET developer. C# is a pretty good language, but Microsoft is screwing up so much else, I don't really see how businesses are going to continue to support Microsoft. When those businesses drop Microsoft, it's going to go fast and my ability to get and keep a good paying job will go with it."
Why? I wouldn't sweat it. I'm primarily a C# .NET and C++ developer, but we had a requirement at the start of the year to produce a Java implementation of one of our C# solutions for use in the banking industry. Switching from knowledge of ASP.NET MVC to Java and Spring MVC wasn't particularly difficult in the slightest.
Spend a bit of time learning and playing with other languages in your spare time, you don't need to invest much. If the Microsoft world falls and C# .NET becomes free from employment prospects then Java is the language that's going to fill that void and it's a really simple jump over to Java from C#.
It's not really something worth worrying about, employment for C# roles is still on the increase despite being perhaps the most popular language already for new recruits across the globe. It'll become quite obvious when the decline starts, but it's certainly not there yet, not even close. Don't worry about it, just keep on doing what you're doing and do the odd check on the jobs market and so forth once a month or so to see if there are any changing trends in languages requested.
Microsoft may go but worrying about transferability of skills isn't something that you should let bother you if you're even half way skilled with C#.
Or you know that Mattrick was desperate because he'd been given his notice period after the colossal XBox One DRM screwup which he was defiant in defending and the subsequent reversal.
I know which I'm placing my bets on.
It's nothing to do with the "writing on the wall", he got pushed, period.
This is the guy who basically told his customers to go f themselves and insulted just about every serving member of the US military whilst also claiming removing DRM from the XBox One was impossible, only for the company to do exactly that literally only a few days later.
It's pretty obvious this guy fucked up, and was given his notice. Had he not got this job at Zynga I'd wager in a few more weeks time he'd have "decided to leave Microsoft to spend more time with my family".
It's good news, this is a pro-DRM anti-consumer idiot and the XBox 360 got progressively more ad filled under his reign. Zynga will suit him as it's the kind of anti-consumer company he'll fit right into.
The XBox One is now way better off because they no longer have this guy interfering to make it anti-consumer and so there is a possibility it will actually become better for consumers. The XBox 360 was made a great console without him, it's now possible the XBox One can be too.
Getting rid of this guy is the best thing Microsoft's E&D division has had happen to it in quite some time so it's win-win for everyone. A stronger XBox One even if you hate it is still a good thing in preventing Sony becoming complacent with their offering which was always the danger if the XBox One was a flop because Sony was bad enough to customers even when it had no right to be complacent with the PS3 so god only knows what we'd see if it basically had the whole generation to itself.
China already has nukes but I think you missed the GP's point, why would China even care about the US' nuclear technology when there's no need to use them? The GP's point was that China is more interested in growing it's economy than anything else, whilst the US seems busy both destroying it's long term economic prospects by building the largest mountain of debt known to man and spending trillions on wars that make literally no difference at the end of the day and by destroying all international credibility past generations of American leaders had worked so hard to build up.
Or in other words, China doesn't need to steal American nuke plans because America is already very busy destroying itself without any weaponry even being required. It's already thrown away all pretences of liberty and justice that were at the supposed core of what America once stood proudly for by doing things like Guantanamo bay, torture and extraordinary rendition. The fabric of what made America great is already well torn and it's busy rushing down a path that will, if it continues, destroy it completely.
"Umm... Inheritance is fundamentally incompatible with encapsulation. This isn't exactly a big secret. Google "inheritance breaks encapsulation"."
Wrong. In a language such as C# you can have a member set as protected, private, or public. If it's private data hiding is retained such that it's hidden from subclasses, if it's protected it's a shared property between parent and subclass, if it's public it's not hidden to anything. Nothing here breaks the principle of encapsulation as levels of data hiding are provided to cover each eventuality. Either the data shouldn't be shared, it should only be shared with inherited classes where the shared member makes sense, or it should be shared with anyone.
Contrast this to Javascript where you can't have members shared only with inherited classes they have to be made public to everyone.
If you have a Mammal class with a brain property that shouldn't be public then with C# you could create a Human and Horse subclass that retain data hiding by calling it public - both are still meant to have a brain, it makes sense. With Javascript everyone has to access the brain, or your Human and Horse don't have a brain, data hiding is broken.
You can of course produce broken designs in class based OO languages if that's what you're referring to but that's not an inherent language fault like Javascript's failure to maintain encapsulation in the face of inheritance is.
"Well, what are they?"
Um, learn to read? I provided some examples.
"One of the greatest strengths of PHP is that it is incredibly simple to learn and use. What are these mysterious quirks that millions of amateurs are apparently willing to slog through learning before hacking out yet another home-grown CMS?"
That's exactly the point, just as with Javascript they don't slog through them, they're just not even aware of them and as a result they write wrong code, buggy code, vulnerable code. The same is not true of languages like Java and C#.
"More buggy that what?"
More buggy than an equivalently skilled developer would produce with better designed languages. There's a reason most security exploits on the internet nowadays hit PHP web applications and so many sites have Javascript faults and it's certainly not because PHP is more popular given that C# and Java are erm, more popular.
Still enough is enough, you're obviously not willing to learn enough about this topic to have a rational conversation instead quoting lines from books that are now nearly 20 years old from when OO was far less common and far less well understood and (in many cases) implemented. It's obvious you're out of your depth given that, not that your inability to understand why many things in Javascript's inherent design are bad didn't make it obvious enough already.
Have fun basking in your ignorance with your Javascript and PHP with all the other low skilled web hipsters.
"This statement isn't even coherent: "This is a relic of the fact that Javascript wants to be both OO and Prototype based". What other conclusion could I draw?"
That you don't know much about language paradigms? The problem is that the three pillars of OOP are inheritance, encapsulation, and polymorphism. In Javascript you can't do inheritance without sacrificing encapsulation which is a trait of it's prototype based approach and hence precisely why it's a farce to pretend it follows a genuinely OO paradigm. It clearly does not because it cannot fulfil the basic criteria of OO.
"Points 2 and 3 clearly shows that you don't understand the scoping rules. Once you actually learn the language it becomes clear that there are no issues to "work around". The rules are simple and clear. There are no inconsistencies. Though it looks like you want to introduce some..."
Of course there are inconsistencies, hence why you have to use a rather brutal hack to pass a variable value to a binding. Again you're just highlighting your lack of knowledge of other languages here, you say it's not possible, you say it can't be done, except every other language on the planet manages to handle scoping just fine, including other prototype based languages. I know what the scoping rules are, but to pretend there's justification as to why they have to be that way displays once more complete and utter ignorance of language design.
"Here's something fun: PHP perfectly fits your criteria for a "good, well designed language" as it "doesn't require you to take extra steps to 'learn the language' beyond the concepts necessary to use it at a base level"."
No it doesn't, you're just further demonstrating what very little knowledge you have of programming languages outside Javascript. PHP has a number of quirks that are a result of bad design that you have to learn to use it properly, just like Javascript. For example, with PHP, you have to be aware that it's ternary operator works in a completely backwards when chained, it's === operator compares value and type, except when it doesn't. Languages like Java and C# have none of these problems. The base language features of PHP neither work consistently nor in a logically sound manner (i.e. == isn't transitive). The same cannot be said of C# and Java. When I talk about base language I mean your standard features like logical operations, conditional operations and so forth without more advanced functionality like lambdas and such.
If you're not even aware of that then I can't really help you, you seem to know Javascript and nothing else so assume Javascript is the only way things can be done, which to anyone with even the slightest experience with other languages is obviously and demonstrably false.
You're one of those people whose only tool in their toolset is a plastic fisher price hammer, so you think the plastic fisher price hammer is the best thing ever invented and that every other tool must be exactly like this plastic hammer and that no other tool is possible.
Until you can discuss based on knowledge of languages other than Javascript I'm not quite sure what else can be said. The fact you believe PHP has no underlying quirks that are a result of bad language design and that must be learnt to use even the base language properly without introducing faults speaks volumes but given that you believe Javascript has no faults I'm not entirely surprised to hear that you also seem to believe PHP has no design flaws.
To answer your final question, well, I've already answered it, it's quite simple - not have poor design traits that result in inherently more buggy software at all skill levels. Javascript has all too many of those, and that's the problem.
Bless. Look at the amateur trying to pretend he knows what he's on about with cries of "learn the language".
Yeah, me and even the most experienced Javascript developers on the planet, obviously we all need to learn the language. Obviously the scoping rules and handling of captured variables make perfect sense, that's why they're the number one cause of bugs in Javascript yet largely a non-issue in just about every other language.
Let us bow down to your superiority as the only person who really actually understands Javascript.
Don't worry, maybe one day you'll get a proper job where you can use well designed non-toy languages and start to learn a bit more about good language design but yeah I guess in the meantime you can pretend it's just because no one else gets the language, only you do, because of course you're awesome.
But just in case you do wake up from your rose tinted slumber that shows a complete ignorance of language design and implementation of many other languages out there that simply do it better, then might I suggest you start by recognising that your entire post has missed the point? Hint: It doesn't matter if learning the language let's you work around these things, the fact I highlighted them demonstrates precisely that I do know the language, am aware of them, and hence can work around them, but that doesn't change the underlying point which people above have been trying to make to you - that these issues are the result of bad design and kludges. It doesn't matter if you can work around them, they just wouldn't be there in the first place if the language was well designed - yes there is a technical explanation as to why NaN works the way it does for example, but that doesn't make it a good part of the language.
A good, well designed language, doesn't require you to take extra steps to "learn the language" beyond the concepts necessary to use it at a base level, Javascript does (and so do languages like PHP) and that's exactly why it's kludgy. Compare and contrast to say, Java, F#, or C# and they far more often just work exactly as you'd expect - you don't need to go and learn a plethora of warts and quirks. Why? because they're far better designed and aren't kludgy. Which is kind of the point people have been making to you but you're apparently just not smart enough or educated enough about different languages, paradigms, and design issues to get.
Well no, not by definition, because by definition if something is no longer secret then it's no longer secret is it?
The law may well contradict that and that's okay but it's just one of those fine examples of how out of touch law can be with reality.
I fully get the classification procedure and the fact there's an official procedure for declassification.
I'm saying that if something has been declassified in effect (even if not in name) because it's been released widely and publicly that any attempts to continue to treat it as classified are merely time wasting bureaucratic nonsense.
There's literally no point wasting any time and tax payers money pretending that information that has been widely publicised by one of the more prominent media organisations in the world.
This is why I used the term non-thinking - the only people to whom it's a good idea to continue wasting time and money enforcing this sort of procedure on something that's classified only in name but not in practice are people who are frankly brain-dead drones who can't even wipe their own arse without a set of procedures. To everyone else it's a massive waste of time and money.
Is secret information still secret information if it's no longer secret?
Only in a mindless non-thinking bureaucracy could that ever be the case.
I just have a problem with people not knowing what they're on about redefining well established terms through ignorance and pretending they've invented something new.
It's like carrying a cat into the office one day and saying it's called a dog and then proclaiming you invented it and it's never been seen before.
Quite rightly you'd get a few funny looks.
I don't think you've understood my post though, you mention the desktop but I didn't mention the desktop at all. If you were mentioning the desktop in terms of real time computing then that's not what I was on about and still not what real time computing is. Real time computers are systems that have the lowest of latencies in response and can guarantee that, they may be used for example in regulating drug administration in a hospital where you can't simply have a few second spike as the OS decides to do something in the background because not regulating those levels to the closest millisecond can be the difference between life and death.
If you were referring to my comments on responsive design then again I think you've misunderstood the new definition of responsive design. The term responsive design as used by the hipsters refers to using CSS3 features and such to make a page adapt depending on the user's resolution and DPI. The reason I take issue with this is that designing a responsive website historically referred to using Javascript to limit server side callbacks, for example doing pre-validation on a form field client side and telling the user immediately that there's a problem without requiring a postback - that's what responsive design meant in the classic sense. The issue is that they've caused ambiguity because now when they say "Hey we need to build a responsive website" it's impossible to tell if they mean one that adapts to different display devices and changes it's layout to suit or whether they mean one that responds quickly to user feedback or if they just meant both. Of course, it's all also really just a natural evolution of resolution independent design at the end of the day, which is what we always used to call this sort of thing before it got more fancy with CSS3's new media tags et. al.
Things like high concurrency, maintainability, scalability and state management are as old as the web (well, older really) so are far from emerging concerns. It's as if there's a new generation of web developers that have appeared in the last 5 years who have managed to become web developers without having learnt anything whatsoever about the things that came before them and they're just repeating the mistakes everyone else that came before them made with their fancy new technologies that the people who came before them then have to come in and fix. All people like me ask of these people is can they not just learn a little bit about the history of web development so that they can expend their efforts on moving forward rather than continuously reinventing the wheel repeating and then solving problems that have already been made and solved previously and without creating contradictory terminology in the process?
FWIW I do do some consulting.
I have some reasons:
1) You say stop trying to use it like an OO language yet the language supports OO features badly. It wants to support them but then people say it has shit support, if a language has shit support for something such that people say don't use it then yes it's a shit kludgy language
2) If you don't prefix a previously unused variable it goes into the global scope. What. The. Fuck. Why in a code block like a function would you ever want a variable to become global by default? This is kludgy, it would've been better to only go global if you explicitly declare global.
3) It tries to simplify things but this often makes things harder. You have no option to pass by reference or value explicitly so when you try to do something like pass a loop variable as a parameter to a binding and want to explicitly pass by value it passes by reference and captures the variable retaining it long after it's gone out of scope naturally. You have to use the most god awful syntactically ugly kludgy hack of creating a new scope to force the variable to be copied by value.
4) Usage of new is so bad the expert advice is often just "don't use it". This is a relic of the fact that Javascript wants to be both OO and Prototype based and utterly fucking fails at the former.
5) Semi-colon use at line endings is optional, except when it's not. This causes all sorts of debate as to when you should and shouldn't use them and results in newbies having buggy code because of the utter confusion caused by what in most other languages is a pretty fucking simple rule - end your lines with a semi-colon. Again, the language trying to be smart causing more problems than it solves.
6) Javascript doesn't have real arrays, just objects. Except it's defenders keep telling us we shouldn't treat it as an OO language despite one of the most fundamental data structures in existence being implemented as an object.
7) parseInt's default radix handling is counter-intuitive and fucks people up because it parses for example numeric strings in a way people would least expect by default.
8) typeof NaN === 'number' is true, and NaN === NaN is false. Not a number is a number but Not a Number is not Not a Number. What. IsNaN is a required hack - a kludge you might say - implemented to solve the problems this can cause.
Need I go on?
Javascript is everywhere on the web, it's a necessity now and you can do some really awesome things with it, more so if you understand how to avoid it's quirks.
But despite it's prevalence one simply cannot argue that it's a "good" language, it's really not. It's probably the most warty language I've ever had the misfortune to deal with after PHP. People defending it (fanboys) initially pretend the problem doesn't exist, then when, as I have, you explain the issues they say "Well it's not a problem if you know what you're doing" but it is, you can look at the change history of any number of open source Javascript projects and you will find bugs that have been fixed that exist purely because of the warts despite the people introducing the bug being some of the most experienced Javascript developers on the planet. If there's an additional vector for bug introduction then eventually bugs will be introduced through it, and Javascript has plenty of those vectors.
So yeah it works, yeah it's what we're stuck with, yeah amazing things can, have and will continue to be done with it, but it's still not good. Which is kind of the point most people are making when they say exactly that.