Ah, yeah, the good old 8051. I only know about it because I worked on some robotics projects in school, so my memories of that chip are probably fonder than your reality of having to maintain production code for them. Nowadays I think some programmers couldn't even imagine working with 128 or 256 bytes of run-time memory, and having to carefully allocate every single bit.
I'm glad to hear your company has gotten on board with those new-fangled source control thingies.:-) Please tell me you're not using CVS at least.
Keep pushing for unit testing if you can, although keep the approach low-key or your co-workers will just dig in their claws. Maybe see if you can discretely squeeze in some time to do some proof-of-concept demonstrations. Unit testing doesn't have to be complex or use a bunch of fancy frameworks, so it might be easier to sell the concept if they can look at some very simple C code (or whatever you use) and see how it works in practice. People get too caught up into making fancy frameworks, because programmers love writing systems, while occasionally forgetting that the point is not the system but the results.
E-mail authentication seems like a better solution than whitelisting in the long term. Whitelisting can kill off spam, but that's sort of like saying you can fix a broken arm by amputation. It's technically true, but removes a lot of useful functionality.
The big problem with e-mail spam is that the e-mail sender can be trivially forged. If we employed ubiquitous authentication systems that proved a specific domain was used, and blocked non-authenticated users (or at the very least, flag them with a big warning), it would go a long way to solving the spam problem. Moreover, if a particular domain is repeatedly being used by spammers or scammers, that can provide additional heuristic information to the filters.
Unfortunately, there are too many competing authenticating standards and (presumably) far too much legacy code that would be broken by moving to such a system. Given the ridiculous amounts of spamming and scamming going on by e-mail, it really seems like it would be worth the short-term pain to buckle down and select a single, robust solution, and block anything that doesn't use it.
The world just isn't the same when the SMTP protocol was invented. It's ridiculous, not to mention slightly worrisome, that the only way we can practically use e-mail is if the combined technical might of Google or some other large enterprise helps us to filter out 99% of the crap so we can view the 1% that isn't.
Heuristics could pretty easily determine if someone communicate only in English in their e-mails, and as such, any legitimate e-mails that contain large amounts of non-English words or characters should be viewed with greater suspicion. For those that routinely communicate in more than one language and use non-ascii sets, the heuristic should be able to account for that fact.
These sorts of rules are always fuzzy by nature. Obviously, whether an e-mail is determined to be legitimate or not is due to many different factors. This could simply be one of those contributing factors.
C++ is the programming language equivalent of a powerful but touchy sports car that's almost guaranteed to crash and burn in the hands of novice drivers, but can perform beautifully in the hands of an expert. C is that same car with the mirrors, safety belts, and airbags removed.
How about we make a list of the technologies that have actually impacted us in a real way over... hmm, let's say the past ten or fifteen years? I assume that everyone will have slightly different items, because we all work in different areas. I'm a game developer and use C++, so my perspective will reflect that. Listed in no particular order of importance:
1) C++ 11/14 - It's transformed the language in a fairly dramatic way, making it much safer and convenient to use, while leaving legacy code completely compatible. Modern C++ code feels a lot more like C# at times, just a whole lot uglier. 2) Mobile Platforms - Mobile platforms (smartphones and tablets) as a rising contender has caused a fundamental shift in the balance of power among platforms. 3) Online Gaming and Integration - MMOs and other games are taking advantage of the ubiquitous connectivity to the internet most of us now enjoy. 4) Distributed Version Control Systems - Modern source control systems such as Git and Mercurial (my favorite) are a boon not only to large distributed projects, but even for smaller developers. Traditional development house, for the most part, still use Perforce, though, which works much better for asset management. 5) Online distribution - The ability to quickly and easily download and update games from vendors like Steam, Gog, and Origin are opening up the market to indie and traditional developers alike, and will eventually kill physical distribution channels. 6) Online resources - Better search pioneered by Google teams up with incredibly knowledge-rich sites like StackExchange.com. The result is that damn near any question you have is likely to have already been asked and answered. If not, ask away, and you have a good chance of getting some real help. 7) GPU programming - More and more visual programming is being off-loaded to the GPU, and those have developed into full-blown programming languages of their own. 8) Parallel programming - With the advent of ubiquitous multi-core / multi-threaded processors in the past decade, game developers had to start getting serious about multi-threaded programming, making an already demanding job even tougher.
That's about all I can think of offhand that's really changed over the last fifteen years. Libraries, frameworks, and APIs are not some new phenomenon. They've been around since I started professionally programming, so it's ridiculous to include those. You might as well add "source code", "compilers/linkers", and "editors" to the list if you're going there.
It's pretty obvious this is written through the lens of a javascript-focused web programmer. Seriously, libraries are a hot new trend? That's hilarious stuff. Read each item in this list as "From the viewpoint of a Javascript/web developer...", and it seems to make a bit more sense.
It's pretty clear he only has a vague notion of game development either (my profession), and gets some basic facts wrong. He calls Unity a library (it's a game engine, better categorized as a framework). In a different article, he claims that game frameworks are in, while native development is out. The first part is true, but the second part certainly is not. C++ is still used almost exclusively for large-scale AAA game development. Unless by "native development" he meant "roll your own game engine", in which case he's using the wrong terminology.
As a society, we make value judgments all the time about what sort of behaviors should be allowed or prohibited when engaging in commerce. Most of them are based on nothing more than a simple application of the golden rule, or other basic tenants of morality that most societies can agree upon: Don't lie. Don't steal. Don't cheat. Etc, etc.
I wish you luck in trying to argue that, from a moral perspective, two corporations should have the right to secretly negotiate in order to suppress their employee salaries and maximize their profits. Don't lie. Don't cheat. Seems pretty straightforward to me.
At home, on the screen, you simply and plainly get the better experience.
From a purely logical or intellectual viewpoint, you're absolutely correct. But watching sports isn't an intellectual exercise, and I don't mean that in a disparaging way.
Have you ever been to a live concert? A magic show? A broadway musical or play? How about a technical conference or lecture where you listen to someone really interesting speaking? There's nothing at those events that, objectively speaking, couldn't be better delivered to your home entertainment system in the comfort and safety in your own home.
Human beings are social creatures, and enjoy experiencing interesting and entertaining events while in the company of others. For a sports event, sharing the thrill of possible victory or defeat with thousands of other fans around you is also about sharing in a certain camaraderie. Unless you're a fan yourself and already enjoy the game, or if you really hate crowds in general, it's probably hard to understand the appeal.
I can strike up a friendly conversation with anyone wearing my home team colors and feel pretty confident that we have something in common to talk about. When my team comes back from near-certain defeat and wins the game in overtime, I'm in my seat, shouting and cheering, and giving high-fives to other like-minded fans around me whether I know them or not. The roar of the crowd is a visceral experience, adding to the excitement and helping to create an experience that's very different than watching the game from home. It feels more like you're a bit closer to participating in the game itself, because you know your home team can hear you cheering for them - not individually, of course, but certainly collectively.
Football season is almost here. This 12 is ready. Go Hawks!
I'm pretty sure the reason you were modded as flamebait is that you appear to be rather sympathetic to two multi-billion dollar corporations that were illegally conspiring to suppress the true market value of the wages of their highly skilled employees. You also touched a particularly sensitive nerve by justifying the use of outsourcing, something bound to be pretty unpopular on this site, so it's not too surprising. I do agree with some of the points you made. But it's the last paragraph that's the killer.
The problem in USA is not that Google and Apple had agreements not to hire from each other...
It doesn't matter what excuse you provide after that. That's the topic at hand, and that's what their punishment is all about. I agree that there are too many government rules, taxes, regulations, litigation costs. But you can't use that to justify what these companies did. It was wrong, plain and simple, as well as being illegal. These are not companies that are desperately trying to stay profitable - one could understand if not condone the actions if they were unable to turn a profit due to skyrocketing labor costs. This is just trying to maximize profits at the expense of their workers - nothing more than that.
Despite my personal disagreement with your position, your point was stated clearly, without inflammatory language or personal attacks. Unfortunately, -1 Flamebait all too often means "I vehemently disagree with you and wish to show my displeasure / suppress your viewpoint". It's petty and narrow-minded to mod someone down just because you disagree with someone. Goodness knows we can't actually have people disagreeing about something more substantial than one's personal choice of code editor.
I'd have a bit more sympathy for the gamer who filed this suit if he wasn't trying to use this as his personal lottery ticket. He's apparently seeking damages of 5 million dollars. I mean, people get screwed over by large companies all the time, in real ways, and for non-trivial amounts of money, or even injured because of real negligence. The legal system is meant for them. Was this gamer so traumatized over a lower resolution in a videogame that he he should never have to work again in his life?
One the one hand, I despise the false advertising and marketing double-speak. "Temporal reprojection"? Pfft, my ass. It's a home-grown interlacing solution, and they damn well knew that you can't call it true 1080p resolution. When they say it was supposed to provide "subjectively similar" results, what they meant was "we're actually not native 1080p, but we hope you don't notice".
But five million dollars? Really?
The ability to sue a large corporation for any amount of money at no cost to you, with simply the hopes of striking it rich... sounds nice, right? And it's arguably necessary to ensure the poor have access to justice. Keep in mind that we all end up paying a price for abuse of that system. Do you think a company simply eats the cost of their army of lawyers and the results of these lawsuits? Any costs are passed on to consumers, or they come out of investors dividends - you know, stocks, mutual funds, where ordinary people have their money too, not just fat cats. What about the social effect of these massive lawsuits? Nowadays, you never hear a company admit fault unless they're already in the middle of a PR disaster. To do so would be admitting liability, and that opens them up to lawsuits. Medical malpractice insurance accounts for a massive percentage of health care costs. Why would we expect it to affect other industries less?
I wish we didn't have to rely on someone using the legal system in the hopes of striking it rich to seriously effect change, but I'm not naive enough to think that filing a complaint about false advertising would go anywhere. I'm pretty damn conflicted about this one. Honestly, I'm really not rooting for anyone here.
Peiople tolerate this when they are not otherwise suffering Materially. Arab Spring didn't get triggered when the general population is well fed, they triggered when people have problems living on at the conditions at the time (because they are broke?)
Oh, I don't know if that's universally true. Consider the American revolution. The US colonies were, by all accounts, reasonably well off under British rule, and many who agitated for revolution arguably had the most to lose, being the most prominent and wealthy of the citizens.
Granted, you could argue that desperately poor people tend to have little to lose, and perhaps are more likely to revolt. But it's also true that unrest is often fomented by the more idealistic tendencies of the well-educated. That would explain Mao's cultural revolution, wherein they eradicated many of their own most educated citizens in an attempt to purge the "bourgeoisie" of their society.
More than likely, the majority of people simply don't really see a way to change the system, and simply duck their heads down and try to get through life as best they can. And so, the oppression continue, with old men clinging to their power over the masses, trying to crush resistance wherever it emerges, often via technologies that they don't understand in the slightest. So, they fall back to their old patterns - ban, censor, and punish. No big surprises here.
Also, I found this quote in the article particularly entertaining, in a sad sort of way:
Following Thursday's announcement, Tencent, the Chinese Internet giant behind WeChat, said it supported the new regulations.
"We have conducted extensive research, and found that the regulations mainly intend to stop rumors and harmful information from spreading on the Internet," the company said in an online posting.
So, the company who's product and services are being censored fully support the government's decisions? What a shocker.
They managed to squander any and all trust they might have had
Anyone who "trusts" any large corporation is foolish at best, if you're describing the moral sense of the word. The only thing you can "trust" is for a corporation to do what's best for its own survival and bottom line. For the most part, especially in today's information-rich world, most companies - at least those who don't have government-sanctioned monopolies like many ISPs and cable providers - understand that pissing off large numbers of customers is pretty bad for business.
You can generally trust a company to do what's in its own best interest. In well run companies, that typically aligns reasonably well with customer interests, but only because unsatisfied customers tend to look for alternative products or vendors. I trust Amazon to keep my data secure in its datacenters, both at a technical level (they have lots of experience) and at a business level (a breach or massive data loss would harm their reputation). I also use Microsoft products on a daily basis, both because they're good products and because their operating systems are a huge percentage of my target market. I trust that they have very strong incentives to produce stable and secure products, which again aligns with my needs. They have no desire to become any less relevant in a fast-moving world that they're already struggling to keep pace with.
When most people talk about trust and corporations, I think it's generally a different sort of trust than, for example, how you'd trust your wife, family, or friends. At least, it certainly is for me. For businesses, trusting Microsoft might simply be the belief that Microsoft will continue to act in a relatively predictable manner, and so they can be relied on to provide the same sort of services and level of quality, whatever you perceive that to be, as they had in the past. You're simply trusting in its inherent nature. So, if you *understand* its nature, you can then better understand what you should and shouldn't allow that company to do for you - or to you.
That may sound overly cynical or somehow like an anti-corporate or anti-capitalist rant, but that's not where I'm coming from. Let's face it, without large corporations, we wouldn't have access to a lot of our most impressive products and technology. I just think it's important to understand and accept something's true nature in order to effectively make use of it, and to protect ourselves when our interests *don't* align with it.
I don't think the general public will happily trust a computer driver that fails spectacularly in edge cases. Look at the outcry over some edge-case computer-related brake malfunctions a few years ago. The computer can't just be better than the average driver, partly because everyone believes themselves to be better than the average driver*. It has to be better than nearly all drivers in most imaginable circumstances. People tend to get most nervous about things that are completely out of their control. I think perhaps that's why flying is more nerve-wracking to many people (beyond the obvious reasons), even though flying is statistically many times safer than driving.
* Honestly, I'm no exception. I'll bet everyone reading this also nods and says to themselves "well, yeah, but I AM actually a better-than-average driver."
If you're programming in Perl, Python, SmallTalk, or some other high level or managed or interpreted language, then performance probably isn't your overriding concern. That's fine. There's a reason why we have many different programming languages.
As it turns out, in the context of a high-performance, real-time simulation, allocation is actually pretty expensive. Nearly every modern AAA game or game engine does, in fact, actively manage and optimize their memory allocations, either at the allocator or object level. The global system allocator is a general purpose allocator that can't afford to make intelligent tradeoffs or specific optimizations that you can do with more domain knowledge.
There's a reason C++ is the go-to language of the videogame industry. It's because (among many other reasons) in that language we can, in fact, create our own allocators and optimize them for our particular needs. For instance, in the code I'm working on, each major subsystem of the engine has it's own allocator which uses pools of pre-allocated blocks for improved small-allocation efficiency. Splitting up the allocations by subsystem helps in tracking memory use as well as reducing contention on a global allocator lock, since games have to be extremely thread-efficient as well with all the real-time demands placed on them.
This would be ridiculous overkill for most applications, which are far less demanding of the hardware. But don't forget that context is important before universally declaring that a particular operation is "very cheap".
And as soon as you work for Facebook or Amazon, you will never have any use for 'bit bashing' again. It is interesting as a mental exercise... but has bottom line nothing to do with serving web pages to 100,000,000 concurrent users accessing the same DB of products and hosting all the infra structure on 4 IBM mainframes that run the web front ends on 10,000 virtualized linux boxes running slackware linux (2002) and IBM Java 1.3.... Sorry, how good are you actually in classic greek? It would do wonders to your comprehension of logic... but well, you already do comprehend... so, you agree with me: it is pointless. So are you examples, that only work straight forward in assembler. Lol, reverse the bit order of a word in C? Seriously?
Actually, it's exactly the opposite. Did you know that if a Facebook programmer can improve their back-end code efficiency by just a few percentage points inside the data centers, the company saves millions of dollars annually? It's why they wrote a PHP to C++ converter as they began to have scaling and performance issues. Likewise, do you not think that among Amazon's datacenters, they wouldn't be interested in finding a way to reduce memory consumption and CPU overhead of the hundreds of thousands of running instances that control all their internal operations?
You're probably thinking in terms of traditional desktop or web applications, where CPU and memory resources seem practically limitless. Here are a few areas where efficiency still counts for a lot: cloud/data-center development, embedded systems ("i.e. the internet of things"), smartphones, videogames, CPU-demanding desktop applications. Interested yet? Notice that there's still a lot of cutting edge stuff in there? It turns out that when you multiply a program by a factor of hundreds, thousands, or even hundreds of thousands inside a data center, small gains in efficiency turn into huge power savings, and that means big money savings. Likewise, there are some applications where you can simply never be too fast or efficiently. Simulations are one example. Videogames are another.
Languages like Objective-C, C and C++ still have a place because high-performance computing is still important both in small and constrained environments, OS level systems programming, and large-scale datacenter deployments and applications. And bit manipulation and other low-level operations are a real part of those still very relevant languages.
You might laugh at the notion of reversing the bit order of a word in C, but it's no joke that in my job (videogame programming), I still occasionally need to know how to do bitwise operations - not often, but occasionally. Just because you haven't used a skill in your own particular field of programming doesn't necessarily mean it's not in demand outside your particular domain.
It's not so much about the results as the methodology. Assange seemed (at least in the Manning case) to advocate a "publish it all and damn the consequences" approach, not really considering that the consequences could involve risk to real lives. The fact that no one has apparently been harmed as a result doesn't necessarily mean the potential danger wasn't real.
In contrast, one of the things I admire about Snowden is his method of responsible disclosure. He's been, by all accounts, quite careful to release documents that clearly demonstrate the government's infringements on our liberties and constitutional rights, but has largely limited the scope to that topic. He undoubtedly had access to many other sensitive government documents that could, but has reviewed the documents before release in order to ensure that as little harm as possible is done to actual US security interests.
It's admittedly a pretty fine line, but I think it's worth noting a distinction there. I'm sure plenty will disagree with me.
I briefly read the headline as: Snowden is Not Alone. US Seeks Another Leaker. As in: From the US Citizens: You're not alone, Snowden! We're with you! And we're looking for other brave souls to come forward and keep us informed about what the NSA is really doing! Then I reread the headline correctly, and realized I far preferred my earlier interpretation.
I'm not quite as bullish on Asange. When he revealed the war-related documents he did without sanitizing them, he put the lives of many Iraqi and Afgani citizens who worked with our forces at risk, and didn't appear to give a shit if they lived or died. If they worked with the evil American empire, they apparently deserved whatever fate they get at the hands of folks who have a history of doing really awful things to their fellow human beings. That alone makes me pretty uncomfortable, regardless of whatever positive things he's done or established.
Snowden, on the other hand, is a patriot of the highest order, in my opinion. He made the ultimate conscientious decision after seeing an unconscionable overreach of government authority, throwing absolutely everything away in an effort to bring this to light. If you hear him explain his decision, you get a sense that he doesn't have an ax to grind, nor is he some sort of glory-seeker, but was simply motivated to do the right thing for the right reasons. He got nowhere in a sincere effort to work through legitimate channels before ultimately resorting to leaks. The intransigence of the government in admitting any wrongdoing is, I feel, evidence enough that his internal efforts could never have been fruitful.
There are a few things he released that I actually wish he hadn't. For instance, I think the details on technologies and methods used for targeted surveillance, for instance, should have remained secret. If you think about it, that's *precisely* what the NSA should be doing: precision strikes, rather than carpet bombing, so to speak. I'm not opposed to their mission of finding legitimate threats to US citizens and interests, but don't put the entire damned country under mass surveillance to do so. It defeats the entire purpose if we have to turn into a police state to remain secure. But overall, he's done a pretty good job of releasing only relevant documents that highlight abuses, since he likely has information that, if released, would actually harm our national security or legitimately put people at risk.
Ultimately, I feel the country is in better shape thanks to Snowden. What we learned needed to be known, and thanks to him and the price he paid (and is paying), we can start trying to address the problem. I wish he would get pardoned, but I doubt that will happen.
That's actually a very good point. The S3 backup is completely automated which means, of course, that everything the malware would need to screw with your S3 (or other) account is right there for the taking - the keys have to be local and accessible. Granted, we haven't heard any confirmation of this malware having those sorts of capabilities, but we've seen incredibly sophisticated banking trojans out in the wild that do things that are far more sophisticated.
Damn. Well, all the more reason to stay patched up, and to avoid exposing any more of an attack surface to the internet than you absolutely need to. Fortunately, the way my local network is set up, it's pretty much impossible for a single trojan to access all of the redundant copies of my critical files, since the multiple workstations all sync to a Mercurial repository on the NAS, and none of those workstations share their drives, providing some degree of protection from potential malware on the other machines in the network. I guess you can never really have too many backups.
A NAS device is not a toaster. It's a file server running a lightweight but fully-featured operating system. You don't need to be a professional network administrator, but you do need to be careful enough to at least check in regularly for updates. One presumes such hardware was purchased because you had valuable data you wished to manage or protect. Honestly, a NAS is really not a purchase for "normal" people. Power-users and up, I'd say, are the minimum personnel requirements.
Even so, Synology machines are not hard to patch. They download OS updates automatically by default. All you have to do is log in via the administration page once in a while and click the "update" button, since it pops up right on the page after it sees you have an update to install. And every update has a link right next to it that points to a web page detailing exactly what changed or what was fixed. I'd suppose the reason there's no "auto-update" is because an update requires a 5-10 minute patch and reboot cycle, and you generally don't want your file server automatically rebooting at it's own convenience.
I'm presuming (since information is a bit scarce) that users either failed to patch their machines for six months or longer due to neglect, or they made a deliberate choice not to do so for some reason, yet kept their internet-facing services wide open (note that these are not installed or enabled by default). Unfortunately, that's pretty much a guaranteed recipe for an attack of this sort. It's a crappy way to have to learn a lesson.
My Synology NAS is my home-based business' file server, a local machine backup (for my development machine and my digital audio workstation), and a media server for my ripped DVDs and Blurays, although this third function is just a nice bonus for me. Synology NAS devices have a very handy cloud backup application as well, which I use to backup all my most critical files to Amazon S3 services. I hope most people made use of this, because if Cryptolocker has taught us anything, it's that you absolutely need offsite backups that are NOT connected to your network.
I bought it specifically because it makes it easy to set up a multi-tiered backup strategy like that - something that takes on new importance when you spend a few years writing code on your own dime. As a file server, it's fantastic for small operations. I had a drive begin to fail last year, and so had a chance to test out the hot-swapping / RAID rebuilding feature. Worked like a charm - was super simple and zero down-time.
Personally, I've never once considered opening up my NAS to the outside internet. That always seemed crazy risky to me - after all, a single software mistake, a buffer overrun in a protocol stack of some sort, and *poof*, there's direct access to your file server and all it's critical data. I guess sometimes being paranoid pays off, but it gives me no pleasure to say so.
Internet of things, huh? I think I'll wait a generation or two until they hammer out the worst of the security issues. One of the latest missteps was caused by a smart bulb that embedded the encryption key in the firmware. Oops. Yeah, no one would think to look there, right? There's likely going to be an entire generation of devices that will have the same sort of flaws that early wireless routers had - essentially, the result of average programmers (i.e. non-cryptographic experts) trying to invent cryptographic solutions.
If you have a gmail account google could bomb your computer with tons of child porn the next time you check your email. They could also serve up search results from their search engine with hidden images that your browser will cache. If you've got google drive or whatever its called then quite clearly you are fucked if google wants you to be fucked.
You're playing the "Could this theoretically happen?" game again. Yes, that's a possibility. One has to say that and remain intellectually honest. In the real world, not some Hollywood thriller, what are the odds that Google, or some Google employee, is actually going to target an individual in such a manner, electronically forging content and framing him? Or more to the point, what are the odds of it happening in any one individual case? Exceedingly low, in my opinion. The odds go up dramatically if you figure the possibility of it *every* happening, but you can't really work that way. It's like saying that the odds of winning the lottery are very high because someone, somewhere, at some time is virtually guaranteed to win it.
As such, we treat evidence from Google *or any other single source* as potentially suspect in line with the odds of that information being compromised in that instance. Just like a good academic paper will cite from multiple sources, so too should a criminal conviction require corroboration of evidence from multiple sources. The great thing is that mathematically, if we consider the odds of a Google employee or Google as a company working to ruin an individual as "low", and the probability of the police planting evidence at the scene of the crime as "low", the odds of both of those occurring in a single case is now *exceedingly low*.
To answer your question directly, if the data all came from Google or could be manipulated directly in some fashion by Google, then it's essentially a single source, and a highly malleable source at that (electronic data). It would depend on the details of the case, of course, but my gut answer is that I'd really want to see some external corroboration before I'd feel comfortable with a conviction. And, in line with where I think you're leading with this, yes, I agree that it's dangerous for one company to control too much of the Internet or the data in our personal lives for exactly the reasons you give.
I learned quite a bit about Nadella from his e-mail which notified around eighteen thousand employees of impending layoffs and contained the word "synergies" no less than three times. Even his buzzwords are stale and unimaginative. This man either has no real vision, or he's very bad at communicating a clear vision. The article was correct in giving him a very bad grade in communication.
The one-platform tech base strategy actually seems sound, though, and in truth, is how they should have been pushing Windows 8 - not as a touch-first OS like we got, but one that's touch-capable, able to integrate seamlessly with other small form factor touch-focused Microsoft devices by using a unified API (write once, deploy everywhere). There's a lot of legacy products out there that people will still depend on for decades to come, and businesses are made nervous when the creator of the OS on which they depend veers off in a new direction, seemingly abandoning the current platform on which you rely.
It's a bit ironic to me that in trying to aim for the future, Microsoft is taking for granted and ultimately risking the core audience on which they've had a solid lock for the past twenty years. We'll see if Nadella manages to remember that while the desktop is no longer the face of new technology and is dwindling in importance, it's also a platform which is not likely to disappear as a significant market anytime in the near future. Rather than using that platform as a bully-pulpit to push it's other platforms, Microsoft needs to make it's other platforms compelling and attractive in their own right, and then demonstrate to businesses the value of a simple cross-platform deployment strategy, all while leaving it's "legacy" desktop platform in place in order to support more heavyweight computing tasks that individuals and business will still inevitably need.
The threshold is "beyond a reasonable doubt", which means that we have to weight the possibility of a conspiracy to fake evidence by some random employee at Google and police who found evidence at his house, versus the probability that this person was guilty of a crime - one he was convicted of previously, incidentally
If there's a Google employee or outside hacker with a wish to see this person go back to jail does not imply there has to be a conspiracy. That the person is formerly convicted would, I believe, make it more likely that the person is framed, not less. There are enough people who think anything less than life sentence is too mild, and some of those are more than willing to "do what it takes".
Well, if the Google evidence was the sole evidence used to try to convict someone, I'd hope that the accused would walk free. One would hope that a case wouldn't depend on a single piece of ANY evidence, because that brings up the obvious reasonable doubt. If the Google evidence is used in conjunction with evidence also found at a local residence by law enforcement, that obviously makes for a much stronger case.
I don't think it's unreasonable to apply Occam's razor to these scenarios. It's perhaps entertaining to imagine all sorts of crazy conspiracy theories that *might* occur, but the reality is that these sorts of things are undoubtedly *extremely unlikely* to actually occur. If we dismissed every case because of improbable scenarios that could theoretically punch holes in a case, we'd never convict anyone.
We have to draw a line somewhere so that innocent people wrongly accused are protected, yet standards aren't so impossible that we can never actually convict anyone who has actually committed a crime.
Because, as an occasional server admin, I'm perfectly aware that it's easy to change the logs, timestamps, and permissions. Do you not know what a computer is? It's a tool for manipulating data. This is not reliable forensic evidence, it's something that anyone with fairly modest skills could fake up in fifteen minutes.
Sure, but it's no different than most other physical evidence, in that it's dependent upon the trustworthiness of the person presenting the information. That's why there are strict procedures dealing with evidence. It sets up a chain of trust which is used to gauge the validity of the evidence. You're making the mistake of trying to apply black and white rules in a matter that is, by it's very nature a very grey area.
Note that a conviction of a crime doesn't require "100% proof", because there's no such thing in this world. In theory, pretty much all evidence could be tampered with. The threshold is "beyond a reasonable doubt", which means that we have to weight the possibility of a conspiracy to fake evidence by some random employee at Google and police who found evidence at his house, versus the probability that this person was guilty of a crime - one he was convicted of previously, incidentally. That's what a jury of his peers will have to decide.
Ah, yeah, the good old 8051. I only know about it because I worked on some robotics projects in school, so my memories of that chip are probably fonder than your reality of having to maintain production code for them. Nowadays I think some programmers couldn't even imagine working with 128 or 256 bytes of run-time memory, and having to carefully allocate every single bit.
I'm glad to hear your company has gotten on board with those new-fangled source control thingies. :-) Please tell me you're not using CVS at least.
Keep pushing for unit testing if you can, although keep the approach low-key or your co-workers will just dig in their claws. Maybe see if you can discretely squeeze in some time to do some proof-of-concept demonstrations. Unit testing doesn't have to be complex or use a bunch of fancy frameworks, so it might be easier to sell the concept if they can look at some very simple C code (or whatever you use) and see how it works in practice. People get too caught up into making fancy frameworks, because programmers love writing systems, while occasionally forgetting that the point is not the system but the results.
Interesting list, thanks!
E-mail authentication seems like a better solution than whitelisting in the long term. Whitelisting can kill off spam, but that's sort of like saying you can fix a broken arm by amputation. It's technically true, but removes a lot of useful functionality.
The big problem with e-mail spam is that the e-mail sender can be trivially forged. If we employed ubiquitous authentication systems that proved a specific domain was used, and blocked non-authenticated users (or at the very least, flag them with a big warning), it would go a long way to solving the spam problem. Moreover, if a particular domain is repeatedly being used by spammers or scammers, that can provide additional heuristic information to the filters.
Unfortunately, there are too many competing authenticating standards and (presumably) far too much legacy code that would be broken by moving to such a system. Given the ridiculous amounts of spamming and scamming going on by e-mail, it really seems like it would be worth the short-term pain to buckle down and select a single, robust solution, and block anything that doesn't use it.
The world just isn't the same when the SMTP protocol was invented. It's ridiculous, not to mention slightly worrisome, that the only way we can practically use e-mail is if the combined technical might of Google or some other large enterprise helps us to filter out 99% of the crap so we can view the 1% that isn't.
Heuristics could pretty easily determine if someone communicate only in English in their e-mails, and as such, any legitimate e-mails that contain large amounts of non-English words or characters should be viewed with greater suspicion. For those that routinely communicate in more than one language and use non-ascii sets, the heuristic should be able to account for that fact.
These sorts of rules are always fuzzy by nature. Obviously, whether an e-mail is determined to be legitimate or not is due to many different factors. This could simply be one of those contributing factors.
C++ is the programming language equivalent of a powerful but touchy sports car that's almost guaranteed to crash and burn in the hands of novice drivers, but can perform beautifully in the hands of an expert. C is that same car with the mirrors, safety belts, and airbags removed.
How about we make a list of the technologies that have actually impacted us in a real way over... hmm, let's say the past ten or fifteen years? I assume that everyone will have slightly different items, because we all work in different areas. I'm a game developer and use C++, so my perspective will reflect that. Listed in no particular order of importance:
1) C++ 11/14 - It's transformed the language in a fairly dramatic way, making it much safer and convenient to use, while leaving legacy code completely compatible. Modern C++ code feels a lot more like C# at times, just a whole lot uglier.
2) Mobile Platforms - Mobile platforms (smartphones and tablets) as a rising contender has caused a fundamental shift in the balance of power among platforms.
3) Online Gaming and Integration - MMOs and other games are taking advantage of the ubiquitous connectivity to the internet most of us now enjoy.
4) Distributed Version Control Systems - Modern source control systems such as Git and Mercurial (my favorite) are a boon not only to large distributed projects, but even for smaller developers. Traditional development house, for the most part, still use Perforce, though, which works much better for asset management.
5) Online distribution - The ability to quickly and easily download and update games from vendors like Steam, Gog, and Origin are opening up the market to indie and traditional developers alike, and will eventually kill physical distribution channels.
6) Online resources - Better search pioneered by Google teams up with incredibly knowledge-rich sites like StackExchange.com. The result is that damn near any question you have is likely to have already been asked and answered. If not, ask away, and you have a good chance of getting some real help.
7) GPU programming - More and more visual programming is being off-loaded to the GPU, and those have developed into full-blown programming languages of their own.
8) Parallel programming - With the advent of ubiquitous multi-core / multi-threaded processors in the past decade, game developers had to start getting serious about multi-threaded programming, making an already demanding job even tougher.
That's about all I can think of offhand that's really changed over the last fifteen years. Libraries, frameworks, and APIs are not some new phenomenon. They've been around since I started professionally programming, so it's ridiculous to include those. You might as well add "source code", "compilers/linkers", and "editors" to the list if you're going there.
What about in other professions?
It's pretty obvious this is written through the lens of a javascript-focused web programmer. Seriously, libraries are a hot new trend? That's hilarious stuff. Read each item in this list as "From the viewpoint of a Javascript/web developer...", and it seems to make a bit more sense.
It's pretty clear he only has a vague notion of game development either (my profession), and gets some basic facts wrong. He calls Unity a library (it's a game engine, better categorized as a framework). In a different article, he claims that game frameworks are in, while native development is out. The first part is true, but the second part certainly is not. C++ is still used almost exclusively for large-scale AAA game development. Unless by "native development" he meant "roll your own game engine", in which case he's using the wrong terminology.
As a society, we make value judgments all the time about what sort of behaviors should be allowed or prohibited when engaging in commerce. Most of them are based on nothing more than a simple application of the golden rule, or other basic tenants of morality that most societies can agree upon: Don't lie. Don't steal. Don't cheat. Etc, etc.
I wish you luck in trying to argue that, from a moral perspective, two corporations should have the right to secretly negotiate in order to suppress their employee salaries and maximize their profits. Don't lie. Don't cheat. Seems pretty straightforward to me.
At home, on the screen, you simply and plainly get the better experience.
From a purely logical or intellectual viewpoint, you're absolutely correct. But watching sports isn't an intellectual exercise, and I don't mean that in a disparaging way.
Have you ever been to a live concert? A magic show? A broadway musical or play? How about a technical conference or lecture where you listen to someone really interesting speaking? There's nothing at those events that, objectively speaking, couldn't be better delivered to your home entertainment system in the comfort and safety in your own home.
Human beings are social creatures, and enjoy experiencing interesting and entertaining events while in the company of others. For a sports event, sharing the thrill of possible victory or defeat with thousands of other fans around you is also about sharing in a certain camaraderie. Unless you're a fan yourself and already enjoy the game, or if you really hate crowds in general, it's probably hard to understand the appeal.
I can strike up a friendly conversation with anyone wearing my home team colors and feel pretty confident that we have something in common to talk about. When my team comes back from near-certain defeat and wins the game in overtime, I'm in my seat, shouting and cheering, and giving high-fives to other like-minded fans around me whether I know them or not. The roar of the crowd is a visceral experience, adding to the excitement and helping to create an experience that's very different than watching the game from home. It feels more like you're a bit closer to participating in the game itself, because you know your home team can hear you cheering for them - not individually, of course, but certainly collectively.
Football season is almost here. This 12 is ready. Go Hawks!
I'm pretty sure the reason you were modded as flamebait is that you appear to be rather sympathetic to two multi-billion dollar corporations that were illegally conspiring to suppress the true market value of the wages of their highly skilled employees. You also touched a particularly sensitive nerve by justifying the use of outsourcing, something bound to be pretty unpopular on this site, so it's not too surprising. I do agree with some of the points you made. But it's the last paragraph that's the killer.
The problem in USA is not that Google and Apple had agreements not to hire from each other...
It doesn't matter what excuse you provide after that. That's the topic at hand, and that's what their punishment is all about. I agree that there are too many government rules, taxes, regulations, litigation costs. But you can't use that to justify what these companies did. It was wrong, plain and simple, as well as being illegal. These are not companies that are desperately trying to stay profitable - one could understand if not condone the actions if they were unable to turn a profit due to skyrocketing labor costs. This is just trying to maximize profits at the expense of their workers - nothing more than that.
Despite my personal disagreement with your position, your point was stated clearly, without inflammatory language or personal attacks. Unfortunately, -1 Flamebait all too often means "I vehemently disagree with you and wish to show my displeasure / suppress your viewpoint". It's petty and narrow-minded to mod someone down just because you disagree with someone. Goodness knows we can't actually have people disagreeing about something more substantial than one's personal choice of code editor.
I'd have a bit more sympathy for the gamer who filed this suit if he wasn't trying to use this as his personal lottery ticket. He's apparently seeking damages of 5 million dollars. I mean, people get screwed over by large companies all the time, in real ways, and for non-trivial amounts of money, or even injured because of real negligence. The legal system is meant for them. Was this gamer so traumatized over a lower resolution in a videogame that he he should never have to work again in his life?
One the one hand, I despise the false advertising and marketing double-speak. "Temporal reprojection"? Pfft, my ass. It's a home-grown interlacing solution, and they damn well knew that you can't call it true 1080p resolution. When they say it was supposed to provide "subjectively similar" results, what they meant was "we're actually not native 1080p, but we hope you don't notice".
But five million dollars? Really?
The ability to sue a large corporation for any amount of money at no cost to you, with simply the hopes of striking it rich... sounds nice, right? And it's arguably necessary to ensure the poor have access to justice. Keep in mind that we all end up paying a price for abuse of that system. Do you think a company simply eats the cost of their army of lawyers and the results of these lawsuits? Any costs are passed on to consumers, or they come out of investors dividends - you know, stocks, mutual funds, where ordinary people have their money too, not just fat cats. What about the social effect of these massive lawsuits? Nowadays, you never hear a company admit fault unless they're already in the middle of a PR disaster. To do so would be admitting liability, and that opens them up to lawsuits. Medical malpractice insurance accounts for a massive percentage of health care costs. Why would we expect it to affect other industries less?
I wish we didn't have to rely on someone using the legal system in the hopes of striking it rich to seriously effect change, but I'm not naive enough to think that filing a complaint about false advertising would go anywhere. I'm pretty damn conflicted about this one. Honestly, I'm really not rooting for anyone here.
Peiople tolerate this when they are not otherwise suffering Materially. Arab Spring didn't get triggered when the general population is well fed, they triggered when people have problems living on at the conditions at the time (because they are broke?)
Oh, I don't know if that's universally true. Consider the American revolution. The US colonies were, by all accounts, reasonably well off under British rule, and many who agitated for revolution arguably had the most to lose, being the most prominent and wealthy of the citizens.
Granted, you could argue that desperately poor people tend to have little to lose, and perhaps are more likely to revolt. But it's also true that unrest is often fomented by the more idealistic tendencies of the well-educated. That would explain Mao's cultural revolution, wherein they eradicated many of their own most educated citizens in an attempt to purge the "bourgeoisie" of their society.
More than likely, the majority of people simply don't really see a way to change the system, and simply duck their heads down and try to get through life as best they can. And so, the oppression continue, with old men clinging to their power over the masses, trying to crush resistance wherever it emerges, often via technologies that they don't understand in the slightest. So, they fall back to their old patterns - ban, censor, and punish. No big surprises here.
Also, I found this quote in the article particularly entertaining, in a sad sort of way:
Following Thursday's announcement, Tencent, the Chinese Internet giant behind WeChat, said it supported the new regulations.
"We have conducted extensive research, and found that the regulations mainly intend to stop rumors and harmful information from spreading on the Internet," the company said in an online posting.
So, the company who's product and services are being censored fully support the government's decisions? What a shocker.
They managed to squander any and all trust they might have had
Anyone who "trusts" any large corporation is foolish at best, if you're describing the moral sense of the word. The only thing you can "trust" is for a corporation to do what's best for its own survival and bottom line. For the most part, especially in today's information-rich world, most companies - at least those who don't have government-sanctioned monopolies like many ISPs and cable providers - understand that pissing off large numbers of customers is pretty bad for business.
You can generally trust a company to do what's in its own best interest. In well run companies, that typically aligns reasonably well with customer interests, but only because unsatisfied customers tend to look for alternative products or vendors. I trust Amazon to keep my data secure in its datacenters, both at a technical level (they have lots of experience) and at a business level (a breach or massive data loss would harm their reputation). I also use Microsoft products on a daily basis, both because they're good products and because their operating systems are a huge percentage of my target market. I trust that they have very strong incentives to produce stable and secure products, which again aligns with my needs. They have no desire to become any less relevant in a fast-moving world that they're already struggling to keep pace with.
When most people talk about trust and corporations, I think it's generally a different sort of trust than, for example, how you'd trust your wife, family, or friends. At least, it certainly is for me. For businesses, trusting Microsoft might simply be the belief that Microsoft will continue to act in a relatively predictable manner, and so they can be relied on to provide the same sort of services and level of quality, whatever you perceive that to be, as they had in the past. You're simply trusting in its inherent nature. So, if you *understand* its nature, you can then better understand what you should and shouldn't allow that company to do for you - or to you.
That may sound overly cynical or somehow like an anti-corporate or anti-capitalist rant, but that's not where I'm coming from. Let's face it, without large corporations, we wouldn't have access to a lot of our most impressive products and technology. I just think it's important to understand and accept something's true nature in order to effectively make use of it, and to protect ourselves when our interests *don't* align with it.
I don't think the general public will happily trust a computer driver that fails spectacularly in edge cases. Look at the outcry over some edge-case computer-related brake malfunctions a few years ago. The computer can't just be better than the average driver, partly because everyone believes themselves to be better than the average driver*. It has to be better than nearly all drivers in most imaginable circumstances. People tend to get most nervous about things that are completely out of their control. I think perhaps that's why flying is more nerve-wracking to many people (beyond the obvious reasons), even though flying is statistically many times safer than driving.
* Honestly, I'm no exception. I'll bet everyone reading this also nods and says to themselves "well, yeah, but I AM actually a better-than-average driver."
If you're programming in Perl, Python, SmallTalk, or some other high level or managed or interpreted language, then performance probably isn't your overriding concern. That's fine. There's a reason why we have many different programming languages.
As it turns out, in the context of a high-performance, real-time simulation, allocation is actually pretty expensive. Nearly every modern AAA game or game engine does, in fact, actively manage and optimize their memory allocations, either at the allocator or object level. The global system allocator is a general purpose allocator that can't afford to make intelligent tradeoffs or specific optimizations that you can do with more domain knowledge.
There's a reason C++ is the go-to language of the videogame industry. It's because (among many other reasons) in that language we can, in fact, create our own allocators and optimize them for our particular needs. For instance, in the code I'm working on, each major subsystem of the engine has it's own allocator which uses pools of pre-allocated blocks for improved small-allocation efficiency. Splitting up the allocations by subsystem helps in tracking memory use as well as reducing contention on a global allocator lock, since games have to be extremely thread-efficient as well with all the real-time demands placed on them.
This would be ridiculous overkill for most applications, which are far less demanding of the hardware. But don't forget that context is important before universally declaring that a particular operation is "very cheap".
And as soon as you work for Facebook or Amazon, you will never have any use for 'bit bashing' again. ... but has bottom line nothing to do with serving web pages to 100,000,000 concurrent users accessing the same DB of products and hosting all the infra structure on 4 IBM mainframes that run the web front ends on 10,000 virtualized linux boxes running slackware linux (2002) and IBM Java 1.3. ... ... but well, you already do comprehend ... so, you agree with me: it is pointless. So are you examples, that only work straight forward in assembler. Lol, reverse the bit order of a word in C? Seriously?
It is interesting as a mental exercise
Sorry, how good are you actually in classic greek? It would do wonders to your comprehension of logic
Actually, it's exactly the opposite. Did you know that if a Facebook programmer can improve their back-end code efficiency by just a few percentage points inside the data centers, the company saves millions of dollars annually? It's why they wrote a PHP to C++ converter as they began to have scaling and performance issues. Likewise, do you not think that among Amazon's datacenters, they wouldn't be interested in finding a way to reduce memory consumption and CPU overhead of the hundreds of thousands of running instances that control all their internal operations?
You're probably thinking in terms of traditional desktop or web applications, where CPU and memory resources seem practically limitless. Here are a few areas where efficiency still counts for a lot: cloud/data-center development, embedded systems ("i.e. the internet of things"), smartphones, videogames, CPU-demanding desktop applications. Interested yet? Notice that there's still a lot of cutting edge stuff in there? It turns out that when you multiply a program by a factor of hundreds, thousands, or even hundreds of thousands inside a data center, small gains in efficiency turn into huge power savings, and that means big money savings. Likewise, there are some applications where you can simply never be too fast or efficiently. Simulations are one example. Videogames are another.
Languages like Objective-C, C and C++ still have a place because high-performance computing is still important both in small and constrained environments, OS level systems programming, and large-scale datacenter deployments and applications. And bit manipulation and other low-level operations are a real part of those still very relevant languages.
You might laugh at the notion of reversing the bit order of a word in C, but it's no joke that in my job (videogame programming), I still occasionally need to know how to do bitwise operations - not often, but occasionally. Just because you haven't used a skill in your own particular field of programming doesn't necessarily mean it's not in demand outside your particular domain.
It's not so much about the results as the methodology. Assange seemed (at least in the Manning case) to advocate a "publish it all and damn the consequences" approach, not really considering that the consequences could involve risk to real lives. The fact that no one has apparently been harmed as a result doesn't necessarily mean the potential danger wasn't real.
In contrast, one of the things I admire about Snowden is his method of responsible disclosure. He's been, by all accounts, quite careful to release documents that clearly demonstrate the government's infringements on our liberties and constitutional rights, but has largely limited the scope to that topic. He undoubtedly had access to many other sensitive government documents that could, but has reviewed the documents before release in order to ensure that as little harm as possible is done to actual US security interests.
It's admittedly a pretty fine line, but I think it's worth noting a distinction there. I'm sure plenty will disagree with me.
I briefly read the headline as: Snowden is Not Alone. US Seeks Another Leaker. As in: From the US Citizens: You're not alone, Snowden! We're with you! And we're looking for other brave souls to come forward and keep us informed about what the NSA is really doing! Then I reread the headline correctly, and realized I far preferred my earlier interpretation.
I'm not quite as bullish on Asange. When he revealed the war-related documents he did without sanitizing them, he put the lives of many Iraqi and Afgani citizens who worked with our forces at risk, and didn't appear to give a shit if they lived or died. If they worked with the evil American empire, they apparently deserved whatever fate they get at the hands of folks who have a history of doing really awful things to their fellow human beings. That alone makes me pretty uncomfortable, regardless of whatever positive things he's done or established.
Snowden, on the other hand, is a patriot of the highest order, in my opinion. He made the ultimate conscientious decision after seeing an unconscionable overreach of government authority, throwing absolutely everything away in an effort to bring this to light. If you hear him explain his decision, you get a sense that he doesn't have an ax to grind, nor is he some sort of glory-seeker, but was simply motivated to do the right thing for the right reasons. He got nowhere in a sincere effort to work through legitimate channels before ultimately resorting to leaks. The intransigence of the government in admitting any wrongdoing is, I feel, evidence enough that his internal efforts could never have been fruitful.
There are a few things he released that I actually wish he hadn't. For instance, I think the details on technologies and methods used for targeted surveillance, for instance, should have remained secret. If you think about it, that's *precisely* what the NSA should be doing: precision strikes, rather than carpet bombing, so to speak. I'm not opposed to their mission of finding legitimate threats to US citizens and interests, but don't put the entire damned country under mass surveillance to do so. It defeats the entire purpose if we have to turn into a police state to remain secure. But overall, he's done a pretty good job of releasing only relevant documents that highlight abuses, since he likely has information that, if released, would actually harm our national security or legitimately put people at risk.
Ultimately, I feel the country is in better shape thanks to Snowden. What we learned needed to be known, and thanks to him and the price he paid (and is paying), we can start trying to address the problem. I wish he would get pardoned, but I doubt that will happen.
That's actually a very good point. The S3 backup is completely automated which means, of course, that everything the malware would need to screw with your S3 (or other) account is right there for the taking - the keys have to be local and accessible. Granted, we haven't heard any confirmation of this malware having those sorts of capabilities, but we've seen incredibly sophisticated banking trojans out in the wild that do things that are far more sophisticated.
Damn. Well, all the more reason to stay patched up, and to avoid exposing any more of an attack surface to the internet than you absolutely need to. Fortunately, the way my local network is set up, it's pretty much impossible for a single trojan to access all of the redundant copies of my critical files, since the multiple workstations all sync to a Mercurial repository on the NAS, and none of those workstations share their drives, providing some degree of protection from potential malware on the other machines in the network. I guess you can never really have too many backups.
A NAS device is not a toaster. It's a file server running a lightweight but fully-featured operating system. You don't need to be a professional network administrator, but you do need to be careful enough to at least check in regularly for updates. One presumes such hardware was purchased because you had valuable data you wished to manage or protect. Honestly, a NAS is really not a purchase for "normal" people. Power-users and up, I'd say, are the minimum personnel requirements.
Even so, Synology machines are not hard to patch. They download OS updates automatically by default. All you have to do is log in via the administration page once in a while and click the "update" button, since it pops up right on the page after it sees you have an update to install. And every update has a link right next to it that points to a web page detailing exactly what changed or what was fixed. I'd suppose the reason there's no "auto-update" is because an update requires a 5-10 minute patch and reboot cycle, and you generally don't want your file server automatically rebooting at it's own convenience.
I'm presuming (since information is a bit scarce) that users either failed to patch their machines for six months or longer due to neglect, or they made a deliberate choice not to do so for some reason, yet kept their internet-facing services wide open (note that these are not installed or enabled by default). Unfortunately, that's pretty much a guaranteed recipe for an attack of this sort. It's a crappy way to have to learn a lesson.
My Synology NAS is my home-based business' file server, a local machine backup (for my development machine and my digital audio workstation), and a media server for my ripped DVDs and Blurays, although this third function is just a nice bonus for me. Synology NAS devices have a very handy cloud backup application as well, which I use to backup all my most critical files to Amazon S3 services. I hope most people made use of this, because if Cryptolocker has taught us anything, it's that you absolutely need offsite backups that are NOT connected to your network.
I bought it specifically because it makes it easy to set up a multi-tiered backup strategy like that - something that takes on new importance when you spend a few years writing code on your own dime. As a file server, it's fantastic for small operations. I had a drive begin to fail last year, and so had a chance to test out the hot-swapping / RAID rebuilding feature. Worked like a charm - was super simple and zero down-time.
Personally, I've never once considered opening up my NAS to the outside internet. That always seemed crazy risky to me - after all, a single software mistake, a buffer overrun in a protocol stack of some sort, and *poof*, there's direct access to your file server and all it's critical data. I guess sometimes being paranoid pays off, but it gives me no pleasure to say so.
Internet of things, huh? I think I'll wait a generation or two until they hammer out the worst of the security issues. One of the latest missteps was caused by a smart bulb that embedded the encryption key in the firmware. Oops. Yeah, no one would think to look there, right? There's likely going to be an entire generation of devices that will have the same sort of flaws that early wireless routers had - essentially, the result of average programmers (i.e. non-cryptographic experts) trying to invent cryptographic solutions.
If you have a gmail account google could bomb your computer with tons of child porn the next time you check your email. They could also serve up search results from their search engine with hidden images that your browser will cache. If you've got google drive or whatever its called then quite clearly you are fucked if google wants you to be fucked.
You're playing the "Could this theoretically happen?" game again. Yes, that's a possibility. One has to say that and remain intellectually honest. In the real world, not some Hollywood thriller, what are the odds that Google, or some Google employee, is actually going to target an individual in such a manner, electronically forging content and framing him? Or more to the point, what are the odds of it happening in any one individual case? Exceedingly low, in my opinion. The odds go up dramatically if you figure the possibility of it *every* happening, but you can't really work that way. It's like saying that the odds of winning the lottery are very high because someone, somewhere, at some time is virtually guaranteed to win it.
As such, we treat evidence from Google *or any other single source* as potentially suspect in line with the odds of that information being compromised in that instance. Just like a good academic paper will cite from multiple sources, so too should a criminal conviction require corroboration of evidence from multiple sources. The great thing is that mathematically, if we consider the odds of a Google employee or Google as a company working to ruin an individual as "low", and the probability of the police planting evidence at the scene of the crime as "low", the odds of both of those occurring in a single case is now *exceedingly low*.
To answer your question directly, if the data all came from Google or could be manipulated directly in some fashion by Google, then it's essentially a single source, and a highly malleable source at that (electronic data). It would depend on the details of the case, of course, but my gut answer is that I'd really want to see some external corroboration before I'd feel comfortable with a conviction. And, in line with where I think you're leading with this, yes, I agree that it's dangerous for one company to control too much of the Internet or the data in our personal lives for exactly the reasons you give.
I learned quite a bit about Nadella from his e-mail which notified around eighteen thousand employees of impending layoffs and contained the word "synergies" no less than three times. Even his buzzwords are stale and unimaginative. This man either has no real vision, or he's very bad at communicating a clear vision. The article was correct in giving him a very bad grade in communication.
The one-platform tech base strategy actually seems sound, though, and in truth, is how they should have been pushing Windows 8 - not as a touch-first OS like we got, but one that's touch-capable, able to integrate seamlessly with other small form factor touch-focused Microsoft devices by using a unified API (write once, deploy everywhere). There's a lot of legacy products out there that people will still depend on for decades to come, and businesses are made nervous when the creator of the OS on which they depend veers off in a new direction, seemingly abandoning the current platform on which you rely.
It's a bit ironic to me that in trying to aim for the future, Microsoft is taking for granted and ultimately risking the core audience on which they've had a solid lock for the past twenty years. We'll see if Nadella manages to remember that while the desktop is no longer the face of new technology and is dwindling in importance, it's also a platform which is not likely to disappear as a significant market anytime in the near future. Rather than using that platform as a bully-pulpit to push it's other platforms, Microsoft needs to make it's other platforms compelling and attractive in their own right, and then demonstrate to businesses the value of a simple cross-platform deployment strategy, all while leaving it's "legacy" desktop platform in place in order to support more heavyweight computing tasks that individuals and business will still inevitably need.
The threshold is "beyond a reasonable doubt", which means that we have to weight the possibility of a conspiracy to fake evidence by some random employee at Google and police who found evidence at his house, versus the probability that this person was guilty of a crime - one he was convicted of previously, incidentally
If there's a Google employee or outside hacker with a wish to see this person go back to jail does not imply there has to be a conspiracy. That the person is formerly convicted would, I believe, make it more likely that the person is framed, not less. There are enough people who think anything less than life sentence is too mild, and some of those are more than willing to "do what it takes".
Well, if the Google evidence was the sole evidence used to try to convict someone, I'd hope that the accused would walk free. One would hope that a case wouldn't depend on a single piece of ANY evidence, because that brings up the obvious reasonable doubt. If the Google evidence is used in conjunction with evidence also found at a local residence by law enforcement, that obviously makes for a much stronger case.
I don't think it's unreasonable to apply Occam's razor to these scenarios. It's perhaps entertaining to imagine all sorts of crazy conspiracy theories that *might* occur, but the reality is that these sorts of things are undoubtedly *extremely unlikely* to actually occur. If we dismissed every case because of improbable scenarios that could theoretically punch holes in a case, we'd never convict anyone.
We have to draw a line somewhere so that innocent people wrongly accused are protected, yet standards aren't so impossible that we can never actually convict anyone who has actually committed a crime.
Because, as an occasional server admin, I'm perfectly aware that it's easy to change the logs, timestamps, and permissions. Do you not know what a computer is? It's a tool for manipulating data. This is not reliable forensic evidence, it's something that anyone with fairly modest skills could fake up in fifteen minutes.
Sure, but it's no different than most other physical evidence, in that it's dependent upon the trustworthiness of the person presenting the information. That's why there are strict procedures dealing with evidence. It sets up a chain of trust which is used to gauge the validity of the evidence. You're making the mistake of trying to apply black and white rules in a matter that is, by it's very nature a very grey area.
Note that a conviction of a crime doesn't require "100% proof", because there's no such thing in this world. In theory, pretty much all evidence could be tampered with. The threshold is "beyond a reasonable doubt", which means that we have to weight the possibility of a conspiracy to fake evidence by some random employee at Google and police who found evidence at his house, versus the probability that this person was guilty of a crime - one he was convicted of previously, incidentally. That's what a jury of his peers will have to decide.