Friday, March 23, 2007

Aero Glass on my ancient GX400

My latest video card arrived this morning and installing it was a much better experience than what I went through with the Diamond card. I have a Dell Optiplex GX400 that is about 5 years old. I installed Vista Ultimate on it so I could test apps under Aero Glass. That had ruled out VMWare. The GX400 has 5 empty PCI slots and an AGP4x slot. Since most new cards are PCI-Express or AGP8x, I tried a PCI based card. That experiment failed and I ordered a BFG GeForce 7600GS OC. It claimed to work with just about any AGP slot.

When it came in, I removed the old card and plugged in the BFG card. I turned on the PC and booted Vista up. Vista recognized the card and installed the GeForce 7600 drivers that apparently come with Vista and requested a reboot.

After the reboot, I was in 640x480 hell, but after a little twiddling I had a decent resulution and refresh rate. I did have to refresh the Windows Experience Index. It was at 1.0, hel back because of the video card. The graphics rating went from 1.0 to 5.9, and Vista enabled the Aero Glass theme automatically. The overall number was 2.7, but the CPU was the weak point, memory and HD access were 4.1 and 5.3. Good enough for what I need to do.

The BFG card was cheap in cost ($150+), but it came with a decent feature set. It will drive two monitors and I didn't have to install any drivers. It has 512MB of it's own memory and fully supports DX9. Not bad, not bad at all.

Thursday, March 22, 2007

Fixing Wise Installation System 9 problem with shortcuts in Vista

We were testing one of installers under Vista and the dreaded "User Account Control" dialog was being launched for every shortcut that was created by the installer.  Running the applications referenced by the shortcuts did not through the UAC, just the shortcuts.

I took a look the shortcuts and they didn't have a direct link to the apps.  Instead they looked like this:

"C:\Program Files\Company\App\UNWISE.EXE" /W1 "C:\Program Files\Company\App\INSTALL.LOG"

This was Wise 9's attempt to mimic the self-repair feature of Microsoft's Windows Installer.  If you are using Wise 9 Professional, you can fix this by opening the shortcut action in the setup editor and clearing the self-repair checkbox.  If you have the Standard version, you'll have to edit the installer script (.wse) with a text editor.  For each shortcut, you would remove the line of script reading 'Flags=01000000' from the Create Shortcut script action code block.  This is documented in the Altiris Knowledgebase as article 23832.  I found that article by searching the Altiris support forums and I came across this message thread.

Wednesday, March 21, 2007

I'm not impressed with Diamond Multimedia support

I have a older PC that I just installed Vista. I want to make sure that our apps place well under that OS and I don't want Vista as my primary OS just yet. Usually I do that kind of testing under VMWare, but you don't get the full experience of the OS when it's virtualized.

This PC is older, a Dell Optiplex GX400 and has a NVIDIA TNT2 video card. It's a perfectly OK card, but Microsoft and NVidia are not doing a Vista driver for that card. So Vista is running it with the Standard VGA Graphics Adapter driver. The SVGA driver is better than I thought it would be, but it's slow and is running at 60 hz. I'm not terribly concerned over the speed, but the flickering is driving me nuts.

I got the OK to get a new card, and that's when the fun began. To get Vista's Aero Glass theme, you need a decent video card that has DX9 support. The GX400 has an AGP 4X port and a bank of PCI slots. No one is making AGP 4X cards anymore, it's AGP 8X or PCI-Express these days. I looked up the specs on a BFG card that claimed to be AGP 8X/4X, so I fired off an emaill to them to see if their card would work with my ancient PC.

While I was waiting for a reply, I saw an article on The Inquirer about companies releasing Vista ready PCI cards. Diamond had released a PCI card based in ATI's Radeon 1300 chipset and it sounded like it would do the job. After a few days of no response from BFG, we ordered the Diamond card. Immediately placing the order, a reply came from BFG that said their card would work.

The Diamond card came in today and I tried installing it. I removed the Nvidia card from the AGP slot and put the Diamond card in a PCI slot. There are 5 PCI slots, all of them were available. The machine wouldn't recognize the card. I tried a number of things (telling the BIOS not to expect an AGP card, moving the Diamond card to another slot, putting both cards in. With both cards in, the machine would not recognize either card.

Either it's something flaky with the Diamond card, or more likely, it's Dell building a PC that only works with AGP cards. Past experience with Dell has led me to the conclusion that the card slots on a Dell motherboard are purely decorative. I decided to call Diamond technical sipport to rule out their card.

Almost immediately, I was connected to technical support person. I forgot his name, let's refer to him as "Stan". Stan was not very helpful. It was clear that he was reading from some sort of script and deviations from that script were verboten. I explained that the PC would not make it past POST when the Diamond card was installed. He asked what OS was installed. I said "Vista, but that's not important right now". He asked what driver was installed. I told him that Vista did not support the current card and was using the SVGA driver that comes with Vista.

