Interestingly, I've found many C libraries actually use a very OOP-like interfaces - just without the "objects". For instance, you'll first call some sort of create() function to get a pointer to a struct that contains state data or perhaps a handle. You then pass this pointer or handle to "member" functions - essentially, a function that operates on or modifies the state of that data. Then you release the allocated context struct via some destroy() function. That's pretty close to what a class and it's member functions do - the only difference is that C++ member function pass the handle or context pointer implicitly as a hidden first parameter. The create() and destroy() functions are the constructor and destructor respectively.
Granted, it gets a bit more complicated when you start dealing with inheritance and various access permissions, but that's really the heart of OOP - packages of data and groups of functions that operate on that data. C++ certainly wasn't my first language - I knew BASIC and Pascal before that, but the basic premise of OOP clicked with me. It definitely did take a while before I was *good* at designing classes though. For all of my career, we used C++ at work, so I was learning and improving all the time, and there were always colleagues who I could ask for advice. If you don't have anyone who is showing you the ropes, I can see how that would be tough.
I'm not sure I agree. I learned C++ first and then C a year or two later, and I can manage raw pointers just fine, thank you. I just think you're crazy if you do it willingly when there are much better alternatives available.
I've seen plenty of C turned C++ programmers who essentially treat classes like a giant package for wrapping up loosely related functions into horrifying kitchen-sink classes. They don't know how to create proper interfaces, and pass all sorts of raw pointers around, managing memory manually, even though there's often no reason for doing so. In short, they've never dropped the habits they acquired from C. And frankly, bad C++ is arguably worse than bad C.
One could argue that this is a result of learning C before C++, but honestly, it's really just a matter of programmer skill and/or competence. A C programmer should be able to learn the ins and outs of OOP and generics / templates, and a C++ programmer should be able to drop down to low-level pointer-intensive code if they need to. If not, it just means that they stopped trying to learn new things - nothing more than that. Or, maybe no one ever took the time to point out better methods of writing code.
Anyhow, C is a dangerous, crusty language, but it's not going away anytime soon due to it's sheer pervasiveness, utility, and efficiency. It's essentially the common denominator of languages, which is why so many libraries are written in C. Just about any language can interop with C (or it generally doesn't get off the ground). Moreover, entire operating systems are written in C, meaning it's going to stay relevant as long as those OSes are around, and I don't see them fading away in the near future.
Where exactly does this money come from? If the government simply prints it, congrats, you've just massively devalued the dollar through inflation. Anyone who works would have their income skyrocket because of this (in dollar amounts, not in purchasing power), and the net result would be that little would change in terms of real purchasing power. If you actually taxed the folks who worked to siphon money over to those that didn't, the increased taxes would reduce the incentive to work and improve one's economic outlook, and cause a significant drain on the economy. If you borrow the money, you can get a free ride for a few years until we can no longer afford to pay the interest, and then our economy would implode because of the inevitable default or hyperinflation cycle.
You can't just supply the entire populous with an income out of thin air. Economics has it's own laws, just like physics, and you can't simply ignore them by creating value from nothing. Either you devalue money so much as to make it worthless, or you utterly destroy your national economy with massive increases in confiscation of personal income and/or property through taxation. Or, you borrow and just postpone the inevitable for a few years until interest payments catch up with you.
I felt a great disturbance in the force... as if millions of old men suddenly cried out in terror, and then were suddenly banned from making bad puns...
Trucking is going away soon? I think self-driving vehicles are farther away than most people think, and mass deployment is even further away. Hand delivery will be required for packages larger than 5 lbs for a while. Don't tell me a robot is going to climb out of the truck and carry that package to my doorstep too? And you think all the smaller warehouses and distribution centers in the US (or world) will suddenly find the collective billions of free dollars needed to convert all their operations to complete automation? I'm guessing those systems don't come cheap.
I think people predicting complete end-to-end automation in the near future are vastly overestimating the limitation and cost of replacing or upgrading all of today's current infrastructure. Sure, it will undoubtedly happen eventually, but I think it will be a very gradual shift over many decades, not some revolution that takes place in a few years.
Auto-navigating in the air seems to be vastly easier than on the ground. It's not the simple case of freeway driving you have to worry about - it's all the crazy edge cases that likely make it so damnably difficult. Commercial airliners can already pretty much fly themselves if they had to, and the military has had fully automated drones for quite some time now.
I'd take that bet, and would even spot you a decade.
These things only go the last part of the journey, and only with small, lightweight objects (about 5lbs or so). You're still going to need a massive delivery fleet to move everything to local warehouses from other states or countries, and for heavier or bulky items you'll still need traditional delivery vehicles. There are also going to be many areas or sites for which drone delivery simply isn't practical.
Moreover, I think this is not going to be a rapid transition either. It's likely to be something that's phased in over a few decades, not a few years, so you won't see a sudden effect on the economy.
Are there now politically correct and non-politically correct ways to take samples of asteroids? Apparently so.
The word "bomb" is probably not the best choice, though. It might be better to describe it as "blasting" rather than "bombing". The technical differences are possibly minor in this case, but the semantic differences are significant.
It's sort of surprising to me that so many people with technical backgrounds like the SW series, given all of the science the movies completely disregard:
Because... many of us well understand that SW is really a fantasy set in outer space, and we're not looking for technical realism? Once you realize and accept this, you'll stop worrying about technical issues. I mean... come on... take a hint. There's a princess and the knights who rescue her. There are wizards with swords and magic powers. The film follows the classic "hero's journey" paradigm. Pure fantasy with a science fiction veneer.
Thank God Hollywood knows better than to follow the example of 2001. Nothing against it - it's a fine movie for a small subset of people who care about technical accuracy in space scenes rather than... well... fun. But that's not what Star Wars is about. 2001 is not the film to take your 7 year old son to. "Alien and intriguing" is not what Star Wars is trying to be.
Note in the article that they've all but admitted they're going to fine Google billions of dollars no matter what - hell, they've already figured out how much they want to extort. To me this sort of sounds like prep work to justify a shakedown yet to come.
Predecessor Joaquin Almunia tried and failed to settle the case. A series of concessions made by Google were rejected, leading Mr Almunia to suggest that the only option was a fine. This could be up to $5bn.
It's still crypto-currency, although I think "decentralized digital currency" is a better description, since the crypto is really just an implementation detail, not a feature. Crypto is used to validate the integrity of the currency and transactions, not to provide anonymity.
Faced with the near-term catastrophe of climate change and the planet-poisoning effects of fossil fuels, is the environmental movement changing its tune on nuclear energy? It’s not a new question, and let’s be clear that the short answer is still no – or mostly no. You can’t find one major environmental organization, from activist groups like Greenpeace to mainstream conservation groups like the Nature Conservancy or the National Audubon Society, that has come out publicly in favor of nuclear power.
Currently, support for nuclear power among most environmentalists is tentative at best. But at least a few voices within the movement insist that soaring global demand for energy makes it imperative for climate change advocates to fully embrace atomic power.
The four scientists say the risks of expanding nuclear energy are much smaller than those of continuing to rely on fossil fuel power plants, which they say treat the atmosphere "as a waste dump."
U.S. environmental advocacy group, the Natural Resources Defense Council, rejected the letter's emphasis on nuclear power. Spokesman Bob Deans says the world gains nothing from "substituting one set of environmental nightmares for another."
Interestingly, with the exception of the top link or two that shows a very minor environmental group or small numbers of environmentalists in favor of nuclear, most links demonstrate that the environmental movement is still very much anti-nuclear.
Viruses and trojans have been named for a long time. This is naming the actual vulnerability, not the exploiting/malicious code, so yes, it's actually different.
We'd certainly be much better off as a race if we all got along and worked toward the common good. Any brilliant ideas how to keep people from killing each other en mass over territory, religion, ideology, etc? If so, there's a Nobel Peace Prize with your name on it.
The X’ers also formed a partnership with Raven Aerostar, a company whose balloons have included early NASA near-space probes. Together they confronted problems involving flight duration, control, and power consumption that have baffled balloonists for centuries. Ultimately they came up with a dual-chamber design (one filled with helium, the other with air) and a system of valves that allowed low-energy altitude adjustments. “Ballooning is way harder than rocket science,” DeVaul says.
To make the envelope, Raven Aerostar extrudes a special polyethylene film, only three times the thickness of the plastic that covers your typical loaf of bread and specially formulated to retain helium, resist pressure, and stay supple, even at –50 degrees Fahrenheit. The company now runs an assembly line for Google in Sulphur Springs, Texas, and it set up a second line near its headquarters in Sioux Falls, South Dakota. After all, if you’re going to encircle the globe with Internet-beaming UFOs, you’re going to need a lot of them.
So, it's helium and air, which probably caused some of the confusion.
Sort of ironic for me to introduce a bug in code designed to show off an intentional bug, the point of which was to show how easy it was to make a silly mistake. Yes, that's what I meant to type, thanks.
This isn't about the Java "checking the name of the Windows" string issue. That was just someone's supposition, and probably off the mark, in my opinion. This was a real problem both in Windows programs as well as with installers, where incorrect logic would cause the program to spit out a message saying "Sorry, the program isn't compatible with this version of Windows", but if that check were removed the program would actually install or run just fine.
The GetVersionEx() function returned a struct filled with information. Two of those members were a major and a minor version number. You had to check both of them and apply the correct logic based on a table of major and minor numbers you'd have to look up in the online help somewhere. For instance, in Microsoft's own example, to check for XP or later, you had to do this (where osvi is the struct returned from the function):
Oops. This code runs just fine on XP, but won't run on Vista now. Worse, it's one of those bugs that doesn't show up until a new version of Windows is released. It seems silly, but there were apparently an awful lot of programmers that somehow managed to get this wrong.
Oops, dang. You're right. I'm not sure why my brain picked that word - I should know better.
In my defense, I suppose one could argue since MS is now having that function return technically incorrect results, it's not only deprecated, but also depreciated, right?
The reason Microsoft never bumped the version number is because of backwards compatibility. Whether intentionally or unintentionally, many programmers have misused the old Windows APIs that check version numbers in a way that breaks compatibility of their apps going forward. That is, they're checking against future version of Windows rather than previous versions, and as such, their programs would refuse to run if the internal version number had been bumped from 6 to 7 (or 8). Whenever that sort of thing happens, people inevitably blame the OS rather than the application that had the bug in the first place, and as such Microsoft has resorted to some rather extraordinary measures to preserve backward compatibility, even going so far as to intentionally replicate bugs in special program-specific compatibility modes.
The GetWindowsVersionEx() API function is overly-complicated and notoriously easy to accidentally misuse. It appears that Microsoft finally had enough of that, and depreciated it. It will now actually only report accurately up to Windows 8.1, even in future operating systems, to ensure people can't accidentally or intentionally misuse them. They've been replaced with a set of "too simple to possibly misuse" functions that look like the following:
There's one function for each major OS version + service pack, and it only checks in an equal-to-or-greater fashion, as you almost always want to do for broad compatibility checks. Notice also how you can't even check against future Windows versions until new API functions are released. I think now that MS has this safer API in place and enough time has passed since the initial problems were detected, they can get the internal version number back in sync with the more visible public number.
There's probably some marketing push in there, because I've seen people (wrongly) claim that since it was just a minor version bump in previous versions, it proved that there were only minor changes to the kernel, blah, blah... Maybe it bothered some particularly anal developers, but I doubt many really cared. It's just an arbitrary number to check at the end of the day, and we're sort of used to dealing with those.
Cool, I'll have to check that video out a bit later.
I actually got a chance to very briefly work with Alexey Pajitnov while contracting at Microsoft. Sadly, the project ended up being cancelled before release, but I'm glad I had met him, if only really for a very quick hello and handshake while I was introduced to the team.
He's correct that Microsoft was absolutely horrible at making games back then. My project was sort of a classic example of that sort of bureaucratic ineptitude. They actually hired people (some even relocating) for that project before someone had the bright idea of running the numbers on the project only to realize "Oh, we're not going to make any money on this title" and subsequently canned it. Oops.
Fortunately, I was a local, so it didn't really bother me all that much. Since I was just a contractor, my boss was cool enough to actually buy me an Xbox and a few games as "severance" out of his own pocket, as well as letting me sort of hang around and do nothing for the next few weeks to collect my paycheck while interviewing at a few different departments. I had always worked at very small videogame companies previous to this, so the amount of money they nonchalantly pissed down the drain was sort of eye-popping to me.
I'm glad Alexey made enough from royalties and working at MS so he's comfortable now. It would be rather unfair if all these companies made many millions off the game he designed and he didn't reap any rewards from it at all.
I'm not sure I necessarily agree with your conclusion. The free market produces a wide variety of products at nearly all price points, from extremely inexpensive to ridiculously high end products. Search through any app store and exclude the free crap and stuff with micropayments, and you'll still find a lot of great products.
It's like this with most categories of products I can think of. Just because McDonalds is highly profitable at serving low-cost, low-quality products doesn't mean you can't find a great steak dinner or high quality sushi meal. Sure, most people go for the cheap stuff on a day to day basis, but for nearly every type of product out there, you generally also have the option of paying extra for higher quality, or just for something different. The only time I can think of that this typically isn't the case is when we see a monopoly or cartel that's quashing innovation and breadth of services in a particular market segment (ISPs / cable companies, for instance).
You talk about "the best X" or "objectively inferior", but that's an impossible standard, because "best" is entirely subjective. People have different things they're looking for in products. Many people measure best completely based on price, which explains the glut of "free" apps. Some consider overall product quality or polish. Some people simple consider the *most* expensive to be best, which explains Monster cables. Other people consider aesthetics, or innovative features. Some people choose based on a brand name. How about the methodology or philosophy used to create it (i.e. free & open source software).
Anyhow, I think this news just signals a natural maturing of both a new market along with the regulation and rules of commerce within that new market. In other words, we see some sleazy developers trying to push the ethical boundaries of what can be done with in-app purchases, and you see a pushing back with regulations or customer complaints, forcing the app store curators to tighten things down a bit. This is a natural process within any marketplace, as we try to find an appropriate balance between free commerce and rules to protect consumer interests.
The fact that we're seeing pressure to be much more explicit about in-app purchases, and clearer rules about how those purchases can be authorized means the general public are starting to get wary of "free" apps. That's a good thing, right?
Because unfortunately for all of us that loathe the free + in-app micropayment model, it actually makes money. There's no way an entire ecosystem built around this model would have sprung up if everyone hated it as much as I did.
There are many, many people who download and play a huge number of free games, and never bother paying, or perhaps pay for a game rarely. Many of those people (like kids) are time rich and cash poor, so don't blink as spending ridiculous hours grinding away. There are a much smaller number of people who get addicted to these games and spend a ridiculous amount of money on in-app purchases... far more than would have ever been paid if they had just purchased the game outright. Those people are the real targets.
My only hope is that people eventually grow tired of these sleazy tactics and refuse to participate. Then again, people still waste money at casinos and buying lottery tickets, so I'm not really holding my breath. I'll just continue supporting developers that sell their games up-front for a fixed price - a model I much prefer.
Because some people are actually better at their job than others? Hence, they are more valuable to the company, and can negotiate better compensation. Highly skilled work isn't like unskilled work, where you have a fixed set of job requirements which you either do or don't do properly.
As to why a great engineer should be paid less because they aren't as socially adept? You're right, they should be paid more, but how exactly would you choose to make this happen? Any solution I can think of would also stomp all over the ability of exceptional engineers to earn *more* than their less motivated colleagues (i.e. union pay grades). No thanks, not for me.
Interestingly, I've found many C libraries actually use a very OOP-like interfaces - just without the "objects". For instance, you'll first call some sort of create() function to get a pointer to a struct that contains state data or perhaps a handle. You then pass this pointer or handle to "member" functions - essentially, a function that operates on or modifies the state of that data. Then you release the allocated context struct via some destroy() function. That's pretty close to what a class and it's member functions do - the only difference is that C++ member function pass the handle or context pointer implicitly as a hidden first parameter. The create() and destroy() functions are the constructor and destructor respectively.
Granted, it gets a bit more complicated when you start dealing with inheritance and various access permissions, but that's really the heart of OOP - packages of data and groups of functions that operate on that data. C++ certainly wasn't my first language - I knew BASIC and Pascal before that, but the basic premise of OOP clicked with me. It definitely did take a while before I was *good* at designing classes though. For all of my career, we used C++ at work, so I was learning and improving all the time, and there were always colleagues who I could ask for advice. If you don't have anyone who is showing you the ropes, I can see how that would be tough.
I'm not sure I agree. I learned C++ first and then C a year or two later, and I can manage raw pointers just fine, thank you. I just think you're crazy if you do it willingly when there are much better alternatives available.
I've seen plenty of C turned C++ programmers who essentially treat classes like a giant package for wrapping up loosely related functions into horrifying kitchen-sink classes. They don't know how to create proper interfaces, and pass all sorts of raw pointers around, managing memory manually, even though there's often no reason for doing so. In short, they've never dropped the habits they acquired from C. And frankly, bad C++ is arguably worse than bad C.
One could argue that this is a result of learning C before C++, but honestly, it's really just a matter of programmer skill and/or competence. A C programmer should be able to learn the ins and outs of OOP and generics / templates, and a C++ programmer should be able to drop down to low-level pointer-intensive code if they need to. If not, it just means that they stopped trying to learn new things - nothing more than that. Or, maybe no one ever took the time to point out better methods of writing code.
Anyhow, C is a dangerous, crusty language, but it's not going away anytime soon due to it's sheer pervasiveness, utility, and efficiency. It's essentially the common denominator of languages, which is why so many libraries are written in C. Just about any language can interop with C (or it generally doesn't get off the ground). Moreover, entire operating systems are written in C, meaning it's going to stay relevant as long as those OSes are around, and I don't see them fading away in the near future.
Where exactly does this money come from? If the government simply prints it, congrats, you've just massively devalued the dollar through inflation. Anyone who works would have their income skyrocket because of this (in dollar amounts, not in purchasing power), and the net result would be that little would change in terms of real purchasing power. If you actually taxed the folks who worked to siphon money over to those that didn't, the increased taxes would reduce the incentive to work and improve one's economic outlook, and cause a significant drain on the economy. If you borrow the money, you can get a free ride for a few years until we can no longer afford to pay the interest, and then our economy would implode because of the inevitable default or hyperinflation cycle.
You can't just supply the entire populous with an income out of thin air. Economics has it's own laws, just like physics, and you can't simply ignore them by creating value from nothing. Either you devalue money so much as to make it worthless, or you utterly destroy your national economy with massive increases in confiscation of personal income and/or property through taxation. Or, you borrow and just postpone the inevitable for a few years until interest payments catch up with you.
I felt a great disturbance in the force... as if millions of old men suddenly cried out in terror, and then were suddenly banned from making bad puns...
Trucking is going away soon? I think self-driving vehicles are farther away than most people think, and mass deployment is even further away. Hand delivery will be required for packages larger than 5 lbs for a while. Don't tell me a robot is going to climb out of the truck and carry that package to my doorstep too? And you think all the smaller warehouses and distribution centers in the US (or world) will suddenly find the collective billions of free dollars needed to convert all their operations to complete automation? I'm guessing those systems don't come cheap.
I think people predicting complete end-to-end automation in the near future are vastly overestimating the limitation and cost of replacing or upgrading all of today's current infrastructure. Sure, it will undoubtedly happen eventually, but I think it will be a very gradual shift over many decades, not some revolution that takes place in a few years.
Auto-navigating in the air seems to be vastly easier than on the ground. It's not the simple case of freeway driving you have to worry about - it's all the crazy edge cases that likely make it so damnably difficult. Commercial airliners can already pretty much fly themselves if they had to, and the military has had fully automated drones for quite some time now.
I'd take that bet, and would even spot you a decade.
These things only go the last part of the journey, and only with small, lightweight objects (about 5lbs or so). You're still going to need a massive delivery fleet to move everything to local warehouses from other states or countries, and for heavier or bulky items you'll still need traditional delivery vehicles. There are also going to be many areas or sites for which drone delivery simply isn't practical.
Moreover, I think this is not going to be a rapid transition either. It's likely to be something that's phased in over a few decades, not a few years, so you won't see a sudden effect on the economy.
"Too much time on my hands"?
Are there now politically correct and non-politically correct ways to take samples of asteroids? Apparently so.
The word "bomb" is probably not the best choice, though. It might be better to describe it as "blasting" rather than "bombing". The technical differences are possibly minor in this case, but the semantic differences are significant.
It's sort of surprising to me that so many people with technical backgrounds like the SW series, given all of the science the movies completely disregard:
Because... many of us well understand that SW is really a fantasy set in outer space, and we're not looking for technical realism? Once you realize and accept this, you'll stop worrying about technical issues. I mean... come on... take a hint. There's a princess and the knights who rescue her. There are wizards with swords and magic powers. The film follows the classic "hero's journey" paradigm. Pure fantasy with a science fiction veneer.
Thank God Hollywood knows better than to follow the example of 2001. Nothing against it - it's a fine movie for a small subset of people who care about technical accuracy in space scenes rather than... well... fun. But that's not what Star Wars is about. 2001 is not the film to take your 7 year old son to. "Alien and intriguing" is not what Star Wars is trying to be.
Note in the article that they've all but admitted they're going to fine Google billions of dollars no matter what - hell, they've already figured out how much they want to extort. To me this sort of sounds like prep work to justify a shakedown yet to come.
Predecessor Joaquin Almunia tried and failed to settle the case. A series of concessions made by Google were rejected, leading Mr Almunia to suggest that the only option was a fine. This could be up to $5bn.
It's still crypto-currency, although I think "decentralized digital currency" is a better description, since the crypto is really just an implementation detail, not a feature. Crypto is used to validate the integrity of the currency and transactions, not to provide anonymity.
Links from that search you posted:
http://www.salon.com/2013/06/2...
Faced with the near-term catastrophe of climate change and the planet-poisoning effects of fossil fuels, is the environmental movement changing its tune on nuclear energy? It’s not a new question, and let’s be clear that the short answer is still no – or mostly no. You can’t find one major environmental organization, from activist groups like Greenpeace to mainstream conservation groups like the Nature Conservancy or the National Audubon Society, that has come out publicly in favor of nuclear power.
http://www.cnbc.com/id/1016079...
Currently, support for nuclear power among most environmentalists is tentative at best. But at least a few voices within the movement insist that soaring global demand for energy makes it imperative for climate change advocates to fully embrace atomic power.
http://www.voanews.com/content...
The four scientists say the risks of expanding nuclear energy are much smaller than those of continuing to rely on fossil fuel power plants, which they say treat the atmosphere "as a waste dump."
U.S. environmental advocacy group, the Natural Resources Defense Council, rejected the letter's emphasis on nuclear power. Spokesman Bob Deans says the world gains nothing from "substituting one set of environmental nightmares for another."
Interestingly, with the exception of the top link or two that shows a very minor environmental group or small numbers of environmentalists in favor of nuclear, most links demonstrate that the environmental movement is still very much anti-nuclear.
Stone is good too.
Viruses and trojans have been named for a long time. This is naming the actual vulnerability, not the exploiting/malicious code, so yes, it's actually different.
The 2013 military budget was 17.7%.
We'd certainly be much better off as a race if we all got along and worked toward the common good. Any brilliant ideas how to keep people from killing each other en mass over territory, religion, ideology, etc? If so, there's a Nobel Peace Prize with your name on it.
This is from an article linked from Wikipedia:
The X’ers also formed a partnership with Raven Aerostar, a company whose balloons have included early NASA near-space probes. Together they confronted problems involving flight duration, control, and power consumption that have baffled balloonists for centuries. Ultimately they came up with a dual-chamber design (one filled with helium, the other with air) and a system of valves that allowed low-energy altitude adjustments. “Ballooning is way harder than rocket science,” DeVaul says.
To make the envelope, Raven Aerostar extrudes a special polyethylene film, only three times the thickness of the plastic that covers your typical loaf of bread and specially formulated to retain helium, resist pressure, and stay supple, even at –50 degrees Fahrenheit. The company now runs an assembly line for Google in Sulphur Springs, Texas, and it set up a second line near its headquarters in Sioux Falls, South Dakota. After all, if you’re going to encircle the globe with Internet-beaming UFOs, you’re going to need a lot of them.
So, it's helium and air, which probably caused some of the confusion.
Sort of ironic for me to introduce a bug in code designed to show off an intentional bug, the point of which was to show how easy it was to make a silly mistake. Yes, that's what I meant to type, thanks.
This isn't about the Java "checking the name of the Windows" string issue. That was just someone's supposition, and probably off the mark, in my opinion. This was a real problem both in Windows programs as well as with installers, where incorrect logic would cause the program to spit out a message saying "Sorry, the program isn't compatible with this version of Windows", but if that check were removed the program would actually install or run just fine.
The GetVersionEx() function returned a struct filled with information. Two of those members were a major and a minor version number. You had to check both of them and apply the correct logic based on a table of major and minor numbers you'd have to look up in the online help somewhere. For instance, in Microsoft's own example, to check for XP or later, you had to do this (where osvi is the struct returned from the function):
bIsWindowsXPorLater = ((osvi.dwMajorVersion > 5) || ((osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1)));
It's not overly complicated, but neither is it completely intuitive or trivial. Say you did something silly like this instead:
bIsWindowsXPorLater = (osvi.dwMajorVersion >= 5 && osvi.dwMajorVersion >= 1);
Oops. This code runs just fine on XP, but won't run on Vista now. Worse, it's one of those bugs that doesn't show up until a new version of Windows is released. It seems silly, but there were apparently an awful lot of programmers that somehow managed to get this wrong.
s/depreciated/deprecated
Oops, dang. You're right. I'm not sure why my brain picked that word - I should know better.
In my defense, I suppose one could argue since MS is now having that function return technically incorrect results, it's not only deprecated, but also depreciated, right?
The reason Microsoft never bumped the version number is because of backwards compatibility. Whether intentionally or unintentionally, many programmers have misused the old Windows APIs that check version numbers in a way that breaks compatibility of their apps going forward. That is, they're checking against future version of Windows rather than previous versions, and as such, their programs would refuse to run if the internal version number had been bumped from 6 to 7 (or 8). Whenever that sort of thing happens, people inevitably blame the OS rather than the application that had the bug in the first place, and as such Microsoft has resorted to some rather extraordinary measures to preserve backward compatibility, even going so far as to intentionally replicate bugs in special program-specific compatibility modes.
The GetWindowsVersionEx() API function is overly-complicated and notoriously easy to accidentally misuse. It appears that Microsoft finally had enough of that, and depreciated it. It will now actually only report accurately up to Windows 8.1, even in future operating systems, to ensure people can't accidentally or intentionally misuse them. They've been replaced with a set of "too simple to possibly misuse" functions that look like the following:
IsWindowsXPSP2OrGreater()
IsWindows7OrGreater()
IsWindows8Point1OrGreater()
There's one function for each major OS version + service pack, and it only checks in an equal-to-or-greater fashion, as you almost always want to do for broad compatibility checks. Notice also how you can't even check against future Windows versions until new API functions are released. I think now that MS has this safer API in place and enough time has passed since the initial problems were detected, they can get the internal version number back in sync with the more visible public number.
There's probably some marketing push in there, because I've seen people (wrongly) claim that since it was just a minor version bump in previous versions, it proved that there were only minor changes to the kernel, blah, blah... Maybe it bothered some particularly anal developers, but I doubt many really cared. It's just an arbitrary number to check at the end of the day, and we're sort of used to dealing with those.
Cool, I'll have to check that video out a bit later.
I actually got a chance to very briefly work with Alexey Pajitnov while contracting at Microsoft. Sadly, the project ended up being cancelled before release, but I'm glad I had met him, if only really for a very quick hello and handshake while I was introduced to the team.
He's correct that Microsoft was absolutely horrible at making games back then. My project was sort of a classic example of that sort of bureaucratic ineptitude. They actually hired people (some even relocating) for that project before someone had the bright idea of running the numbers on the project only to realize "Oh, we're not going to make any money on this title" and subsequently canned it. Oops.
Fortunately, I was a local, so it didn't really bother me all that much. Since I was just a contractor, my boss was cool enough to actually buy me an Xbox and a few games as "severance" out of his own pocket, as well as letting me sort of hang around and do nothing for the next few weeks to collect my paycheck while interviewing at a few different departments. I had always worked at very small videogame companies previous to this, so the amount of money they nonchalantly pissed down the drain was sort of eye-popping to me.
I'm glad Alexey made enough from royalties and working at MS so he's comfortable now. It would be rather unfair if all these companies made many millions off the game he designed and he didn't reap any rewards from it at all.
I'm not sure I necessarily agree with your conclusion. The free market produces a wide variety of products at nearly all price points, from extremely inexpensive to ridiculously high end products. Search through any app store and exclude the free crap and stuff with micropayments, and you'll still find a lot of great products.
It's like this with most categories of products I can think of. Just because McDonalds is highly profitable at serving low-cost, low-quality products doesn't mean you can't find a great steak dinner or high quality sushi meal. Sure, most people go for the cheap stuff on a day to day basis, but for nearly every type of product out there, you generally also have the option of paying extra for higher quality, or just for something different. The only time I can think of that this typically isn't the case is when we see a monopoly or cartel that's quashing innovation and breadth of services in a particular market segment (ISPs / cable companies, for instance).
You talk about "the best X" or "objectively inferior", but that's an impossible standard, because "best" is entirely subjective. People have different things they're looking for in products. Many people measure best completely based on price, which explains the glut of "free" apps. Some consider overall product quality or polish. Some people simple consider the *most* expensive to be best, which explains Monster cables. Other people consider aesthetics, or innovative features. Some people choose based on a brand name. How about the methodology or philosophy used to create it (i.e. free & open source software).
Anyhow, I think this news just signals a natural maturing of both a new market along with the regulation and rules of commerce within that new market. In other words, we see some sleazy developers trying to push the ethical boundaries of what can be done with in-app purchases, and you see a pushing back with regulations or customer complaints, forcing the app store curators to tighten things down a bit. This is a natural process within any marketplace, as we try to find an appropriate balance between free commerce and rules to protect consumer interests.
The fact that we're seeing pressure to be much more explicit about in-app purchases, and clearer rules about how those purchases can be authorized means the general public are starting to get wary of "free" apps. That's a good thing, right?
why can't we go back to the old shareware system?
Because unfortunately for all of us that loathe the free + in-app micropayment model, it actually makes money. There's no way an entire ecosystem built around this model would have sprung up if everyone hated it as much as I did.
There are many, many people who download and play a huge number of free games, and never bother paying, or perhaps pay for a game rarely. Many of those people (like kids) are time rich and cash poor, so don't blink as spending ridiculous hours grinding away. There are a much smaller number of people who get addicted to these games and spend a ridiculous amount of money on in-app purchases... far more than would have ever been paid if they had just purchased the game outright. Those people are the real targets.
My only hope is that people eventually grow tired of these sleazy tactics and refuse to participate. Then again, people still waste money at casinos and buying lottery tickets, so I'm not really holding my breath. I'll just continue supporting developers that sell their games up-front for a fixed price - a model I much prefer.
Because some people are actually better at their job than others? Hence, they are more valuable to the company, and can negotiate better compensation. Highly skilled work isn't like unskilled work, where you have a fixed set of job requirements which you either do or don't do properly.
As to why a great engineer should be paid less because they aren't as socially adept? You're right, they should be paid more, but how exactly would you choose to make this happen? Any solution I can think of would also stomp all over the ability of exceptional engineers to earn *more* than their less motivated colleagues (i.e. union pay grades). No thanks, not for me.