Windows 7 rant
A couple of weeks ago I purchased a Sony touchscreen computer because I like the idea of using a finger to control things on a screen. I've used tablet PC's since 1993 and a pen is my preferred interface to a GUI instead of a mouse. I'm not a big fan of windoze since M$ has been progressively crippling their OS's since win NT came out but I was convinced to try windoze 7 (W7) as "it's better than Vista".
While I like Linux in principle, my Linux boxes aren't used for my everyday software development since I decided that I really liked VB in 1993 (before that I was using Hypercard on the Mac but it was s l o w on my Mac+). VB6 was the last version of VB that M$ put out and also the last IDE that I bought from them. I like VB6 and it suits my needs perfectly. It produces code which runs fast enough that I rarely have to use assembly language routines to speed up critical sections. One of the benefits of M$ bloatware is that it has made the average desktop of today far superior to the supercomputers of 20 years ago as it takes this much computational power to run this monstrosity from Redmond. The Sony machine is a dual core 64 bit 2.9 GHz Intel E7500 CPU with 4 Gb of RAM. It is the fastest machine that I've ever owned.
The first inkling that something was amiss was when I launched process explorer and noticed that baseline CPU load was 5-10% which is ludicrously high. My XP machine OS overhead is <1% and it uses a much slower CPU. Investigation was in order.
W7 seems to be designed on the infuriating principle that applies to most electronic hardware now, a sealed box with "No user servicable parts inside Servicing to be done only by qualified service personnel" prominently displayed on the back. When I buy something, usually the first thing I do is to take it apart to see how it works. When I buy something, it's mine. As is usually the case with my computer purchases, the machine was a demo model which has windoze activated so I didn't get hungup at the setup step where I can't go further (I won't agree to M$'s license terms about not disassembling the OS). A bit of tinkering led me to settings where I could turn off all "protection" features which are of absolutely no use to anyone and seem to be based on the premise that the average user surfs virus infested web sites on a regular basis and is too stupid to see when they've downloaded malware. My main antiviral program is in my wetware using information from process explorer, regmon/diskmon as well as Wireshark.
I uploaded my set of hacking tools which, once I found out how to run them in administrator mode, allowed me reasonable access to the machine. WinHex wouldn't let me display all process memory but I did have raw disk access. The reason for the high baseline CPU use turned out to be a huge number of programs that were run on a regular basis that served absolutely no usefull function that I could see. Every minute or so a program would run which scanned all windoze components to ensure that they were "properly licensed". Other programs ran useless "diagnostics" on the machine to update the "windoze experience" number which has absolutely no meaning to me (OTOH, the 2.8 Gflops/core and 5700 MIPS/core and 46 Gflops GPU is meaningfull).
The first 2 days I had the machine were spent in turning off one service after another and disabling programs which had been scheduled to run periodically. This is in marked contrast to Win 2000 or XP which are ready to run after being loaded onto a machine. One process which was exceedingly annoying was the "media server" service which consumed 50% of CPU time for several hours before I terminated it and I have no idea what it was doing but it is yet one more of the useless bits of bloatware that M$ has seen fit to ship with their OS.
Once I had the baseline CPU useage down to a saner value, it was time to start installing VB6 and VC5 onto the machine. I got a compatibility warning about VB6 and, sure enough, the IDE had only very limited functionality on the Sony machine. The display was too large and, while my compiled VB6 programs ran, the text was displayed at too large a size. The settings to change the displayed font don't go below 100% so Sony must assume not only that the average computer user is a moron, but they are blind as well. As my first test I thought I'd change the size of the text labels in the buttons on a simple program. I clicked on the font selection icon in the properties window and waited, and waited and waited until I got fed up and went to process explorer to find out WTF was going on here. VB6 was stuck in an endless loop with a single thread consuming 50% of all CPU time: VB6.EXE!VB_CALLBACK_REVOKE_+0x2EA3F. The only way to get out of this endless loop was to kill VB6 as terminating the offending thread resulted in a non-functional VB. What is even more odd about this is that when I tried an installation of VB6 on a W7 64 bit AMD Athlon 235e based system I had absolutely no difficulty in changing the font size in controls.
An internet search using multiple search engines for "VB_CALLBACK_REVOKE" was notable that there was not one hit for this search term. (Once the googlebots crawl my blog there will be a reference to the term). It confirmed my impression that Sony may make good hardware, but their people shouldn't be allowed near a compiler as any Sony program I've ever used is absolute crap.
What was even more puzzling was that neither of the machines would call functions from an assembly language dll I had written while in interpreted mode, but the compiled program had no difficulty calling this DLL. This seemed to be limited only to my DLL's as references to system DLL's were properly handled in interpreted mode. VC5 seemed to run just fine on both machines and I was able to recompile cpuid.dll which is a library of functions to access the CPU's timestamp counter and CPUID instruction among other things.
Fine, so VB6 didn't run, and then the next step was to install virtualbox on my system and create a W2K image disk and run VB6 on that. It's a bit of a pain to have to pass everything through shared folders but Virtualbox does give me a bit more security as I like to twiddle with arcane system settings and it's easier to restore a virtual machine than to resinstall an OS on a real machine (I use appropriate security measures when they are needed, not indiscriminately).
That problem solved I next wanted to see if I could get hardware virtualization running to speed up my virtual machines even more (despite the fact that in software virtualization the W2K system is way faster than the last hardware W2K system I used) and found, to my disgust, no support for hardware virtualization on the Sony Vaio. Obviously I wasn't the only person really pissed off at Sony about this as the outrage was quite noticeable when I Binged this topic and Sony has relented and come out with a Bios that supports hardware virtualization. I've downloaded it but will wait until I've gotten another UPS for this machine before I reflash the BIOS as the last thing I need is a power failure during the process (again, appropriate security precautions).
Usually when I personalize windoze I don't keep track of what I've done to get the desktop to the way it should be for me but this time I'm documenting the process and will see if I can come up with a script which will take a fresh W7 machine and automatically convert it to one which I want to use not some dumbed down POS.
The other major annoyance I have with M$ (no room to list them all) is that they have totally changed the desktop in W7 compared to XP. At least in XP one could fairly easily go from the annoying XP appearance to a "classic" windoze desktop and the additions were evolutionary. In W7 M$ appears to have changed basic functionality for no other reason that "we can do this if we want". If M$ wants to see how to do real GUI design, take a look at the Mac. I am very impressed that I have no difficulty in using OSX when the last major Mac use on my part was 10 years ago on a MacIIvx. Apple established a set of consistent user interface settings which make interaction with the computer so much easier. Instead of spending time on computationally intensive fluff that no-one will use, M$ would have been far better off to allow for customization of the desktop to suit individual users. I'm 10x more productive on an XP or W2K system because everything is where I expect it to be. Linux GUI's are individually customizable and there is no reason why M$ can't offer the same flexibility
The only reason that I'm still using windoze is VB. Until W7, one of the first steps in getting a new computer was to install VB6 on the machine and then begin coding. For a while the changes which happened were for the better: VB3 was what convinced me to ditch Hypercard, VB4 allowed one to create compiled 16 bit and 32 bit programs (I didn't see much use for VB5) and VB6 was the culmination of progress in development of visual basic. It was no mean feat to take a language which was once sneered at by serious programmers and make it into a powerfull and easy to use development platform for non-time critical applications (for that I write assembly language routines). My early medical software involved lots and lots of input forms and VB was by far the easiest way to produce these quickly.
There is some strange urge within M$ that once they have produced a good product to totally abandon it and to roll out an inferior and incompatible "new and improved" version. I'm referring to VB.NET. I see absolutely no reason for .NET as if I want to run programs in a sandbox I'll use Java or a virtual machine. M$ seems to have a severe case of the "not invented here" syndrome and they came up with the .net framework in response to Sun's success with java. I made the mistake of downloading an evaluation version of M$'s Visual Studio onto one of my machines and it took years to erradicate the last traces of this product. One of the assumptions that the installation program made was that I wouldn't want to keep old versions of VB and VC on my machine and proceeded to cripple them. VB.net is totally incompatible with VB6. I took one small program written in VB6 and spent most of a day attempting to get it to run under VB.net and never succeeded. I've been programming for 40 years and can still run the FORTRAN code that I wrote in high school although I have to retype it as there aren't any punched card readers easily available now. What VB.net requires is that one totally rewrite one's VB6 programs to fit into the procrustean vb.net bed. This seems to be the only solution that numerous people have come up with and it is absolutely assinine. After this experience I started the frustrating process of trying to remove the .net based version of visual studio from my machine and started learning java.
This is already too long for a blog entry but it is possible to go on endlessly about the bad design choices that M$ has made. The thing that I've always liked about software is that if one doesn't like something it is possible to write new code which performs things in the desired manner. M$ seems determined to ensure that such capabilities are not within the hands of the average user. I'm now learning about the architecture of W7 which seems to basically be NT at the core with an absolutely idiotic number of non-essential additions. Part of this is to run DRM software as part of the OS but this is easily countered and I use non-M$ DVD players and TV card interfaces. I like the touchscreen interface as it is very intuitive and as soon as a version of Linux comes out that can run on this machine I'll be ditching W7 and running Linux instead. I suspect I'll still have to keep W7 around as the bulk of the population can't concieve of any other OS besides windoze and I'll always have to deal with this idiotic OS or some bastard progeny of same either at the hospital or in my clinic. I've cracked security on every dumbed down version of windoze that has thus far come out and don't expect W7 will be any different. True, the security does get better with every iteration, but I like tough problems. Once I have the highest level of privileges available on the system (which is not Administrator) I'm happy and can get on with doing some real work with the system.
Todays date is palindromic
When one writes todays date in yyyymmdd format (20100102) it is a palindrome. It is the only palindromic date of the year and a good excuse to celebrate with a few shots of ice cold Jaegermeister. Palindromic dates are rare and the first one of the century was 20011002 and the last one ever will be 20111102. Thereafter, unless the system of dates changes, there will never again be another palindromic date. Enjoy the experience while it is possible.