The purpose of the elastic pricing was to make sure that there was always a nice supply of drivers. Cap the prices, and you won't have as many drivers available to drive you around in the snow. Econ 101, right?
no, the crash reporting program simply reports stack traces that fault, thus bringing an application down, to Microsoft--sometimes the crashes are caused by windows, but the vast majority of the time, the crashes reported are caused by problems within the crashing app itself.
"plans to severely limit the quality of music that can be recorded as an MP3 file using software built into the next version of its personal-computer operating system, Windows XP, according to the report. "
That means that Windows Media Player that is built into Windows XP will only record MP3 at a lower quality bitrate. It DOES NOT mean that you can't use another tool to rip your 192bps MP3s
The Windows Media Player in Win2K/98/ME wont even record MP3s at all.
The only extra things I see are the installation of an exception handler and setting up the return. The size of all of the 'junk' that VB puts in there looks really big...if this were a real function, the relative size of the stuff that VB does for you should shrink to (near) insignifigance. Look at this C++ code:
And MFC code that does
int AddItUp(){
int i;
TRY{
i = 10 + 15;
}CATCH(CException,ex){
//nada
}
END_CATCH
return i;
}
looks like this:
>>how many CPU instructions does function x in VB (or java or eiffel or Smalltalk or perl... ) use ? What does the program look like when converted to assembly ? This is the kind of question that one can often answer very quickly in C++ or C code, and is impossible to answer with the other languages. <<
Ummmmm, actually, saying that you cant get at the disasm of VB code isnt true. You can compile VB5+ to native code, include debug info, and fire it up in your favorite debugger. Its regular old win32 code.
(It is also my favorite way to debug MTS components that die--just create a dump of the process, load it up in WinDBG and have at it <g>)
For example,
I have worked in IT jobs, and I have worked in non-IT jobs, and the stress of working as a programmer is nothing compared to some of the other crappy jobs I have had.
I Look at it this way: they pay me the big bucks to do what I used to do at home for free. As a matter of fact, I used to spend just about all of my disposable income on various software/hardware/gadgets. Now I get the company to pay for it.
And if your company demands 90 hour weeks, 24/7 pager duty, outrageous travel, etc, etc, do what I have done in the past....QUIT. You dont need it, and there is another job out there for a company that will pay you fairly and treat you well. You dont have to put up with it.
"Think about it, Corel would get a lot of kudos from the open source community, they could quickly have the best word processor for Linux and other (non MS) platforms and then they could start edging back in to the Windows market.
Corel's problem isnt that the linux community doenst like them, their problem is that they arent selling enough software/services/etc to pay the bills.
This virus does, in fact, replicate in just the manner you suggest: "you would have to be a COMPLETE idiot to run an unknown shell script"
That is EXACTLY what is happening. By default, Outlook will NOT run an attachment "automagically". It actually CANNOT be configured to run an attachment automatically, the user HAS to double click it.
The file is an ATTACHMENT. In order for it to run, the user has to doubleclick it. It would be like sending a unix user a perl script that had rm -rf ~/* in it.
Of course, your typical unix user probably wouldnt run such a file, but that isnt an application design issue.
Did you even look at the link? Especially where it says "The SAIC evaluation team has determined that Windows NT 4.0 with Service Pack 6a and the C2 Update as configured by the Trusted Facility Manual satisfies all the specified requirements of the criteria at class C2."
Also, when you evaluate an OS for C2, you do it on a specified set of hardware. For any OS.
Do you have a better EUROPEAN candidate? Winston Churchill, no question. (And I am American) Think about it, without Churchill: 1) England would not have gotten her troops to France in time to help stop the Germans at the Marne in 1914 (When WSC was the First Lord of the Admiralty) 2) The English welfare state would not look the same (WSC was an ally of Lloyd-George in getting the welfare state off of the ground) 3) Of course, England would probably have surrendered in 1940. Hitler would have won, and been able to invade Russia without any distractions.
Where is Microsoft mentioned in this story?
on
Profiling A Nation
·
· Score: 3
Is this more Microsoft bashing? The story mentions "Although relatively unknown in Australia, Acxiom is a $US2.5 billion company with more than 450 corporate clients, including IBM, American Express, Wal-Mart and AT&T."
Microsoft is not mentioned ANYWHERE in the story. Where is the MS connection, or is this a standard/. knee-jerk Anti-MS stuff?
"the average word-processing user has little use for things like column layout options; multi-editor, multi-version markup tools; flowcharting; advanced statistical analysis tools;and other niche functionalities."
I would sort of disagree. I would say that the average word processing user needs ONE of the things that you suggested: and everyone needs a different ONE.
I believe it is true that users only use 20% of the functionality of a wordprocessor: Everyone uses the same basic 10% (editor, spellchecker, etc), and everyone uses a different 10% for the rest.
...for anything other than playing? I mean, are all of the downloads that Oracle trumpets for real use, or is it from geeks (like me) who downloaded it to play around some?
They are talking Market Capitalization (num shares outstanding * price), where MSFT has (according to yahoo) 453.8Bn. AFAIK, the second biggest (according to market capitalization) is GE, with 438.4Bn.
One of the biggest reasons not to use Access in the middle-tier of anything is because it is not thread-safe at all. You will start seeing all sorts of AVs, etc if you try to use Access databases in a multi-threaded environment.
From what I understand, US users are not allowed to use PGPi because of patent restrictions on RSA, NOT because "in the US everyone was limited to 128bits". The US has a very 2 faced policy: use whatever you want (PGP Key lengths of 4096 bytes are not uncommon), you just cant take it out of the country.
But how is this any better than linux? You get cheap machines ($2K will get you a monster linux box, as opposed to a stripped down, full of proprietary components Sun box), plus all of that other stuff that you mentioned. Plus, you dont have to play Sun for Solaris.
That crappy software ships is, of course, no suprise. What I never can figure out is that in every article I see about this phenomenon, you see a line like this one:
"Management hadn't given the programmers nearly enough time to do a decent job, and it showed."
EVERY project I have worked on that turned into a disaster had this happen. 3 different companys, too. And every project that worked and was on time--happend because we did that old boring junk that no one likes to do:
1) Write Specs 2) Follow the spec. 3) When the marketing department trys to add stuff, you say "Is it in the spec?"--"Sure we can add it, but it is going to take X additional weeks". 4) Test.
Writing good software is not brain surgery. But you cant take shortcuts and expect everything to work fine.
And while it is fun to slam managment/marketing, programmers have to take blame too: lots of time we say "Yeah, it *WOULD* take a year for someone else to do it, but I am a programming genuis. I can have it done in a month!".
I predict that the registration rate will be extremely low, especially for the smaller drones that kids typically get for Christmas.
The purpose of the elastic pricing was to make sure that there was always a nice supply of drivers. Cap the prices, and you won't have as many drivers available to drive you around in the snow. Econ 101, right?
no, the crash reporting program simply reports stack traces that fault, thus bringing an application down, to Microsoft--sometimes the crashes are caused by windows, but the vast majority of the time, the crashes reported are caused by problems within the crashing app itself.
That assumes that windows is the problem, and not your application
Well, here is Microsoft getting higher performance, with half the processors (and lower price/tpmC).
a il .asp?id=102121601
http://www.tpc.org/tpcc/results/tpcc_result_det
It says
"plans to severely limit the quality of music that can be recorded as an MP3 file using software built into the next version of its personal-computer operating system , Windows XP, according to the report. "
That means that Windows Media Player that is built into Windows XP will only record MP3 at a lower quality bitrate. It DOES NOT mean that you can't use another tool to rip your 192bps MP3s
The Windows Media Player in Win2K/98/ME wont even record MP3s at all.
Yeah, but we arent comparing apples to apples. Does your code have the try/catch blocks in it?
:-)
Without the try/catch, optimized for size, VC looks like:
004010C3 6A 19 push 19h
004010C5 58 pop eax
004010C6 C3 ret
<g>
Cant get much smaller than that
<<Your post, for me, damns VB - was it intended to? >>
,ex){
//nada
e Class@@B
As I said in the original post,
>>Now, we can argue that the code does too much for you, (or to you, depending on how you feel), but it IS real code.<<
And the code I ran in the debugger had all optimizations disabled. Optimized, the code looks like:
Form1::AddItUp:
00401A62 55 push ebp
00401A63 8BEC mov ebp,esp
00401A65 51 push ecx
00401A66 51 push ecx
00401A67 68C6104000 push offset ___vbaExceptHandler
00401A6C 64A100000000 mov eax,fs:[00000000]
00401A72 50 push eax
00401A73 64892500000000 mov dword ptr fs:[0],esp
00401A7A 83EC28 sub esp,28h
00401A7D 53 push ebx
00401A7E 56 push esi
00401A7F 57 push edi
00401A80 8965F8 mov dword ptr [ebp-8],esp
00401A83 C745FCB0104000 mov dword ptr [ebp-4],offset __imp___CIexp+3Ch
00401A8A 8B450C mov eax,dword ptr [AddItUp]
00401A8D 8365E000 and dword ptr [AddItUp],0
00401A91 8D55CC lea edx,[unnamed_var1]
00401A94 8D4DE0 lea ecx,[AddItUp]
00401A97 832000 and dword ptr [eax],0
00401A9A 66C745D41900 mov word ptr [ebp-2Ch],19h
00401AA0 C745CC02000000 mov dword ptr [unnamed_var1],2
00401AA7 E8A4F6FFFF call ___vbaVarMove
00401AAC 68BD1A4000 push offset $L61
00401AB1 EB09 jmp $L56
$L35:
00401AB3 8D4DE0 lea ecx,[AddItUp]
00401AB6 E89BF6FFFF call @__vbaFreeVar
00401ABB C3 ret
$L56:
00401ABC C3 ret
$L61:
00401ABD 8B7D0C mov edi,dword ptr [AddItUp]
00401AC0 8D75E0 lea esi,[AddItUp]
00401AC3 A5 movs dword ptr [edi],dword ptr [esi]
00401AC4 A5 movs dword ptr [edi],dword ptr [esi]
00401AC5 8B4DF0 mov ecx,dword ptr [ebp-10h]
00401AC8 33C0 xor eax,eax
00401ACA A5 movs dword ptr [edi],dword ptr [esi]
00401ACB A5 movs dword ptr [edi],dword ptr [esi]
00401ACC 5F pop edi
00401ACD 5E pop esi
00401ACE 64890D00000000 mov dword ptr fs:[0],ecx
00401AD5 5B pop ebx
00401AD6 C9 leave
00401AD7 C20800 ret 8
The only extra things I see are the installation of an exception handler and setting up the return. The size of all of the 'junk' that VB puts in there looks really big...if this were a real function, the relative size of the stuff that VB does for you should shrink to (near) insignifigance. Look at this C++ code:
And MFC code that does
int AddItUp(){
int i;
TRY{
i = 10 + 15;
}CATCH(CException
}
END_CATCH
return i;
}
looks like this:
44: int AddItUp(){
00401530 55 push ebp
00401531 8B EC mov ebp,esp
00401533 6A FF push 0FFh
00401535 68 89 2A 40 00 push offset __ehhandler$?AddItUp@@YAHXZ (00402a89)
0040153A 64 A1 00 00 00 00 mov eax,fs:[00000000]
00401540 50 push eax
00401541 64 89 25 00 00 00 00 mov dword ptr fs:[0],esp
00401548 51 push ecx
00401549 83 EC 50 sub esp,50h
0040154C 53 push ebx
0040154D 56 push esi
0040154E 57 push edi
0040154F 89 65 F0 mov dword ptr [ebp-10h],esp
00401552 8D 7D A0 lea edi,[ebp-60h]
00401555 B9 14 00 00 00 mov ecx,14h
0040155A B8 CC CC CC CC mov eax,0CCCCCCCCh
0040155F F3 AB rep stos dword ptr [edi]
00401561 8D 4D E4 lea ecx,[_afxExceptionLink]
00401564 E8 39 01 00 00 call AFX_EXCEPTION_LINK::AFX_EXCEPTION_LINK (004016a2)
00401569 C7 45 FC 00 00 00 00 mov dword ptr [ebp-4],0
00401570 C6 45 FC 01 mov byte ptr [ebp-4],1
00401574 C7 45 EC 19 00 00 00 mov dword ptr [ebp-14h],19h
0040157B EB 3E jmp __tryend$?AddItUp@@YAHXZ$1 (004015bb)
0040157D A1 2C 62 41 00 mov eax,[__imp_?classCException@CException@@2UCRuntim
00401582 50 push eax
00401583 8B 4D E0 mov ecx,dword ptr [ex]
00401586 E8 11 01 00 00 call CObject::IsKindOf (0040169c)
0040158B 85 C0 test eax,eax
0040158D 75 1A jne __catch$?AddItUp@@YAHXZ$0+2Ch (004015a9)
0040158F 0F BF 0D 78 55 41 00 movsx ecx,word ptr [__LINE__Var (00415578)]
00401596 83 C1 06 add ecx,6
00401599 51 push ecx
0040159A 68 30 55 41 00 push offset THIS_FILE (00415530)
0040159F E8 F2 00 00 00 call AfxAssertFailedLine (00401696)
004015A4 85 C0 test eax,eax
004015A6 74 01 je __catch$?AddItUp@@YAHXZ$0+2Ch (004015a9)
004015A8 CC int 3
004015A9 33 D2 xor edx,edx
004015AB 85 D2 test edx,edx
004015AD 75 CE jne __catch$?AddItUp@@YAHXZ$0 (0040157d)
004015AF 8B 45 E0 mov eax,dword ptr [ex]
004015B2 89 45 E8 mov dword ptr [ebp-18h],eax
004015B5 B8 BB 15 40 00 mov eax,offset __tryend$?AddItUp@@YAHXZ$1 (004015bb)
004015BA C3 ret
004015BB C7 45 FC FF FF FF FF mov dword ptr [ebp-4],0FFFFFFFFh
004015C2 8D 4D E4 lea ecx,[_afxExceptionLink]
004015C5 E8 3B FA FF FF call @ILT+0(AFX_EXCEPTION_LINK::~AFX_EXCEPTION_LINK) (00401005)
004015CA 8B 45 EC mov eax,dword ptr [ebp-14h]
004015CD 8B 4D F4 mov ecx,dword ptr [ebp-0Ch]
004015D0 64 89 0D 00 00 00 00 mov dword ptr fs:[0],ecx
004015D7 5F pop edi
004015D8 5E pop esi
004015D9 5B pop ebx
004015DA 83 C4 60 add esp,60h
004015DD 3B EC cmp ebp,esp
004015DF E8 CA 00 00 00 call _chkesp (004016ae)
004015E4 8B E5 mov esp,ebp
004015E6 5D pop ebp
004015E7 C3 ret
So no, I guess I dont think too much bad about VB.
>>how many CPU instructions does function x in VB (or java or eiffel or Smalltalk or perl ... ) use ? What does the program look like when converted to assembly ? This is the kind of question that one can often answer very quickly in C++ or C code, and is impossible to answer with the other languages. <<
Ummmmm, actually, saying that you cant get at the disasm of VB code isnt true. You can compile VB5+ to native code, include debug info, and fire it up in your favorite debugger. Its regular old win32 code.
(It is also my favorite way to debug MTS components that die--just create a dump of the process, load it up in WinDBG and have at it <g>)
For example,
Private Function AddItUp()
Dim x As Integer
x = 10 + 15
AddItUp = x
End Function
Translates to:
Form1::AddItUp:
00401A6F 55 push ebp
00401A70 8BEC mov ebp,esp
00401A72 51 push ecx
00401A73 51 push ecx
00401A74 68C6104000 push offset ___vbaExceptHandler
00401A79 64A100000000 mov eax,fs:[00000000]
00401A7F 50 push eax
00401A80 64892500000000 mov dword ptr fs:[0],esp
00401A87 6A28 push 28h
00401A89 58 pop eax
00401A8A E831F6FFFF call VB@TEXT
00401A8F 53 push ebx
00401A90 56 push esi
00401A91 57 push edi
00401A92 8965F8 mov dword ptr [ebp-8],esp
00401A95 C745FCB0104000 mov dword ptr [ebp-4],offset __imp___CIexp+3Ch
00401A9C 8B450C mov eax,dword ptr [AddItUp]
00401A9F 832000 and dword ptr [eax],0
00401AA2 66C745DC1900 mov word ptr [x],19h
00401AA8 668B45DC mov ax,word ptr [x]
00401AAC 668945D4 mov word ptr [ebp-2Ch],ax
00401AB0 C745CC02000000 mov dword ptr [unnamed_var1],2
00401AB7 8D55CC lea edx,[unnamed_var1]
00401ABA 8D4DE0 lea ecx,[AddItUp]
00401ABD E88EF6FFFF call @__vbaVarMove
00401AC2 68D31A4000 push offset $L62
00401AC7 EB09 jmp $L57
$L35:
00401AC9 8D4DE0 lea ecx,[AddItUp]
00401ACC E885F6FFFF call @__vbaFreeVar
00401AD1 C3 ret
$L57:
00401AD2 C3 ret
$L62:
00401AD3 8D75E0 lea esi,[AddItUp]
00401AD6 8B7D0C mov edi,dword ptr [AddItUp]
00401AD9 A5 movs dword ptr [edi],dword ptr [esi]
00401ADA A5 movs dword ptr [edi],dword ptr [esi]
00401ADB A5 movs dword ptr [edi],dword ptr [esi]
00401ADC A5 movs dword ptr [edi],dword ptr [esi]
00401ADD 33C0 xor eax,eax
00401ADF 8B4DF0 mov ecx,dword ptr [ebp-10h]
00401AE2 64890D00000000 mov dword ptr fs:[0],ecx
00401AE9 5F pop edi
00401AEA 5E pop esi
00401AEB 5B pop ebx
00401AEC C9 leave
00401AED C20800 ret 8
Now, we can argue that the code does too much for you, (or to you, depending on how you feel), but it IS real code.
I have worked in IT jobs, and I have worked in non-IT jobs, and the stress of working as a programmer is nothing compared to some of the other crappy jobs I have had. I Look at it this way: they pay me the big bucks to do what I used to do at home for free. As a matter of fact, I used to spend just about all of my disposable income on various software/hardware/gadgets. Now I get the company to pay for it. And if your company demands 90 hour weeks, 24/7 pager duty, outrageous travel, etc, etc, do what I have done in the past....QUIT. You dont need it, and there is another job out there for a company that will pay you fairly and treat you well. You dont have to put up with it.
"Think about it, Corel would get a lot of kudos from the open source community, they could quickly have the best word processor for Linux and other (non MS) platforms and then they could start edging back in to the Windows market.
Corel's problem isnt that the linux community doenst like them, their problem is that they arent selling enough software/services/etc to pay the bills.
This virus does, in fact, replicate in just the manner you suggest: "you would have to be a COMPLETE idiot to run an unknown shell script"
That is EXACTLY what is happening. By default, Outlook will NOT run an attachment "automagically". It actually CANNOT be configured to run an attachment automatically, the user HAS to double click it.
Not true.
The file is an ATTACHMENT. In order for it to run, the user has to doubleclick it. It would be like sending a unix user a perl script that had rm -rf ~/* in it.
Of course, your typical unix user probably wouldnt run such a file, but that isnt an application design issue.
Did you even look at the link? Especially where it says "The SAIC evaluation team has determined that Windows NT 4.0 with Service Pack 6a and the C2 Update as configured by the Trusted Facility Manual satisfies all the specified requirements of the criteria at class C2."
Also, when you evaluate an OS for C2, you do it on a specified set of hardware. For any OS.
Do you have a better EUROPEAN candidate? Winston Churchill, no question. (And I am American) Think about it, without Churchill: 1) England would not have gotten her troops to France in time to help stop the Germans at the Marne in 1914 (When WSC was the First Lord of the Admiralty) 2) The English welfare state would not look the same (WSC was an ally of Lloyd-George in getting the welfare state off of the ground) 3) Of course, England would probably have surrendered in 1940. Hitler would have won, and been able to invade Russia without any distractions.
Is this more Microsoft bashing? The story mentions "Although relatively unknown in Australia, Acxiom is a $US2.5 billion company with more than 450 corporate clients, including IBM, American Express, Wal-Mart and AT&T."
/. knee-jerk Anti-MS stuff?
Microsoft is not mentioned ANYWHERE in the story. Where is the MS connection, or is this a standard
If we ban the PIII because of the PSN, lets go for banning ethernet cards (MAC addresses), too.
"the average word-processing user has little use for things like column layout options; multi-editor, multi-version markup tools; flowcharting; advanced statistical analysis tools;and other niche functionalities."
I would sort of disagree. I would say that the average word processing user needs ONE of the things that you suggested: and everyone needs a different ONE.
I believe it is true that users only use 20% of the functionality of a wordprocessor: Everyone uses the same basic 10% (editor, spellchecker, etc), and everyone uses a different 10% for the rest.
...for anything other than playing? I mean, are all of the downloads that Oracle trumpets for real use, or is it from geeks (like me) who downloaded it to play around some?
They are talking Market Capitalization (num shares outstanding * price), where MSFT has (according to yahoo) 453.8Bn. AFAIK, the second biggest (according to market capitalization) is GE, with 438.4Bn.
One of the biggest reasons not to use Access in the middle-tier of anything is because it is not thread-safe at all. You will start seeing all sorts of AVs, etc if you try to use Access databases in a multi-threaded environment.
An empty project, with one bas module and the code:
Option Explicit
Sub Main()
MsgBox "Hello World"
End Sub
produces and exe that is 16,384 bytes.
In contrast, the following C code:
#include
void main(){
printf("Hello World\n");
}
creates an exe of 28,672 bytes.
Note that there are no optimizations to try to make anything smaller, or anything like that; just a quick test.
From what I understand, US users are not allowed to use PGPi because of patent restrictions on RSA, NOT because "in the US everyone was limited to 128bits". The US has a very 2 faced policy: use whatever you want (PGP Key lengths of 4096 bytes are not uncommon), you just cant take it out of the country.
But how is this any better than linux? You get cheap machines ($2K will get you a monster linux box, as opposed to a stripped down, full of proprietary components Sun box), plus all of that other stuff that you mentioned. Plus, you dont have to play Sun for Solaris.
That crappy software ships is, of course, no suprise. What I never can figure out is that in every article I see about this phenomenon, you see a line like this one:
"Management hadn't given the programmers nearly enough time to do a decent job, and it showed."
EVERY project I have worked on that turned into a disaster had this happen. 3 different companys, too. And every project that worked and was on time--happend because we did that old boring junk that no one likes to do:
1) Write Specs
2) Follow the spec.
3) When the marketing department trys to add stuff, you say "Is it in the spec?"--"Sure we can add it, but it is going to take X additional weeks".
4) Test.
Writing good software is not brain surgery. But you cant take shortcuts and expect everything to work fine.
And while it is fun to slam managment/marketing, programmers have to take blame too: lots of time we say "Yeah, it *WOULD* take a year for someone else to do it, but I am a programming genuis. I can have it done in a month!".