Visual Source Safe 2005 over web problem 0x80072F19

Did you ever try VSS 2005 Internet connection? I did once just for testing.

I need it now for real, to connect to a client of mine. The client set everything up and I tried to connect. I tried to connect and got a connection error. This was easy to pinpoint - I opened the web service (VSS uses web services when working over Internet) page in IE7 and it wouldn't open as client's certificate wasn't trusted by me. So I started trusting it and page opens just fine now.

So I retried with Visua l Studio (the only VSS over internet client - no, the VSS client won't work over internet) and this time I got this error:

Add SourceSafe Database Wizard
The SourceSafe Web Service cannot be accessed at the specified address.

Address: https://[clienturl]/SourceSafe/VssService.asmxThe server returned the following error:  (0x80072F19)

The plug-in advanced settings for SourceSafe Internet require SSL connections. Please, verify that your server can be accessed using secure connections or change your plug-in advanced settings.

Google says that error 0x80072F19 is linked to certificate problems. Yet, there were no problems for me, at least so I thought at the moment. So I tried connecting from within Windows XP running in [VMWare] Workstation and it opened just fine. Go wonder. Thus, it has to be something with Vista. Well, no exactly. Just to be on the safe side I've tried with firewall off and NOD antivirus disabled, too. It didn't improve the situation.

After more intensive googling I've came across this article which was not obviously related. It solution to error 0x80072F19 is:

  1. Open Internet Explorer and go to Tools > Internet Options > Advanced
  2. De-Select Check for server certificate revocation.

Miracle, this solution works. I am not sure why it doesn't work with Check for server certificate revocation option enabled in first place, though. Isn't exactly safe to turn this option off? Odd. Anyway, turning it off did the trick and VSS is happily working over the Internet now.

How do you assign default values

In previous post I was asking whether a method returning an unassigned variable will compile and the answer is no, it won't. So this brings an interesting question, how do you initialize default values?

Are you doing something like this (1) - assigning default value right at the start:

bool Tubo(string text) { bool value = false; if (text == "Tubo") value = true; return value; }

or this (2):

bool Tubo(string text) { bool value; if (text == "Tubo") value = true; else value = false; return value; }

or this one (3) (valid only for bool results):

bool Tubo(string text) { bool value = text == "Tubo"; return value; }

Personally I would go with the last one if I am dealing with bool values. If not, I prefer the first one.

SpbBackup - a must have PocketPC application

SpbBackup is my MVP (most valuable program) for PocketPC. To be more precise, a backup application (such as SpbBackup) is a must have for anybody using a PocketPC device.

What is good about it:

  • it backups your data (entire data on PocketPC if you want to)
  • doesn't require ActiveSync to do backups (that's history anyway)
  • supports compression
  • supports encryption
  • supports scheduling
  • creates an exe file

My (very) old PocketPC/Phone was Qtek 2020 (Himalaya). Cool device by any mean, however it had a very nasty problem. Sometimes (perhaps once per two months) it would freeze and only hard reset would bring it to life again. Meaning that data in primary storage is gone. And even worse, usually the contacts (and other) data stored internally was corrupt (WTF?). The oddities won't stop here. This freeze was almost certainly to happen when I was abroad (looks like it was an intelligent bug) and left me without telephone numbers and e-mail addresses. Unless I had my laptop handy (restore through ActiveSync restore functionality, assuming I was doing backups, which was an annoying process by itself - or manually configure everything from the scratch), I was in the dark.

This was a huge problem until I found SpbBackup. This backup application is practically fire and forget sort of application (you can do backups manually, too) - just schedule it to run periodically and you are protected. But what really shines is the ability to restore PocketPC from within PocketPC - SpbBackup creates executable files. When (if) PocketPC crashes hard and looses all the data, you just run the latest executable backup and bum, you are where you was at the time of when backup was created. No hassles, no laptop required, just run the last backup.

So that makes backup applications a first application everybody should install. And SpbBackup is a great backup application.

Reasons why I prefer (Windows) PC over Apple computers

When I talk with Apple enthusiasts they often question me why the heck I prefer crappy PC over super cool Apple computers. My main reasons are the freedom of choice, developer tools and the fact I can make money with PCs (update: read Windows).

Perhaps I will write more about the three reasons later, but for now, check out this article that describes a part of mine first reason. I don't know whether one can buy a non-Apple memory module or not, but the price of the Apple's (slow) 2GB module is insane (smaller modules are overpriced, too). And if you have no other choice the situation is errr...ridiculous. But hey, one gets free shipping and an Apple logo on the memory chips (or not, who knows)!

Speeding up build times dramatically

I have a VS 2005 solution with 19 projects.In total it consumes ~600MB of disk space (entire solution folder, including binaries). Needless to say that build times are relatively high. They are high even though my workstation has 4GB of RAM, RAID 0+1 7200rpm disks, 4GB ReadyBoost USB key and Core 2 Duo 6600.

The bottleneck in my situation is definitely disk I/O - building a solution results in plenty of reads and even more writes. The logical choice would be buying WD Raptor disks that spin at 10,000rpm. It should reduce build times somehow. However, there is another solution that reduces build times dramatically. Literally.

It is called RAM disk. Instead of working with files residing on physically disk, you work with files residing in RAM.
Here are the pros:

  1. latency is almost non existing
  2. nothing beats transfer speed (RAM to RAM)
  3. build times are reduced dramatically

Nothing has only good sides, even RAM disks don't:

  1. files are not persistent. IOW if your computer experiences blue screen you can say goodbye to the files on RAM disk
    Let's dig into this problem. First, a serious workstation shouldn't experience blue screens at all. My Vista is pretty stable and I don't see blue screens. Next, you can create backup scenarios - perhaps your RAM disk driver supports  periodical backups to physical disks. So you loose just recent changes. Or you can use other backup software that does backups for you. Backup shouldn't interfere too much since building is done entirely on RAM disk. Or, if you want to be on the safe side, use RAM disk for output only. And don't forget using source safe which is always a necessity regardless of the underlying disk type.
  2. you have to allocate RAM
    You loose working RAM. This might be not that bad as it sounds. First, RAM is cheap and running on 4GB (usually only ~3.5GB or less are available due to PC architecture) machine is not uncommon. Next, RAM disks might use OS dedicated RAM AFAIK. (You know, in 32 bit Microsoft OS is RAM usually divided like 2GB to applications and 2GB to OS). And if RAM is still an issues then one might consider switching to a 64bit OS where RAM size is not limited to 4GB.

RAM disks are an risky extreme solution. On the one hand they boost I/O to the sky while on the other hand your data is volatile. However, understanding the risks and taking proper precautions this scenario is very feasible, at least for me. I am all for using RAM disk for my entire solution.

And here is my RAM disk pick: RAMDisk from QSoft (supports all flavors of Windows, both 32 and 64bit, periodical backup, excluding RAM ranges, etc.). It is my first pick and I am very careful right now. I'll see how it goes and if I don't have problems with it I will stick with it. Ah, it is also dirty cheap. And my build times are down to the ground, VS looks lightning fast.