VHD on ExFAT

Illustration

One of nicest hidden gems in Windows 7 is exFAT. It’s a simple file system with support for huge files (16 EB) but without any support for access control. Pretty straightforward replacement for FAT32.

As leap of faith action I decided to format one whole disk with it. It was disk that kept my multimedia files and occasional virtual disk. I wasn’t troubled by security since BitLocker works like a charm even inside of VHD. Unfortunately that plan was snipped in the bud.

As soon as I created virtual disk I was greeted with “The requested operation cannot be completed due to file system limitation”. Even worse, you cannot attach already existing VHD that happens to be there. It simply refuses to do anything.

While I haven’t done any detailed analysis, it seems that exFAT and VHD do not work together.

Ping

Few days ago I needed to check whether certain server was dead or alive. Any network guy will tell you that ping is your mate. While he also might tell you that ping might not work at all times (damn you firewall) I will ignore this unfortunate part for a moment. Suffice to say that ping works for my scenario.

While I used to solve this issues with good old P/Interop, I decided to check whether .NET Framework 3.5 (one that I used) is smarter that old grandpa 2.0. And what do you know, there is Ping class available inside System.Net.NetworkInformation namespace.

Class was made by someone who clearly hadn’t read Framework Design Guidelines but it does provide complete solution. At least code is easy enough:

var ping = new Ping();
var reply = ping.Send("www.example.com");
if (reply.Status == IPStatus.Success) {
    Debug.WriteLine(reply.RoundtripTime + " ms.");
}

Focus Thief

Illustration

There is NO REASON WHATSOEVER to make a window top-most if user has not explicitly requested so. And no application should make that sin.

Let’s imagine a scenario in which your server temporarily refuses connection. Outlook detects that password/user-name fails and decides to ask you. Since this is so important it shows window in foreground as A FUCKING TOP-MOST window. You dismiss it with cancel in order to continue with your work. In three seconds FUCKING TOP-MOST window reappears and you click it away, again. And it appears again. And you dismiss it again. And you start writing something only to have that FUCKING TOP-MOST window steal focus again. Most viruses/worms/diseases I know are not annoying as much as Outlook 2010.

I believe that developer who implemented this should be forced to do team programming with whichever moron manager thought this was a good idea. And they should kick each other in balls every time window pops-up.

Rollback in Mercurial

Illustration

Lets start with assumption that you are both user of Mercurial and that you made an error in merging. Or it might be directory restructuring gone bad. In any case, you need to go few revisions back.

Let’s assume that we have small project well into development. Situation is simple enough and there are no branches involved. Only important thing to notice is that version that works was 137 and all changes after that are something that we would rather forget:

140: Some editing.
139: Fixing renames.
138: Directory reorganization.
137: Everything is working!
...

There are two solutions that can bring us toward situation as it was in 137.

Easiest, and (in my opinion) cleanest solution, is just to clone your repository. Making new clone that goes to revision 137 will solve problems with a clean cut. Unfortunately there are couple of problems with this clean solution. If your repository is shared one, be prepared to call every person that uses it and to tell them they need to delete their local repository and make a new clone. If you forget to do that changes that you just removed might magically appear when someone else pushes (since Mercurial will think that they have newer version). Some sort of synchronization is definitely needed.

Another issue with this method would be loss of history. If you had any changes done between 137 and 140, they are forever gone. That might not be a problem if there wasn’t many changes or if they were trivial but you should be careful about this.

Illustration

Fortunately Mercurial has way of solving this and it is called backout. Just remember to give it revision where you messed up. In this case that revision would be 138 (directory reorganization).

This method is not as nice since all that “bad” code is there. However, all history is preserved and all changes that happened after revision that was backed out are merged again. While it still might be a good move to notify team of changes, nobody will kill you if you forget to. :)

Fax 0

What to do when you are stranded in foreign land and you have an fax to send? As always Internet brings solution to a problem.

My search gave me lot of results for Fax subscription but very few that allow simple one-time sending. Even worse, most of those that do allow single payment had issues with my Croatia-issues credit card. After long search I did found one that I could use.

FaxZero.com has rather simple page where you can opt to do single send (with ads or with payment) and their subscription. I tried sending single .pdf files with payment and everything works as expected. Once your fax is uploaded, you are taken to PayPal. As soon as payment is completed your fax is in sending queue. It does take some time to send a fax but you will get confirmation on your e-mail. It does everything you would expect of fax service.

However, there is dark side to this. As soon as I sent my fax via FaxZero, I started getting new spam. It amounted to total of ten or so spams before my spam filters started working again. Yes, it might be just coincidence that those spam e-mails started arriving as soon as I gave my address away. But my experience teaches me that real coincidence is rare thing.

My final verdict about this service is to use it nevertheless. Just be sure to get yourself some throw-able e-mail that you can close once fax is sent.