I remember VMware implementing this several months ago. It was experimental, I don't know about it's status right now.
Ummm... actually, it's been a feature in VMWare for several years... It was experimental in VMWare 5.0 but it has been standard in the past three major releases: 5.5, 6.0 and 6.5. FWIW, VMWare tends to do major updates in 0.5 increments and you can go from 5.0->5.5 and 6.0->6.5 for free... It's a nice way for only paying for half your major upgrades. Minor upgrades are a smaller decimal value added on (i.e. 5.51, 5.52, etc) and those are always free.
Back in the days when Windows 95, the OS constantly ate itself. Blue screens were common. Rebooting was a constant need when things started going south. Reinstalling the OS became habit for even the least technical of computer users
The problem is that back then, you reinstalled the OS and and your apps and you were mostly good to go. Now you have to install OS, apps, PLUS ANTIVIRUS (if you don't want to be PWNED in 3 seconds), etc. And *THEN* let everything update over the internet. The OS updates alone take about 20 reboots and 5-6 hours of downloading and installing.
Quite a few of the "performance improvements" in Windows 7 are hard to benchmark using standard methods but are immediately "felt" by a "casual end user observation" and this is what makes Windows 7 such an important upgrade.
One of the main improvements is the Windows UI responsiveness. The Windows 7 team instrumented their builds with timing hooks and profiled to see what caused stalls. By eliminating these stalls, they made common daily operations like opening and moving windows, bringing up the start menu, tabbing between programs, copying files, etc. faster. Actually, removing the stalls didn't even even make them so much faster but they did eliminate many WORST CASE performance scenarios in Vista where you would have stalls of several seconds trying to do basic UI operations. It makes the OS feel significantly faster when you don't have noticeable stalls all over the place.
Sorry small typo above -- the 9% and 7% should be swapped. It's 9% PS3 owners and 7% BluRay StandAlones. However, all the other points I made remain true.
Furthermore, they do not count PS3's as BluRay players. 11% of American households own "HD DVD". 9% own BluRay Stand-Alone Players. 7% own PS3's. Since the PS3 is a BluRay player as well and most people who have a PS3 connect it via HDMI to a large screen TV, it is really 16% for BluRay players (stand-alone + PS3).
FWIW, the PS3 works really well as a BluRay / Upscaling DVD player provided you spend the extra $30 for the bluetooth remote. Using the dualshock controller for movies totally sucks.
When I buy a game, I assume that I'd be getting everything important unlocked out of the box. Unfortunately, I have to "earn" it, which just pisses me off even further. I don't play games to "defeat" and "earn" things
You really don't want to buy "Little Big Planet" for PS3 then. The game starts with all levels and items locked except the introductory level and you have to earn EVERYTHING in the game.
That said, it's one of the best games I've played in years. Unlocking and discovering new things can be an integral and fun part of a game.
The best part is that this isn't even an article, just a random slashdot user musing that SSD's aren't worth it and a review of two of the newest high performance disk drives.
Strike "newest" from there. The bad link points to an article that is nearly a year old.
AV is inherently a flawed idea... As you've found out, not every AV picks up every *known* piece of malware, and none of them will pick up new malware that has only just been developed (and people are developing new stuff all the time)...
That's one reason why application whitelisting would work better. Only allow "good" known apps with a valid signature or saved CRC of some sort are allowed to execute. Any unknown apps either get canned, or request the user's permission to run -- these unknown apps can be added to the whitelist by the user.
Of course, you still have to worry about security flaws in the "good" apps allowing remote execution / etc so then you'd want to combine the whitelisting with some sort of sandboxing / limiting privileges on apps.
Not if phone manufacturers are dissuaded from adding this feature because they would either have to pay Apple royalties or risk being sued by them.
There are plenty of patents on airbags, stability control, intermittent wipers, antilock breaks, etc. for the safety features on cars. That doesn't stop manufacturers from offering those features.
How can you say that with a straight face? The difference between for-pay and free is huge. And rebranding can make a big difference-- look at the recent success of Bing, for instance.
You forgot to mention bundling. If MS includes Morro by default with Windows 7, then they're instantly going to have the largest AV/AntiMalware share on Windows 7. Just like IE and the browser war. Anyone who wants to compete with free and bundled has to offer a similar product for free -- don't believe me? The last time anyone actually paid for a browser on Windows was probably about 6 months after IE came out for free.
I've worked on VC++6 through VC++2008. I've run into a very large number of non-compliance issues. In a lot of cases MSVC++ has non-compliance that is more "relaxed" than the standard and lets you write sloppier code.
In other cases, it just does things wrong. For example, the standard on empty struct inheritance specifies that separate structs of the same type should yield unique addresses. In the following code, the two addresses printed should be different in a standards compliant compiler (Intel or GCC). MSVC++ ends up printing the same number twice.
class a { public: void awork() {} };
class b : public a { public: int bdata; };
class c : public a { public: b cdata; };
c test;
a *pca=&(test);
a *pcb=&(test.cdata);
printf("Offset of c::a %d\n",size_t(pca));
printf("Offset of c.b::a %d\n",size_t(pcb));
To answer the question: Visual C++ Express is the one. Lightweight IDE, best compiler, most standards compliant, best debugger... it's a free download so don't waste time looking at anything else.
Lightweight IDE - it may only be a 3MB installer, but it downloads a lot more to install on the fly and it can chew up plenty of resources for any non-trivial code bases. It often stalls out updating Intellisense on a project of any appreciable size. Part of the reason it's a smaller install is all the help and docs are online which makes doing work without an active internet connection a PIA (i.e. laptop on an airplane).
best compiler - Nope. Not even close. Intel compiler is generally 10-20% faster code than MSVC++.
most standards compliant - I don't even know how to answer this other than to say I'm hoping you are joking. MSVC++ doesn't even handle empty-struct inheritance according to the C++ standards. Oh, and how about variables defined in a for-statement leaking out of their scope? For an idea of just how non-standards compliant MSVC++ is, take a look at the Boost source code and then check out how much of the code is actually work-arounds for bugs / non-standard features in MSVC++. Both GCC and Intel compilers come much closer to the C++ standard than MSVC++.
best debugger - You got me there. Visual Studio (Express) does have a pretty well polished and easy-to-use debugger. I guess I can give you one out of four.
According to the article, the people were drinking 3 to 7 LITERS a day. That is a lot.
If you drank 7 liters of pure water a day you would probably suffer from low potassium as a result of electrolytes being flushed our in your urine. The US-RDA for water is 2 liters of water (8 cups) per day.
Not to mention, eating 2-3 bananas over the course of the day would probably correct the problem.
Seriously though, how is it supposed to make your code safer if you pass the size you think your destination buffer is?
The safe versions use templates to automatically determine the size of destination buffers for arrays that are not pointers. This solves the problem automatically for a large number of cases.
Also, what happened to the __restrict keyword? It's strangely absent from the memcpy_s function declaration.
There is no need to pollute your interface with __restrict in the function declaration. Even if __restrict is not in the function declaration, it's possible to simply copy the pointer to a __restrict pointer in the function body itself and the compiler can generate equally optimized code in the function. FWIW, __restrict won't actually prevent you from passing in overlapping buffers (with unpredictable results) so putting it there would at most give you a false sense of security.
Neither of those were covered in any CS class I attended. Seriously; CS classes don't teach every algorithm ever invented.
Wow, now I'm frightened by CS programs. When I went to college in twenty years ago (at UW-Madison in 1989), I took a basic programming class in my first semester and a very elementary "introduction to algorithms" class in my second semester that used the wonderful CLR(S) book.
Sure we spent more time analyzing bubble sort and quick sort as O(N^2) and O(N Lg N) sorts but at least we covered the concept of O(N) sorting. I can't believe that a current introductory algorithms class wouldn't even mention O(N) sorting algorithms -- especially since counting sort and radix sort are both trivially easy to implement.
How is it that CS students are graduating now without learning concepts that were considered basic enough to teach in an introductory freshman class when I went to school? Then again, maybe our college CS programs have gone that far downhill. The kid mentioned didn't even *BELIEVE* that O(N) sorting *EXISTED* !!!
After about an hour of discussion and analysis, we came up with an algorithm that ran in sub-linear time. Now's the time for the CS kids to blurt, "ZOMG, but you can't sort in less than O(nlg(n)!".
The CS kid didn't pay attention in class when they covered O(N) sorts like counting sort and radix sort. Of course, both of those run in linear time.
The fact that you got sub-linear time on your sort meant that your working set was structured such that you could ignore a significant amount of the data (i.e. not resorting an already sorted list). There's no way to actually step through all items in a data set in sub-linear time -- the only way it can be done is through an incomplete data iteration that ignores a portion of the working set.
Another thing... you push forward to go forward and pull back to slow down. You also have forward momentum when moving forward. Assuming you're about to smack into something and want to slow down, pulling back on the controls is fighting momentum. If you accidentally do hit something (say a pedestrian) and are pushed forward by your momentum, you'll end up continuing to try to run over the poor fellow after you've knocked him down.
It'd probably have been smarter to have pedal controls (accelerate / break) or some form of breaking independent from the push/pull control.
Agreed. People who will sit and tell me with a straight face that Vista, in their experience, is unstable are either very unlucky, or liars. Windows stopped being generally unstable years ago. Get with the times.
By years ago do you mean 2007 ? Because millions of unlucky Vista owners consistently blue screening due to NVidia drivers doesn't exactly sound rock solid to me.
Exactly, I took comp sci and electrical engineering in college but I started writing programs in Basic on Apple II's in high school for fun and continued to work on non-class related programming side projects. I've been programming now professionally for nearly 20 years and I still do side projects to learn new languages and techniques and to keep my skillset sharp.
If you're not doing any programming outside of your class work, you probably don't enjoy the field and then you're not really going to ever be a great programmer.
Oh, and FWIW, it's best to learn several languages -- for example, Java / C# / C++ (and even C) are all fairly similar so they're easy to learn together. Once you learn one of them well, the others should come much more easily.
I remember VMware implementing this several months ago. It was experimental, I don't know about it's status right now.
Ummm... actually, it's been a feature in VMWare for several years... It was experimental in VMWare 5.0 but it has been standard in the past three major releases: 5.5, 6.0 and 6.5. FWIW, VMWare tends to do major updates in 0.5 increments and you can go from 5.0->5.5 and 6.0->6.5 for free... It's a nice way for only paying for half your major upgrades. Minor upgrades are a smaller decimal value added on (i.e. 5.51, 5.52, etc) and those are always free.
Back in the days when Windows 95, the OS constantly ate itself. Blue screens were common. Rebooting was a constant need when things started going south. Reinstalling the OS became habit for even the least technical of computer users
The problem is that back then, you reinstalled the OS and and your apps and you were mostly good to go. Now you have to install OS, apps, PLUS ANTIVIRUS (if you don't want to be PWNED in 3 seconds), etc. And *THEN* let everything update over the internet. The OS updates alone take about 20 reboots and 5-6 hours of downloading and installing.
Casual end user observations may be misguided
Quite a few of the "performance improvements" in Windows 7 are hard to benchmark using standard methods but are immediately "felt" by a "casual end user observation" and this is what makes Windows 7 such an important upgrade.
One of the main improvements is the Windows UI responsiveness. The Windows 7 team instrumented their builds with timing hooks and profiled to see what caused stalls. By eliminating these stalls, they made common daily operations like opening and moving windows, bringing up the start menu, tabbing between programs, copying files, etc. faster. Actually, removing the stalls didn't even even make them so much faster but they did eliminate many WORST CASE performance scenarios in Vista where you would have stalls of several seconds trying to do basic UI operations. It makes the OS feel significantly faster when you don't have noticeable stalls all over the place.
Sorry small typo above -- the 9% and 7% should be swapped. It's 9% PS3 owners and 7% BluRay StandAlones. However, all the other points I made remain true.
Furthermore, they do not count PS3's as BluRay players. 11% of American households own "HD DVD". 9% own BluRay Stand-Alone Players. 7% own PS3's. Since the PS3 is a BluRay player as well and most people who have a PS3 connect it via HDMI to a large screen TV, it is really 16% for BluRay players (stand-alone + PS3).
FWIW, the PS3 works really well as a BluRay / Upscaling DVD player provided you spend the extra $30 for the bluetooth remote. Using the dualshock controller for movies totally sucks.
When I buy a game, I assume that I'd be getting everything important unlocked out of the box. Unfortunately, I have to "earn" it, which just pisses me off even further. I don't play games to "defeat" and "earn" things
You really don't want to buy "Little Big Planet" for PS3 then. The game starts with all levels and items locked except the introductory level and you have to earn EVERYTHING in the game.
That said, it's one of the best games I've played in years. Unlocking and discovering new things can be an integral and fun part of a game.
The best part is that this isn't even an article, just a random slashdot user musing that SSD's aren't worth it and a review of two of the newest high performance disk drives.
Strike "newest" from there. The bad link points to an article that is nearly a year old.
AV is inherently a flawed idea... As you've found out, not every AV picks up every *known* piece of malware, and none of them will pick up new malware that has only just been developed (and people are developing new stuff all the time)...
That's one reason why application whitelisting would work better. Only allow "good" known apps with a valid signature or saved CRC of some sort are allowed to execute. Any unknown apps either get canned, or request the user's permission to run -- these unknown apps can be added to the whitelist by the user.
Of course, you still have to worry about security flaws in the "good" apps allowing remote execution / etc so then you'd want to combine the whitelisting with some sort of sandboxing / limiting privileges on apps.
Not if phone manufacturers are dissuaded from adding this feature because they would either have to pay Apple royalties or risk being sued by them.
There are plenty of patents on airbags, stability control, intermittent wipers, antilock breaks, etc. for the safety features on cars. That doesn't stop manufacturers from offering those features.
How can you say that with a straight face? The difference between for-pay and free is huge. And rebranding can make a big difference-- look at the recent success of Bing, for instance.
You forgot to mention bundling. If MS includes Morro by default with Windows 7, then they're instantly going to have the largest AV/AntiMalware share on Windows 7. Just like IE and the browser war. Anyone who wants to compete with free and bundled has to offer a similar product for free -- don't believe me? The last time anyone actually paid for a browser on Windows was probably about 6 months after IE came out for free.
I've worked on VC++6 through VC++2008. I've run into a very large number of non-compliance issues. In a lot of cases MSVC++ has non-compliance that is more "relaxed" than the standard and lets you write sloppier code.
In other cases, it just does things wrong. For example, the standard on empty struct inheritance specifies that separate structs of the same type should yield unique addresses. In the following code, the two addresses printed should be different in a standards compliant compiler (Intel or GCC). MSVC++ ends up printing the same number twice.
class a { public: void awork() {} };
class b : public a { public: int bdata; };
class c : public a { public: b cdata; };
c test;
a *pca=&(test);
a *pcb=&(test.cdata);
printf("Offset of c::a %d\n",size_t(pca));
printf("Offset of c.b::a %d\n",size_t(pcb));
To answer the question: Visual C++ Express is the one. Lightweight IDE, best compiler, most standards compliant, best debugger ... it's a free download so don't waste time looking at anything else.
Lightweight IDE - it may only be a 3MB installer, but it downloads a lot more to install on the fly and it can chew up plenty of resources for any non-trivial code bases. It often stalls out updating Intellisense on a project of any appreciable size. Part of the reason it's a smaller install is all the help and docs are online which makes doing work without an active internet connection a PIA (i.e. laptop on an airplane).
best compiler - Nope. Not even close. Intel compiler is generally 10-20% faster code than MSVC++.
most standards compliant - I don't even know how to answer this other than to say I'm hoping you are joking. MSVC++ doesn't even handle empty-struct inheritance according to the C++ standards. Oh, and how about variables defined in a for-statement leaking out of their scope? For an idea of just how non-standards compliant MSVC++ is, take a look at the Boost source code and then check out how much of the code is actually work-arounds for bugs / non-standard features in MSVC++. Both GCC and Intel compilers come much closer to the C++ standard than MSVC++.
best debugger - You got me there. Visual Studio (Express) does have a pretty well polished and easy-to-use debugger. I guess I can give you one out of four.
According to the article, the people were drinking 3 to 7 LITERS a day. That is a lot.
If you drank 7 liters of pure water a day you would probably suffer from low potassium as a result of electrolytes being flushed our in your urine. The US-RDA for water is 2 liters of water (8 cups) per day.
Not to mention, eating 2-3 bananas over the course of the day would probably correct the problem.
Seriously though, how is it supposed to make your code safer if you pass the size you think your destination buffer is?
The safe versions use templates to automatically determine the size of destination buffers for arrays that are not pointers. This solves the problem automatically for a large number of cases.
Also, what happened to the __restrict keyword? It's strangely absent from the memcpy_s function declaration.
There is no need to pollute your interface with __restrict in the function declaration. Even if __restrict is not in the function declaration, it's possible to simply copy the pointer to a __restrict pointer in the function body itself and the compiler can generate equally optimized code in the function. FWIW, __restrict won't actually prevent you from passing in overlapping buffers (with unpredictable results) so putting it there would at most give you a false sense of security.
Neither of those were covered in any CS class I attended. Seriously; CS classes don't teach every algorithm ever invented.
Wow, now I'm frightened by CS programs. When I went to college in twenty years ago (at UW-Madison in 1989), I took a basic programming class in my first semester and a very elementary "introduction to algorithms" class in my second semester that used the wonderful CLR(S) book.
Sure we spent more time analyzing bubble sort and quick sort as O(N^2) and O(N Lg N) sorts but at least we covered the concept of O(N) sorting. I can't believe that a current introductory algorithms class wouldn't even mention O(N) sorting algorithms -- especially since counting sort and radix sort are both trivially easy to implement.
How is it that CS students are graduating now without learning concepts that were considered basic enough to teach in an introductory freshman class when I went to school? Then again, maybe our college CS programs have gone that far downhill. The kid mentioned didn't even *BELIEVE* that O(N) sorting *EXISTED* !!!
Erm, why the hell not? Good programmers, even the best programmers (in fact especially the best programmers), will just use qsort()
Remind me to never let you use a linked-list that needs to be sorted if qsort() is the only hammer you know how to use.
After about an hour of discussion and analysis, we came up with an algorithm that ran in sub-linear time. Now's the time for the CS kids to blurt, "ZOMG, but you can't sort in less than O(nlg(n)!".
The CS kid didn't pay attention in class when they covered O(N) sorts like counting sort and radix sort. Of course, both of those run in linear time.
The fact that you got sub-linear time on your sort meant that your working set was structured such that you could ignore a significant amount of the data (i.e. not resorting an already sorted list). There's no way to actually step through all items in a data set in sub-linear time -- the only way it can be done is through an incomplete data iteration that ignores a portion of the working set.
As someone who likes autorun, my reaction to this is "yeah, because I like doing work myself that a computer is good at".
I think Vista's "always autoplay, never autorun" (if I got those names right) scheme works really well.
Autorun does work really well... at installing rootkits on your machine from Sony/BMG CD's.
There are many legitimate reasons to fear religion, not the least of which is the way in which it warps the minds of the young.
There are plenty of reason both current and historic to fear religions which were much more immediate than the long term warping of childrens minds -- for example: stoning, burning, hanging, public flogging, child sex abuse cover-ups, ritual mutilation and torture.
Take them to IKEA -- they have a CFL disposal bin at the store entrance. Also, Walmart has been doing regular CFL disposal drives.
Another thing... you push forward to go forward and pull back to slow down. You also have forward momentum when moving forward. Assuming you're about to smack into something and want to slow down, pulling back on the controls is fighting momentum. If you accidentally do hit something (say a pedestrian) and are pushed forward by your momentum, you'll end up continuing to try to run over the poor fellow after you've knocked him down.
It'd probably have been smarter to have pedal controls (accelerate / break) or some form of breaking independent from the push/pull control.
Agreed. People who will sit and tell me with a straight face that Vista, in their experience, is unstable are either very unlucky, or liars. Windows stopped being generally unstable years ago. Get with the times.
By years ago do you mean 2007 ? Because millions of unlucky Vista owners consistently blue screening due to NVidia drivers doesn't exactly sound rock solid to me.
Just FYI, to make paragraphs in a slashdot comment use the "p" tag for html. You can also use the "br" tag to insert line breaks.
Exactly, I took comp sci and electrical engineering in college but I started writing programs in Basic on Apple II's in high school for fun and continued to work on non-class related programming side projects. I've been programming now professionally for nearly 20 years and I still do side projects to learn new languages and techniques and to keep my skillset sharp.
If you're not doing any programming outside of your class work, you probably don't enjoy the field and then you're not really going to ever be a great programmer.
Oh, and FWIW, it's best to learn several languages -- for example, Java / C# / C++ (and even C) are all fairly similar so they're easy to learn together. Once you learn one of them well, the others should come much more easily.