He asked me to uninstall the SVGA driver. I asked why and he said that having the wrong driver was a common cause of video card problems. I declined to do so for the following reasons:

  • The problem occurs at boot time, video drivers are not loaded until the OS loads. My machine was nowhere near that point.
  • It's the standard VGA driver that comes with Vista. It's the driver that gets loaded when you uninstall a vendor video driver.
  • I doubt that Vista would let you uninstall it in the first place.
  • The Diamond card had to work with SVGA driver or you would be unable to install Diamond's driver.

Since I declined to uninstall the driver, Stan's demeanor and he basically said there was nothing more he would do. I thanked him for his time and hung up.

This card is being sent back and I doubt that I would ever buy another Diamond Multimedia product. The BFG card is on order, hopefully that will be a better experience.

Tuesday, March 20, 2007

Notes on installing Delphi 2007

I got the email yesterday from CodeGear. It was a link to download the newly released Delphi 2007. I will be getting the DVD from CodeGear as part of the Software Assurance that I have, but I wanted to try the new installer. This is their first release using installer technology from InstallAware. As it happens, I'm considering switching from Wise For Windows Installer (WFWI) to InstallAware, so it's a good oppourtunity to see their installer in action.

The installer is a minimal (4MB) installer. It grabs the bits that it needs from the Internet from the bits that it needs and the bits that you want. It took a while to download the installer. There were three options, HTTP, FTP, and Galileo. From my office, none of them worked. Once again, our SonicWall firewall has safely protected me from downloading stuff that I need. After a few attempts, I went to Plan B. That was my home PC. I remoted into that box, immediately downloaded the installer without any grief and copied the file back to my office PC.

Once I had the installer, I ran it on my Vista box. The Vista box is my backup PC and I just put Vista in it to test our apps under a hostile environment. The first thing installer did (after I answered "Continue" to the ever present UAC) was to announce that it needed the .NET 2.0 SDK and it was going out to get them. It transferred about 360MB or so of .NET parts and then installed them.

After about 30 minutes or so, I got the "Welcome to the InstallAware Wizard for RAD Studio Setup" page in the setup dialog. Which led to the EULA and registration pages. Oddly enough, it defaulted to "CodeGear" as the company name. Come on folks, that value can be read from the registry. The "Next" button flickered as I typed into each field. I don't know that that's Vista, Windows Installer, or InstallAware. I'm guessing it's Vista's non-support for my ancient NVIDIA TNT2 card that it treats as a standard VGA device.

Then I was prompted for what features to install. I have the Enterprise version, there were many features. It wanted about 1GB and called itself "CodeGear RAD Studio". After one more confirmation prompt, the installer went back to the mothership to download the bits it needed.

It was done after 90 minutes. Now comes the fun part. How many of the Delphi 2006 components will work as advertised?

John Backus, RIP

* This program notes the passage of the creater of the
* Fortran Language
integer count
print*, 'John W. Backus, RIP'
print*, '1924-2007'
print*, ''
print*, 'Led the team that designed Fortan in 1954.'
print*, ''
print*, 'Server on the committees that design ALGOL.'
print*, ''
print*, 'Invented the first Function-level'
print*, 'programming language '
print*, ''
print*, 'Won the Turing award in 1977.'
do counter = 1, 15
print*", 'RIP'

Tuesday, March 13, 2007

Why I'm looking forward to "Orcas"

I have stayed away from the Visual Studio betas (I beta test enough stuff already, thank you), but the more I hear about the next version of Visual Studio (code named "Orcas"), the more inclined I am to installing it in a VMWare session.

Scott Guthrie has been running a series of blog posts about the new language features coming in "Orcas".  His post about Extension Methods caught my eye.  In a nut shell, Extension Methods let you new methods of an existing object type, without having to subclass that object or modifying the object.

You bascailly create a new static class with a static method.  The first parameter has the keyword "this" prepended to it.  This informs the compiler that the new method should be added to the class referenced by "this".

Codegear does something similiar with Delphi 2007 to allow it be a non-breaking upgrade from Delphi 2006.

Scott also has a good example of how to use LINQ Extension Methods to query an XML file.  That for me was the first I really got the value of LINQ.

Automatic properties look pretty cool.  It's just syntactical sugar, but it goes down pretty good.  I have always been in the habit of creating properties for the public variables of a class in C# and Delphi, this makes it a little quicker write on the C# side.

Sunday, March 11, 2007

Julie Lerman's coming to town

On Tuesday, Julie Lerman is coming in from Vermont to do a presentation about ADO.NET Orcas at the TVUG meeting.  This will be the first meeting held at our office, it should be a cool presentation.  I saw her speak last year at a TVUG meeting and she's very good.

Thinking about WAIS, Gopher, and ExecPC

