November 2005 - Posts
Last night we had a communities-only Q & A evening (man, I love the communities) with two of the top guys that Microsoft brought out here for the 2005 products launch. The speakers were Roger Wolter, a Program Manager on the SQL Server team, and Eric Lee from the VSTS team, both of whom were highly knowledgeable and experienced in their respective fields. There was a lot of excitement and anticipation around this event, and it was definitely worthwhile! We ended up gruelling the Redmond guys for almost 3 hours!
To see a more detailed description of what topics we discussed, follow this thread on S.A. Architect.
Here's a link to an article by Roger on MSDN on SQL Server Service Broker.
Ok, I finally wanted to track down exactly where the whole "foo" / "bar" / "foobar" thing came from - you know those "Secrets" that everybody but you seems to know? Well, this one is finally solved. I did a bit of googling, and found "RFC 3092 - Etymology of 'Foo'".
The mystery has been solved!
I blogged a little while ago about the new RSS support built into Windows Vista, and I got a pointer today to a post on Ray Ozzie's blog discussing the Microsoft RSS extensions in much more detail, including some of its history and how Dave Winer got involved (he's the guy that basically built the RSS standard we use today).
It looks really interesting, and it's also great that Microsoft will release it under a Creative Commons license ("Creative Commons is a nonprofit organization that offers flexible copyright licenses for creative works." - Creative Commons)
...and it apparently supports RTM framework You can get the core components here, and (surprise surprise) its an exe that launches the download!
The SDK is going to be a problem getting hold of, though. It looks like they've combined all of the Vista stuff into one 1GB SDK. Ouch. How in the world am I going to get 1 GB on dialup?? Even on ADSL it'd hurt.
If you read my earlier post, you would know that I've been having some trouble getting the WinFX beta working because it is incompatible with the RTM of .net 2.0. The event log entry made it clear that I would need the framework beta, and I managed to get details from Ami Vora on where to get it (from this link on Channel 9).
Unfortunately, it wouldn't play nicely with my existing 2.0, which would itself not uninstall 100%. I was also doing all of the this in a VPC undo disk, but only created the undo disk post 2.0 :-(. Back to the beginning, and I'm busy patching a clean Xp Pro SP2 with 1.1, and I'm only creating virtual undo disks from now on once the patches / sp's are on!
Of course, after my fun bout with this stuff, Keith Brown goes and posts the solution on his blog today, with this link.
Also, this will only work with betas of the IDE's (Studio or Express'es), which I can't find a download for. I've still got my studio 2005 beta discs, but I think it will be useful to do some command-line compiler / notepad development again to get some exposure at the ground to 2.0.
[update 19-Nov-2005 - Whew, looks like I finally got it working. Just got the framework beta and WinFX CTP installed without a hitch. Now to building some services...]
[Warning - Some _very_ simplified comp. Sci theory appears below]
There is an interesting technical concept that is a little bit esoteric, but can be useful if you need it. I've not used it in years myself, but came across a possible use for it recently, and was curious as to how the .net framework implemented the concept. The idea is called by a number of names, but I refer to it as a "BitWise Flag" check, and it works as follows:
All numbers in a computer as stored in binary (0's and 1's), i.e. base 2. So, for example, the number 11 in binary is 1011, with the columns as follows:
Decimal
1's (10^0) : 1
10's (10^1) : 1
= 11 (1 x 10 + 1 x 1)
Binary
1's (2^0) : 1
2's (2^1) : 1
4's (2^2) : 0
8's (2^3) : 1
= 11 (1x8 + 0x4 + 1x2 + 1x1)
so, we can use this to have a single number actually represent a variety of options. I've got some discrete processes that I've coded, that can be set in the app's configuration. The config can be set to a specific number, and I can use this to run explicit steps in a particular order in the process, rather than having a configuration setting for each process. For example, I can have process keys of 1, 2, 4, 8 and 16, and set any possible combination of which to use. A "3" would mean "perform operations 1 & 2", whereas a "10" would mean "perform operations 2 & 8".
I believe this technique is used to set multiple enum options using a "or" keyword, for example, such as form control Anchor options (e.g. anchor left, right & bottom is
myControl.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right)));)
To implement this concept .net 1.x, you use the System.Collections.Specialized.BitVector32 class, and initialise it with your value (e.g. 10 from the previous example), and then check for each process key, as follows:
int stepsToRun = int.Parse(ConfigurationSettings.AppSettings["myApp.StepsToRun"]);
BitVector32 bitWiseFlag = new System.Collections.Specialized.BitVector32(stagesToRun);
if (bitWiseFlag[1]) { // Do step 1...
if (bitWiseFlag[2]) { // Do step 2...
if (bitWiseFlag[4]) { // Do step 3...
if (bitWiseFlag[8]) { // Do step 4...
if (bitWiseFlag[16]) { // Do step 5...
...
So, not something one might use every day, but it's another tool in your toolbox.
[By the way, this concept is used in the Reflection.BindingFlags enum, but it is used in a convoluted way - you can set explicit options, but only if you also set other explicit options. Before using something like ExactMatch, which is supposed to speed up the reflection, you also need to set whether the member is a static or instance member, as well as its scope. I discovered this on this post on Brad Adams' blog early this week while trying to implement some dynamic caching.]
I was browsing around the WinFX site recently, and I found this interesting article on RSS Support in Longhorn. Basically what it amounts to is that Microsoft is quite literally building RSS-related functions directly into the OS itself. There are 3 key ways that this will occur:
1) "Common RSS Feed List" - This means that a feed is not subscribed to in a specific tool, but rather in an underlying operating system store that any application can check against. This means, for example, that we could develop an application that could immediately consume any of the user's current feeds.
2) "Common RSS Data Store" - Any feeds that provide "enclosures" (file content embedded in the post, such as an mp3 in a podcast, or a jpeg in a photoblog) would be downloaded to a shared location (somewhere in My Documents, I think) that any application can process. Microsoft sees this as facilitating, for example, a contact management type system where iCal files are sent down the feed.
3) "RSS Platform Sync Engine" - Um, basically pulling the feeds (definitely a handy function). Seriously, this is monitoring of the feed retrieval, such as using idle bandwidth.
In addition, Microsoft is talking about custom extension to RSS (so-called "Simple List Extensions") that provide additional data such as custom ordering information for posts. This would facilitate notions such as wish list feed ordering based on priority rather than just date. There is also a bit of a worry around "custom" extensions, so it will be interesting to note how / how open Microsoft implements this...
This whole idea a fascinating move. First of all, it's potentially a bit alarming that Microsoft will have access to everything we're interested in (a bit of an automatic Big-Brother paranoia). More than this, it will definitely raise some interesting possibilities. I can think of 2 examples off the top of my head, for example: any tool that you install could add its feed into this store so you could be automatically notified about updates. I wonder if there will be automatic categories, such as "Products", to facilitate this? Another idea is for retailers, such as Amazon, tracking your favourite bloggers and matching them to author searches. For example, if I follow Dino Esposito's blog, Amazon could track it (with permission, hopefully - notice I didn't mention "A record company such as Sony" ;->), and notify me when a new book of his is available. Conference organisers could do the same for speakers, i guess.
Anyway, it's an interesting idea. I wonder where it will lead....?
My boss recently changed domains, and when he did so he could no longer access the strong name keyfile we'd installed a while back to compile an assembly. sn.exe would not delete the keyfile, and we couldn't re-add it because it existed. When trying to delete, we got an "8013141C" error - "Failed to install key pair -- Object already exists.". Some Googling found this link, which sorted it out. What you need to do is:
1)browse to %SystemDrive%\Documents and Settings\AllUsers\ApplicationData\Microsoft\Crypto\RSA\MachineKeys
2) Grant rights to Adminstrators, or whatever group you belong to
3) Take Ownership of this folder (click Advanced under Security, and then click the Ownership tab at the top)
4) Apply the changes to the children ("Replace permission...")
Hmm, my SQL Express'es are also not installing :-(. I've got the direct installation as well as the one that ships with Visual C# Express. It keeps complaining of (amongst other things) SQLNCLI.msi faults. Ho Hum.
[update: I just realised, isn't SQL Express at RTM?? I just pulled it of microsoft.com this week. WinFX beta / ctp I can understand giving trouble, but not a simultaneous RTM release!]
I'm trying to install the WinFX beta on an XP VPC, and it failed a few times before I checked the Event Log. I'm running framework version v2.0.50727, but the error is as follows:
"Product: Windows Presentation Foundation September CTP v6.0.5215.50818 -- You must install v2.0.50215 of the Common Language Runtime before installing Windows Presentation Foundation September CTP."
Anyone been here? I'm going to keep looking in the meantime.
Also, some parts I quite enjoyed on the installation troubleshooting page were:
1) "Microsoft .NET Framework Redistributable 2.0 Beta 2 install fails on a 64-bit machine with error code 25008."
solution: "Install a new operating system..." hmm, interesting advice from Microsoft...
2) "Launching Maintenance Mode from Add or Remove Programs can take several minutes and might give the appearance that setup has failed."
solution: "Be patient...". Deep.
I've been downloading a couple of things from MS lately (like the WinFX September CTP), and I am getting really annoyed by having to download setup files that do very little but download the actual install files. I download during the day at the office because I don't have a connection at home at the moment, but I only get to install and play with the stuff after hours. However at home, when I finally get to look at the files I don't actually have them!
Am I the only one that is annoyed by this. I mean, what's the point? These are technical downloads (SDKs, etc.). You would hope the people that get these downloads can choose from a simple menu like x86 or x64, and download real installs! Yes, sometimes the option does appear at the bottom of the page, but not always, and I still don't get the point anyway. You're just adding another 3mb download.
OK, gripe over, Have a Nice Day
One of the awesome speakers we had at Tech Ed was
Julie Lerman, who I was fortunate not only to chat with a few times, but also to have my
photo taken together with her in the speaker's lounge. The photo itself was taken by another one of the outstanding visitors -
Kate Gregory. Hopefully they'll all be back next year, too?
From Slashdot:
"For those Star Trek fans wondering what to ask for this Christmas, you may wish to consider The Ultimate Star Trek Collection to be released on November 15. For just (cough) $2499.99, you'll get 212, count them, 212 DVDs with everything ever produced under the name, including all seasons of all five telvision series as well as the ten feature films. Before loading up your disc changer and hitting play, remember to get up once in a while."
Ok, methinks that's a teeeeensy bit too much Star Trek. We're waay past the scary mark.