[Usual Disclaimer: my opinions in no way reflect or represent the opinions of my employer]
You'll probably hear me start cheering for TxF after a couple of posts because it is a great technology, but at this point in the ballgame, let's take a step back and take a sobering look at the state of TxF as it exists in post-Beta 2 Vista.
As I've been getting up to speed with TxF, I've realized that there is very little up-to-date information on TxF available (except for an internal presentation that was given at an internal conference). Most likely, any blog posts you'll find on the internet regarding TxF and how to use it are no longer accurate because of the newly revamped API. The extent of up-to-date information even available internally is constrained to a single presentation by the PM and the header files for the various APIs. Of course, it is one of my responsibilities to contribute to the amount of content that is available, so I suppose you could consider it job security if I do my job right :).
TxF itself, is a VERY cool technology. And to put together a managed code example of how to use the new KTM to manage transactions across files simply on the local file system is nearly trivial (you can expect to see a Screencast on Channel 9 from me on just how to do this). However, the truly interesting and compelling scenarios (I believe) don't exist simply with only files on the local file system. To me, the interesting scenarios are when you are managing transactions that span SQL and TxF, or WCF and TxF, or heck, even SQL + WCF + TxF. However, when we get to these scenarios, the "story" breaks down a bit.
If you are a C/C++ developer, you're fine, you're clear, you're out of the woods, you've been cleared for a safe landing, you can use this stuff full-force out of the box. If you are a managed code developer on the other hand, buckle your safety belt folks, we're going in for an emergency landing. To me, this part of the story, frankly, SUCKS (and trust me, we know it sucks). You heard it correctly folks, as of the post-Beta 2 API, there is no longer any Managed API into TxF. If you want to use TxF from C# (and have it work with SQL/WCF via DTC), you will be following the brown-bricked road into P/Invoke and Marshal.QueryInterface land.
The removal of the managed API can partially be attributed to the removal of the implicit transaction model, which brings up another unfortunate side-effect. When the implicit transaction model existed, you could leverage TxF with little to no code changes. You could basically instantiate a TransactionScope, have KTM enter the transactional context (EnterTransactionScope/ExitTransactionScope in kernel32.dll), and then utilize the normal File class APIs. Since the transaction model was implicit, the files would (you got it) _implicitly_ be enrolled in a KTM transaction that is being coordinated with the TransactionScope.
With the implicit model having been ousted now, there are a series of new transacted API calls that exist in kernel32. For example, there is now a CreateFileTransacted, OpenFileTransacted, etc. and they all have almost the exact same interface as their corresponding un-transacted siblings (the only real difference being that the *Transaction API calls accept some additional transaction-oriented parameters). As you can see, it is very much an explicit programming model now. Unfortunately, this means that if you have an existing product, you will have to change any file system calls necessary to leverage the new Transacted APIs. It's not too bad, but it still sucks in my humble opinion. Of course, for any managed code developers out there, it sucks more because instead of using the File class in System.IO, you now have to P/Invoke into kernel32 to get at all the Transacted APIs.
In my opinion, the challenge this presents us as a company is that if we want our managed developers out there to use this, we absolutely CAN'T expect them to use it as it exists today. I think if we tried to do that, adoption would fall flat on its face. My current thoughts are that we can perhaps release a publicly-available community wrapper (maybe on GotDotNet, CodePlex, or something else) that people can use to easily interact with TxF with very little effort. I also believe that for even that to be successful, it can't be a "totally new" API. We should leverage the existing look and feel of APIs like System.Transactions and System.IO.File to provide the TxF functionality. I'd imagine this is one effort that I'm going to try to champion and to get out there for all of you. Heck, if not for you, I'll just do it selfishly just for me since I don't want to be constantly context-switching down into P/Invoke, COM madness when writing my screencasts, demos, and other TxF code.
Don't get me wrong, there has been a lot of cool work done. And all of the reasons I've heard on why the implicit model was "broken" (or at least that implementation of an implicit model) make absolute sense. It is just another example of what you have to go through when you have to worry about backwards compatibility, app-compat, etc. Yes, in this case, it has given us a bit more work to do. But I can live with that :).
Why am I making this post? Am I a pot-stirrer? I don't believe so. I simply want to get the truth out there so you all know that there are some warts we need to remove on the product. More importantly, we are recognizing these warts and are actively engaged at trying to remedy them. I truly hope this does not dissuade you from trying it out as it is certainly very cool stuff and shows a lot of potential moving forward (which I hope you'll see as I dive into it with all of you :D).
If you haven't already, you must go checkout InfoCenter (being developed by a coworker of mine). I want it, I want it bad. A new toy to play with. Gimme gimme gimme :).
I figured I would use this blog not only to talk about some of the cool technologies I'm currently working with, but to also increase the transparency into what the role of Technical Evangelist is actually like here at Microsoft. Keep in mind, of course, that I'm new to this position and hence am still getting up to speed with the position (and will be getting up to speed for a while). One of the things I love so far about the role of a Technical Evangelist is all the different skills you get to use and all the different people you get to interact with. Today, I believe, is a good example of that. So, let's chat about my day :). Today, I came into the office planning on doing some coding with TxF (Transactional NTFS). I was happily coding away when I hit a bit of a snag (more on that in an upcoming post) and shot off an email with some questions to a Product Manager in the Enterprise Services area. He was able to answer some of my questions and is going to follow up with others on answering the others. What I find interesting about this in hindsight though, is that I actually knew of the Product Manager not through my boss, not through my direct coworkers, but through another Product Manager that I'm working with that gave me his name. It only drives home the point even more that sometimes it's not what you know, it's who you know. If what I've seen and experienced in my first couple of weeks here is any indication, this saying is especially true for a Technical Evangelist. And it's not only true when it comes to Product Teams (more on that to come). Once I shot off the email to the PM, I went to an internal site to start doing some networking with technical contacts for ISVs that I want to pursue to adopt TxF (what do you know, it's that whole "who you know" thing again). What's interesting is that being a Technical Evangelist is not only technical, it is also part sales and part marketing. If you're not willing to be a "shmoozer" or get out there to build up your professional network (meaning, you would rather site in your office and write code), then the Technical Evangelist position is definitely not for you. Luckily, for me, I like this whole aspect of the job, so I'm definitely happy so far. So, now I've done some coding, started to build up some internal ISV networking support, and I still have many other things to do. Funny, reliving my day like this makes me realize that I'm kind of like a single processor computer (okay, now you have to KNOW I'm a geek after comparing myself to a computer). You know, while I "multitask", it's not _actually_ multitasking. It's more that I switch from thread to thread getting a bit done on each everytime while still trying to minimize the amount of context switching so I can continue to be productive. If only there was a human equivalent to being Multi-Core or Multi-Proc, *then* I'd be set. Anyways..... After all of this, I switched over to start working on a powerpoint deck that is on my "deliverables list" for my boss. I figure I can dedicate a good chunk of time to this while I wait to hear back from the PM regarding my DTC questions. This powerpoint is a powerpoint roughly titled "Longhorn Server For Developers" and will outline some of the major changes/enhancements coming in Longhorn Server. To me, this is a win-win. It provides an internal/external resource that isn't really distilled in one place yet, and it gives me exposure to a bunch of new features to better build up my mental "road map" of what is coming (and to see if there are particular features that I'm very excited about and want to cover). In my research so far, it is amazing how many resources are out there available (even _just_ on Microsoft's intranet). It's definitely a lot of information to take in. The challenge I've seen so far though is that so much information I have seen on Longhorn Server is really dedicated to the ITPro crowd. What is it about Longhorn Server that the Developers should care about. It's a challenge, that's for sure. In that challenge, lies yet another challenge though. How do you take a Core OS feature, give it glitz and glamour, and make it sexy. The .NET 3.0 features? Yes, I can see how you can make those sexy. But, let's say Remote Differential Compression. How do you take something like that and make it sexy for the general development community? Yes, you can make it exciting for the hardcore geeks out there (goodness knows that I almost had a heart attack out of sheer joy when I heard those three words mentioned together). But how do you make it exciting to average Joe Developer (dare I say Mort without risking getting flamed)? It's a tough one. For sure, it will take creativity. Yet, that's another reason that I'm loving this job so far :). Basically, in a nutshell, I get paid to write code, talk to people and get them excited about the code I'm writing, be creative, work with cutting edge technologies every day, AND blog about it all to boot? Yup, that's what I get paid to do :). There are the other things like commitments and goals that I'll talk about in a future post though (which are cool in of themselves since it gives you measurable items to achieve during a year (and to get reviewed against at the end of the year)). Yup, that was my day today: Code, Chat, Email, Network, Research, Blog :D.
Posted in
This is a temporary post that was not deleted. Please delete this manually. (4fea8530-9fc3-4181-93e4-9a37ebabba2d)
Posted in
I now officially HATE Sea Fair / Fleet Week or whatever the hell it is called up here. Don't get me wrong, the Blue Angels are pretty cool. But, the traffic SUCKS. And NOONE, no official city organization or anything is doing ANYTHING about helping it out. It's like seeing Survival of the Fittest, only with cars. I'm pretty sure I saw 11 misdemeanors committed while I was on the freeway, and that's just the vehicles, not even counting the crimes committed by the humans inside. That's right, it was SO bad, the CARS were committing crimes to get around. Of course, some might argue that it is my own damn fault for trying to sift through traffic. You see, I mistakenly forgot it was Big-Scary-Underwater-Squid-Monster-Celebrating-Wicked-Fast-UFOs-Or-Whatever-The-Hell-Else-Fair this weekend. But, alas, my wife and I need to return the rental car we used while relocating today. On our way back, it took us TWO HOURS to drive a SINGLE MILE on the freeway. No lie, no exaggeration (I have witnesses to prove it). You don't quite understand. Even with my so-called "weight problem," I could have traveled that mile faster doing The Worm for goodness sakes. I don't even want to do the math to calculate what amount of measly feet per second we were traveling because I know it'll just cause me to go (as Rory so eloquently puts it) "Bat-Shit Crazy." The worst part is that these kind of conditions brings out the worst in people. You know, those people that think it's fine to drive the 3/4 mile on the shoulder and then get pissed at us (the ones that have been sitting patiently in this crap condition) when we don't let them over. Well, I'm sorry misses Important-BMW-Business-Woman-Talking-On-Your-Cell-Phone that you're running late to get your manicure. Hell, I don't care if you're going to get the crap beaten out of you by your pimp because you're running late dropping off the money from your tricks, you can wait in line like the rest of us. It amazes me how people change once they get into a car. You won't cut in line like that while you're waiting to order your Double Cheeseburger and Large Fry, but hell, you and your Beamer are so much more important than everyone else that we should be the parting waters for you like you're friggen' Moses parting the Red Sea. Well, excuse me, I don't mean to insult you, but YOU'RE NOT MOSES, DUMBASS. Get back in line, and take it like a man/woman/thing. You don't see the rest of us getting bent our of shape because we have a metaphorical banana up our metaphorical tail pipe, so chill out. (Ironic, I know, since this post itself could be constrained as being all bent out of shape myself. Well, I'll tell you a secret: I'm not exactly in the kind of mood to care about irony.) It is moments like today that I realize Darwin was a dumbass. "Survival of the Fittest", ha, that's a joke. If that were true, these people would have blown out their brains with an empty shotgun long ago. What pisses me off more is that people like this are MULTIPLYING. It almost makes me want to run for president and prevent dumb people from procreating. I know that's not very nice, but I'm a little pissy right now, and I don't particularly care. Why this Dumbass DNA is still in our Genetic Ecosystem is beyond me. On the other hand, days like today make me think that people like Trisha are perhaps the most enlightened of us all. Sooner or later, I'm sure I'll get super pissed and just sell off my car and take the bus everywhere. At least then, if I'm stuck in traffic for two hours like today, I can be doing something productive like reading, writing, or arithmetic, or saving the human race for all I know. Now if you'll excuse me, I have some H2's to go flip off.
Posted in Personal | Rants
Link to Microsoft gets good reception at Black Hat | CNET News.com I found this rather interesting. Of course, it was a small sampling of attendees and there were some others that thought it was just a huge sales pitch. Nonetheless, I'm please to see Microsoft going out and leveraging the skills of some of the best hackers out there to make Vista a more secure operating system.
|