I was reading a post by Brad Abrams, where he was wondering why WAIS and FTP had died out.  While I disagreed with the idea that FTP has died out, WAIS is one of the long gone technologies of the Internet.  Unless you were using the Internet in the early '90s, the odds are that you have no idea of what WAIS was.  WAIS is over.

I remember trying it and not being terribly impressed by it when I got my first dialup Internet account (to get cheap access to ExecPC).  In the late 80's and early 90's, ExecPC was a super (as in huge) BBS, run on a bank of 386 machines.  At the time, ExecPC was one of the best places to get Amiga and DOS freeware and shareware.  While writing this post, I found out that ExecPC was still up and running, just without any modem access.  You can telnet into it from here.  I took a quick peek and it looks exactly the same as as it did the last time I logged in, back in 1998.

I got my first fast modem from an ExecPC auction.  Back in the days where 14,400 baud modems were the top end and 9200 was the norm, US Robotics had their own HST protocol that ran 16,800 downstream.  You only got HST speed when connecting to another HST modem, but the better BBSes had a least one HST modem.  One fine day, ExecPC upgraded their modems and they auctioned off the older ones.  A buddy and I got a couple of Courier HST Dual Standard internal models.  I think we paid about $150 each, at the time HST Dual Standard were going for $500.

If two those modems were not the original prototypes from US Robotics, then their serial numbers were still in the single digits.  These were full length cards and they had wires running all the place..  They worked great though.  After a couple of months, I was able to trade mine in for a new external Courier V.Everything modem.  This was back in 1994 and it was probably the fastest modem available on the consumer market.  I was able to upgrade it to the V.34 and V.90 standards when they became available.  It was is built like a tank.  I had stopped using it 7 years ago, when I got broadband, but my in-laws used it until last year, when they finally got broadband.

ExecPC was run in Wisconsin and it was expensive to call from NY.  ExecPC had a deal with an ISP named Concentric Research (CRIS).  If you had a CRIS account with a local dialup number, you could access ExecPC through the CRIS Unix shell as a local call.  When you dialed into CRIS with a terminal program, you got dumoed into a menu, from which you could access ExecPC.  It had other things on that menu.  You could drill down into WAIS and Gopher space, you could run Lynx (a text based browser), Pine (a text based email app), or even drop down to a Unix shell.

I had that CRIS account so long ago, they didn't offer a PPP connection when I signed up.  I had to use their SLIP implementation.  And this was with Windows 3.1, which didn't have native support for the Internet protocols.  I remember having to go through all sorts of gyrations getting the Trumpet Winsock to work.  You take for granted how easy it is to hook a PC up to the Internet these days, prior to Windows 95 you had to do some work to get it set up the right way. 

It's kind of funny what pops out of the deep recesses of memory by the reference of an archaic acronym.

Wednesday, March 07, 2007

Where is

Don't you hate it when a software component vendor disappears without warning?  In some of our applications, we use a custom datetime edit control named TPSCDateEdit.  This is part of a package from a company named puterSoft.  We have been using it for about 5 years and when we migrated our Delphi code to Delphi 2006, we got the Delphi 2006 version of their code.

Well, we discovered an annoying cosmetic bug.  If you exit a TPSCDateEdit control without entering in a date, the text of the control gets the date '12/30/1899'.  12/30/1899 is the day that the world began if you are a COM based life form.  The control was saving the right data (or in this case the lack of data), it was just the display that looked ugly.

So the first thought was to check puterSoft's web site to see if this was a known issue and had a fix or work around.  That failed and when I tied to ping the domain name, that failed.  I did some playing around on and I learned that it was hosted at and that DNS lookups are failing.  If you perform a DNS lookup for puterSoft, it goes into a loop and DNSstuff is smart enough to break out of that loop. 

I can't tell if puterSoft is gone or something is all fracked up with's DNS records.  I've emailed Sergiy at puterSoft to see if they are still around.  I also fired off an email to DiscountAsp to see if they can tell me anything.  After 20 minutes, I got a reply back from DiscountASP.NET that the account has been cancelled.  That's Not Goodtm.

Since I'm not going to get any resolution from puterSoft in the immediate future, I decided to take a whack at it and see if it was a simple fix.  And it looks like it is.

When you exit a TPSCDateEdit, the following methods are called:

  • TPSCCustomDateEdit.PostValue
  • TPSCCustomDateEdit.SetDateTime
  • TPSCCustomDateEdit.UpdatePopup
  • TPSCCustomDateEdit.GetAsText

Other methods are called, these are the ones important here.  UpdatePopup has the following logic:


If Text <> GetAsText Then
  Text :
= GetAsText;


The code in GetAsText looks like this:


function TPSCCustomDateEdit.GetAsText:String;

By changing that code to this:

function TPSCCustomDateEdit.GetAsText:String;
  if DateTime <> 0 then
    result := '';


I get result that I want. And life is good again.