Far and away the biggest problem with the background/foreground issues is COM and its apartment models. A large part of some of the core pieces of Visual Studio are (still) written in native code and are STA bound objects (mostly when they don't really need to be, but that's another discussion).
Converting off of STA in legacy code is extremely difficult due to the transitive nature of it as well as the fact you likely have very large and complex types which were never written to be thread-safe because the STA protected them from that (let's not talk about re-entrancy though :)).
It is getting better since managed code has MTA semantics by default, but even with async code all it takes is one person calling Wait on a Task on the UI thread...
A huge sync API surface that is publicly callable also doesn't help. Even if you want to make things async under the covers you generally can't since callers are expecting synchronous semantics and there is no (good) way to make work async, present a sync calling surface to callers, and not block the UI thread (if you say nested message pump, you lose :P)
There is, iirc, also a time limit between when an investigation begins and one an indictment is filed. The idea being to prevent the government from simply having someone under investigation in perpetuity. I suppose the ADAs COULD try and time the indictment against unrelated pop-culture events, but in my experience it seems so unlikely as to be mostly the stuff of movies. Delays more frequently where due to problems getting financial records or untangling complex webs of them, problems locating willing witnesses, problems with witness intimidation, etc..
As someone that served on a federal grand jury, no. Well, at least not vocally, I presume people internally weren't basing their votes on pop culture but saying something else out loud. Then again the strength of most cases that make it to the grand jury, from what I saw, are fairly strong, and the burden of proof is lower (since indictment != conviction). If the case is weak the ADA's wouldn't even bring it to us.
Yes, not to mention that it simply means people that don't fit their pedigree filter are available. I have met brilliant hackers from MIT/Berkeley/et al, I have also met average hackers from those schools, and brilliant hackers from other schools. My experience leads me to believe the correlation between brilliant hacker and school (if any) is positive, but not dominating. The again maybe that is just me hoping, not having come from their vaunted halls :)
have any links to the Connect issues in question? I am not doubting their existence, just trying to understand how they fell through the cracks. There are multiple levels of filters before they get to the product teams, mostly because of volume. I have seen people file Connect bugs against non-MS products, even complaining their own product crashes and it is Microsoft's fault (that one turned out to be a ref-counting issue in their code). I don't necessarily like the filters, but having seen it unfiltered I appreciate it, since otherwise we would have time for little else.
Would you wear a lapel camera that recorded your entire day and uploaded it in real time to the police? Why not? Something to hide? More seriously, my objection would be that assuming everyone is guilty or needs to be monitored is a weird state of governance. Crime exists, it always will regardless of level of monitoring. So the discussion is about what are the reasonable tradeoffs between privacy and crime prevention/solving. I think 24 hour surveillance is too far for the gain it may bring. As others have pointed out, the government also can have...interesting interpretations of who "the criminals" are (see infiltration of civil rights groups in the 60's by the FBI for example), and has shown, even recently, that their idea of oversight is really "theory only" and they don't appreciate actual oversight. Giving broad powers to such groups is a very bad idea.
Because one can buy success? Like Google+? Or a lot of things Microsoft has tried recently? I realize, all else being equal, a threat of a major investment by a deep pocketed company shouldn't be taken lightly, but the idea that Google can "throw a billion dollars" at a market segment and thus dominate seems like wishful thinking by management.
I'm sympathetic to this as I may know people who work at various DOD subsidiaries, and they are good people. That said, to deny there are no sociopathic power seekers in these organizations is just naive. Giving an absolute power that can so easily be abused to any organization is a terrible idea. Even if today they are lead by a metaphorical holy, righteous person, tommorow they may not be, and when such a change occurs it won't be announced like some cartoon villain holding a press conference declaring their evil plans for all to see. I agree that congress, at least certain members of it, those privy to this information, have no legitimate claim to ignorance and outrage (okay, maybe the former), but I see the bigger problem being a program like what is alleged is even allowed to be set up. They claim there is strict oversight/auditing of data, and while I have no doubts this is technically true, I highly doubt it is the story "on the ground", just based on my knowledge of human nature and large scale organizations.
It says can be audited. I suspect the number of times that has been done is vanishingly small, perhaps only on Snowden, after his revelations :) It smells to me like plausible deniability. Claim you have set up a system where things can be audited, don't ever answer how frequently it is done or what the penalty is for abuse of the system. Top secret and all. This kind of system really should freak people out. I imagine it would be a great blackmail info system if people start speaking against the govt or "causing problems". I can imagine public figures don't want to be publicly shamed for their online activities, gambling, porn, affairs, etc...
Best of the best that apply to Google. Or in other words, their hiring process is "Hire the best people that apply here", or, you know, the hiring policy of every company in the world. You could argue they uniquely attract smart people with some kind of high IQ gravity centered at the Googleplex, but that seems unlikely. Makes for good marketing copy though.
There is also some trickiness around when things get executed. If you return an IEnumerable<T> that is really a LINQ query, and the caller doesn't immediately enumerate it, they run the risk of getting exceptions when they do enumerate if you mutate the collection the query runs over. You can of course force its evaluation, but that also loses some of the benefits of the laziness. Bring in multi-threading and even if you properly synchronize collection access (and that is hard to do without custom collection types, since LINQ is like the honey badger w.r.t. synchronized access) you can still see the collection modified exceptions talked about above.
Well, I wouldn't say it should be expected during builds. In the past the build architecture was somewhat questionable, i.e. they ran builds synchronously on the UI thread, which works fine if your build takes like 50 ms :) I don't work on the project build team but I believe most languages now build off the UI thread, and any that have long sequences of activities they are doing on the UI thread should still be pumping to prevent UI lockup. That said, running your own pump in an app as complex as VS is...not something to be undertaken lightly, so it is possible their pumps are not correct or their 'in between pump' tasks are taking far longer than they thought/expected. If you can repro it even without repro steps I can give you some instructions on getting a perf trace I could take a look at, they generally point to the culprit pretty clearly.
Do you have specific examples? This is an area of interest for me. VS architecturally has a lot of things tied to the UI thread due to COM STA requirements (well, that and the fact that historically people created their STA objects on the UI thread, thus tying them to the UI thread).
Another possible cause can be extensions. Not that VS doesn't have its own problems of 'doing too much work on the UI thread', but there are TONS of callback points that third parties can hook into, and lots of times people do very ill-advised things on the UI thread, leading to poor responsiveness.
We monitor it actively (via PerfWatson[0], you should install it if you want your perf problems brought to the attention of Microsoft, it should have low overhead at runtime, only kicking in when the UI thread is already unresponsive), but of course with a product as large and complex as VS, and with said product being extensible, inevitably customers run into stuff we never see internally, so we rely on getting repros/data from them to understand what is going wrong.
True, but when it comes in handy it can be immensely so. I was looking at a customer crash dump at work the other day and the callstack shown by two different debuggers didn't make any sense, it was showing calls sequences the code clearly didn't make. Looking at the raw stack in memory and using the disassembly to help see the layout of the frames made it (relatively) easy to see there were a couple of calls in the sequence that both debuggers simply weren't showing. Once I had the real sequence and the dissassembly to see how the frames evolved and recompute call targets for earlier in the frames life it became a lot easier to see what was going wrong. If I hadn't been able to do that (and my ASM skills are definitely not strong) this would have been a No Repro (and hence no fix) bug for sure.
Yeah, there are generally two things keeping society in order. Ethical beliefs about right and wrong and fear of punishment from the powers that be for breaking the law. My concern with the NSA is that there is a culture of "the current laws are unduly stifling on our jobs, so us ignoring them is 'required'", coupled with management's belief in same and thus non-interest in prosecuting people that cross the line. Not to mention such prosecution would inevitably be public and thus the program exposed and the public seeing it is being abused. Taken together you have a perfect recipe for safeguards that exist in theory and are utterly ignored in reality, "for the greater good".
No, but do you imagine they would have discovered his name or have been aware if a strange accident had befallen him had he not put himself in the spotlight? To not imagine most of the character assassination occurring is related directly to the NSA seems odd, that is the kit of clandestine services worldwide. I saw an article with Booze saying he only made 122k a year, so basically appearing to try and make him appear to be an exaggerator or liar in something relatively inconsequential to the whole affair. Nice move, hopefully he has hard proof contradicting that, since otherwise people start questioning what else he exaggerated/lied about, which is precisely what they are angling for with publishing such unrelated bits of trivia.
Converting off of STA in legacy code is extremely difficult due to the transitive nature of it as well as the fact you likely have very large and complex types which were never written to be thread-safe because the STA protected them from that (let's not talk about re-entrancy though :)).
It is getting better since managed code has MTA semantics by default, but even with async code all it takes is one person calling Wait on a Task on the UI thread...
A huge sync API surface that is publicly callable also doesn't help. Even if you want to make things async under the covers you generally can't since callers are expecting synchronous semantics and there is no (good) way to make work async, present a sync calling surface to callers, and not block the UI thread (if you say nested message pump, you lose :P)