During the lunch break Carlo and I walked around the Microsoft Corporate Campus in Redmond. It is autumn here as well. Lots of deciduous trees are shedding their leaves. The campus now shows lots of shades of red and yellow on leaves.
I took some pictures during the walk. You can see some below. Click on the images to see larger versions on Flickr:
One of my post popular blog posts deals with problems I was having with the stability of Windows Vista. I had major problems hibernation and sleep modes on my Dell PC. My PC never reliably went to sleep or hibernation and crashed either during going to sleep or when waking up. A lot of other people encountered similar problems. This blog post has 66 comments so far.
No driver update or Windows update solved my problem until October 9, 2007.
Around that time Microsoft released a set of reliability updates that are going to be part of SP1. There are supposedly also going to show up in Windows Update, but I manually downloaded and installed them ahead of time. Note that I am not running the beta of SP1.
If you encounter similar problems with Windows Vista, I highly recommend that you install these updates as well (if you haven't got them through auto update yet):
Scott Guthrie did a major announcement on his blog yesterday: Microsoft will be releasing the source code for most .NET Framework libraries with the release of Visual Studio 2008. There will even be integrated support for debugging into framework classes and on-demand dynamic downloading of source files and debug symbols in Visual Studio 2008.
This is great news for .NET developers and a major step forward for Microsoft in my opinion. In and by itself it is enough reason to warrant an upgrade to Visual Studio 2008. In fact, I can think of no reason to keep using Visual Studio 2005 after the release of VS2008.
The source will be released under the Microsoft Reference License which basically means you can view and debug but not change or reuse the source code.
If you want a more liberal license you can look into Rotor aka the Shared Source CLI. Rotor was Microsoft's first effort for open sourcing a .NET CLI implementation. But Microsoft does not guarantee that Rotor has exactly the same codebase as the real .NET Framework.
I had taken this online typing test before on a laptop while sitting on the couch. Tonight I was sitting behind behind my desktop computer and decided to retry the test, because Dennis posted his results.
It feels a bit like a "who's got the biggest" contest, but here are the results of my first attempt:
Number of words typed: 219 Test duration: 3 min Speed: 73.2 words/min. (366 keystrokes/min.) Error penalty: 12 Accuracy: 94.5%
Not entirely happy with this, I retried the test. Every time you take the test a different text appears, so retrying is not cheating ;). These are the results of my second try:
Number of words typed: 245 Test duration: 3 min Speed: 81.6 words/min. (408 keystrokes/min.) Error penalty: 19 Accuracy: 92.2%
I regularly sync my Windows Mobile phone with Outlook 2007 using ActiveSync/Vista Sync Center. I don't know what causes this, but every so often I end up with duplicate contacts and calendar items. This happens especially with recurring items like birthdays. If I am not quick enough to remove the duplicates, I end up with 2, 4 or even 8 of them!
In the past I have used the Duplicates Remover for Outlook from MAPILab for this. I used the trial edition that works for 30-days. It is limited to removing 10 items at a time, so I had to run it multiple times. I didn't use it often enough to shell out the $24/€19 to buy it.
Today I tried version 2.5.2 of this Outlook add-in. It has a wizard-like interface that is easy to use. I got my contact list and calendar cleaned up again.
[Full disclosure: By writing this review I am eligible for a free license for this Outlook add-in. This does not effect my opinion about this tool. Obviously, if I wouldn't find it useful, I wouldn't want to have a license.]
It allows you to select a set of your photos on Flickr and a folder on your hard drive with images.
It reads the metadata for both Flickr images and the local images. The metadata that is read is:
Geo-info (GPS coordinates)
Date and time taken
Last update date and time
It matches images on Flickr with local images based on the date and time taken.
It determines on a per picture basis in what direction the metadata should by synced, i.e., which side should be updated, if any. Currently the most recently updated side wins. I am getting help from Timo Proescholdt for a better algorithm that will allow for a merge of metadata, i.e., a two-way synch.
It updates the metadata on Flickr and in the local images.
During my holiday in France in July I received e-mail from Robert A. Wlodarczyk who works at Microsoft. He pinged me to say that he had released new sample code to update metadata using WIC. Yesterday, I tried to incorporate similar code into my application and ran into the same type of problems as before.
Because his sample was working, I wasn't ready to give up again. I finally tracked the problem down to a threading issue. WIC is throwing strange InvalidOperationException and InvalidFormatException exceptions with messages like "Cannot write to the stream" when it is called from a background thread. My app is multi-threaded so that the UI doesn't hang when it is busy syncing.
After I got confirmation from Robert that WIC indeed suffers from a threading issue, I solved the problem with a work around. I now marshal the call to the code that uses WIC to update metadata to the UI thread using the WPF Dispatcher object. This causes the app to become non-responsive for small amounts of time during the update of local metadata. But that is better than a non-fully-functional app.
Fully functional, give it a try
So all is well that ends well. After finally getting WIC to work, I could do away with the C++ code that was causing me headaches 😉 And my app now works on Windows XP again. You just need to have the .NET Framework 3.0 installed.
Even though the app is now able to sync metadata in both Flickr images and local images, there is always room for improvement. Here are my ideas, some of which are based of suggestions by people on CodePlex:
Improve the synchronization to also allow two-way synchronization for a picture pair. I.e., one side doesn't have to win. For example, if the Flickr image has just the title set and the local image the description, the metadata should be merged.
Add UI to see the match that is made by the tool and how it proposes to sync the metadata.
Allow you to exclude images if the match isn't good.
Allow you to overrule the sync proposal and sync the metadata in a different direction (on a per property basis) .
Add UI to store multiple mappings between Flickr sets and local folders. Currently the app only remembers the last folder and Flickr set that was used.
Add click-once deployment. That way the app can automatically check for new versions and update itself.
I just experienced my first Windows Vista crash that didn't even display a Blue Screen Of Death (BSOD). My computer just suddenly rebooted, complaining about an improper system shutdown.
So what did I do?
I was trying to mount a VHD file (Virtual Hard Disk) with the vhdmount.exe tool from Virtual Server 2005 R2 SP1 RC. Apparently that made Windows Vista very unhappy.
So why did I want to mount a VHD file?
Windows Vista comes with the CompletePC Backup tool that allows you to backup an entire harddisk to a VHD file on an external hard drive. CompletePC Backup only allows you to restore the entire image in the case of hardware failure or system corruption. This makes it less then useful (as in completely useless) when you want to restore individual files. vhdmount.exe to the rescue! Or so you would think.
Is mounting a VHD file easy on Windows Vista?
No. This blog entry by the VirtualPC Guy would make you think that it is just a matter of installing the vhdmount.exe tool, importing some registry settings once, and just doubleclicking a VHD file. That doesn't actually work on Windows Vista with UAC turned on. The tool requires elevated priviliges and the Windows Explorer process doesn't have them. The tool doesn't initiate a UAC prompt to elevate. So you have to run a command line (cmd.exe) with administrative priviliges and run the vhdmount.exe tool from there.
Why did I want to restore some files?
I haven't actually lost data yet. I just wanted to make sure that I can restore my data in the unfortunate case that disaster chooses to strike in the future. The recent CodePlex disaster made me look into my own backup strategies again.
Now I know, that my backup strategy doesn't work ;(
Why didn't my backup strategy work?
My external USB-harddrive is formatted using the EXT2 filesystem (read here why) and I think the Ext2IFS driver doesn't play too well with vhdmount.exe. I'll have to investigate further, but the prospect of having to suffer through multiple crashes in the process is not very alluring.
Today, I wanted to continue working on my FlickrMetadataSynchr tool after a break of a month or so. This project uses SaaS in the form of a hosted Team Foundation Server by Microsoft for source control and work item tracking. This SaaS is called CodePlex.
Team Foundation Server is known to be a very robust source control system that is based on SQL Server 2005. You can cluster the database tier, you can have hot standby for the application tier, etc.
Yet, Microsoft was able to corrupt the source control database and not have a proper backup schema in place. I.e., they thought they were making backups of the database, yet they weren't.
That will teach me not to trust a third party with my precious data. So based on my current experiences I don't trust Software as a Service (SaaS).
Even worse. Three weeks after the fact, Microsoft still cannot tell if the source control data will ever be restored. At some point you just have to admit you screwed up and say that nothing can be done about it anymore.
Luckily, I still have the latest version of my sources stored locally. But it is the nature of an integrated source control and work item tracking system that you can't keep a full local backup of the state of the system. If Microsoft (or another vendor) screws up you loose a lot of historic data.
Another SaaS that I have become to depend on quite heavily is Gmail. Considering the perpetual beta status of Google Mail, I have never fully trusted them to keep my data safe from disaster. I am very diligent in backing up my mail locally in Outlook PST files using the POP3 access that Gmail provides.
Now, although I don’t really know anything about BizTalk, I do know that BizTalk is well-known as an enterprise-grade middleware product. I think that this is due to the fact that only Enterprises (with a capital E) can make custom software development such an expensive process that BizTalk is actually a cheap alternative
Some people use hyperbole to refer to the disclosure of Silverlight and CoreCLR by Microsoft at MIX07. April 30, 2007 has been called the day that will be remembered as the day that Microsoft "rebooted the web".
This might be true in more than one way. I was just reading the Silverlight SDK and was struck by a feeling of deja-vu:
<TextBlockFontFamily="Arial"Width="400"Text="Sample text formatting runs"><LineBreak/><RunForeground="Maroon"FontFamily="Courier New"FontSize="24">Courier New 24</Run><LineBreak/><RunForeground="Teal"FontFamily="Times New Roman"FontSize="18"FontStyle="Italic">Times New Roman Italic 18</Run><LineBreak/><RunForeground="SteelBlue"FontFamily="Verdana"FontSize="14"FontWeight="Bold">Verdana Bold 14</Run></TextBlock>
Doesn't it feel like FONT tags all over again to you too?
This is not revolutionizing the web, this is indeed rebooting the web. Just after text on the web has been semantically liberated from FONT and TABLE tags by judicious use of CSS, we are going back to the future...
PS: Although there is extremely tight coupling between text and layout in this piece of XAML, it is still a much better situation than text locked up in .swf files. At least it is indexable by search engines. Hopefully, Microsoft is just going after the Flash market and doesn't lure us into putting all text inside Silverlight controls leaving the (X)HTML page as just an otherwise empty shell around such controls.
PS2: Here is another commentary by someone who sees some downsides to this new "rich" web as well.