Managed World

Techno-babble from yet another babbler RSS 2.0
# Tuesday, September 05, 2006

Jim Johnson has a new post about how to use TxF with the new model in Vista RC1. You will obviously need the RC1 bits to mess around with it.

I'm hoping to expand on this topic in the future to show some code samples of using it not only by itself, but also using it with SQL and the like. I'll also have some "context" posts around that describing the architecture and relationships around TxF so you can better understand the articles.

Until then, go check out Jim's post :).

 #       Comments [0]

I know, this post isn't exactly Windows-related, but I thought it was cool nonetheless...

Miguel de Icaza recently posted on his blog on the topic of authoring file systems with Mono on Linux. Since I've been digging into File System "stuff" at work lately dealing with TxF and the like, I find this very intriguing.

With FUSE, you can essentially write user-level file systems that can be mounted in Linux. Not only that, Jon Pryor released a bridge for Mono that can be used to write file systems in Mono. Granted, I'd imagine there are some performance impacts and such that you may not want to do this in a production system (although I admit that my knowledge on the topic is NIL). It still seems like fun though. I know I have a couple of ideas that I've been batting around regarding developing my own file system driver for Windows. Perhaps I'll proof them out first on Linux and Mono in C# :).

Of course, all this makes me wonder what it would take to do this kind of thing on Windows. For those of you that may know better, is there a FUSE equivalent in the Windows arena? If there is, I wonder what it would take to create a bridge for that to enable writing mountable user-mode file systems on Windows. Hmmmmm. Maybe a post for a later date?

Posted in Programming
 #       Comments [0]
# Monday, August 28, 2006

Yup, I said it. PowerPoint as a teaching tool? It's broken. It's broken badly. And unfortunately, there is a good number of people out there who either don't realize it, or don't care.

First of all, thanks Seth Godin. Seth gave a presentation at GEL 2006 recently (link via PresentationZen, via Chris Sells), where he talked about things that are broken. He mentioned in the video that from now on out, we will start making the same observations and share with him one of his annoyances. Well, he didn't lie. It's only 24 hours later, and I'm starting to think of certain things as "broken".

This concept of "PPT As A Teaching Tool" that people seem to like? Again, it's broken. Now, as a Technical Evangelist, I think education is a big part of our job. We not only need to educate ISVs and other business partners, we need to educate other Microsoft employees, and we need to educate the community. Using PPT as a major "Teaching Tool" though? Broken. Borked. Use the right tool for the right job. If you are wanting to provide "a resource" to educate people though, don't use PowerPoint, please!

Don't get me wrong, I like PowerPoint, and it definitely has its place. But as a major resource for educating people? That is not one of them. In my opinion, PowerPoint is a means to an end, not the end itself. If you really want to educate people, don't give them a PPT deck and send them along their way. Why? Because of a phrase Edward Tufte loves: Information Density.

There is only so much information you can convey in PowerPoint because the information density of the PPT medium is so low. If you _are_ (miraculously) able to cram enough information on a slide to make the information density "almost worth it", then the PPT deck is basically useless for presentations. And if you use the PPT at a presentation that I attend, I may very well walk out the room. If there is a pet peeve that really gets to me, it's presenters that just read their slides for an hour. I'm wanting to attend a presentation, not a live PowerPoint reading. So, speak to ME, not to your slides. Involve, interact, and engage your audience.

As I've been researching various topics getting up to speed here at Microsoft, I've noticed a disturbing trend. I would say that 95% of the PowerPoint decks that I've grabbed from previous events are flooded with information on the deck, and ZERO speaker notes. If I was a speaker wanting to reuse that deck on a technology that I'm not the most familiar with, this would be almost useless for me. We need to change this. In my humble opinion, the majority of content you find when opening a technical PowerPoint deck should be located in the speaker notes, _not_ in the slides themselves.

I'm not here to just ramble though, I also want to brainstorm on ways to fix it. In my role, it is import to be able to educate as efficiently as possible while giving other employees the tools to empower them to do the same. So, if not PowerPoint, then what?

One of the possibilities that I've been dwelling on is the combination of screencasts (or podcasts) and white papers. Rather than simply handing off a PowerPoint deck to you, what would you think if I gave you a White Paper with very deep and rich content for you to use to truly dive into the content with. Then, on top of the White Paper, I give you a Screencast of a "light" PPT deck + a presenter riffing on it, or even just a podcast of a presenter riffing on the content of the White Paper at a higher level. For me, at least, this would be way more valuable in learning new subjects when compared to a bulleted-list via PowerPoint. What about you, though? Would that be a good way for you to learn?

As a side note, when did PPT decks become the replacement for a good white paper. When I'm trying to do research on a topic now, it seems like internet searches are starting to yield more and more power point decks. Well, if I'm digging in deep to do research, I don't want a PowerPoint deck! I want a resource with some meat to it that I can dig into. It goes back to my opinion that a PPT deck is not an end, it's a means to an end.

So, I challenge all of you to challenge yourself the way I'm trying to challenge myself. When you find yourself opening PowerPoint, ask whether it is the right tool for you to be using. And if it is the right tool and you're preparing a presentation, remind yourself that people are going to be there to hear you talk, not to read your slides. Remember, if you write complicated PowerPoint decks, not only are you communicating in a drastically inefficient manner, frankly, you're wasting everyone's time as they can read a heck of a lot faster than you can speak.

Challenge yourself! Improve yourself! I know I'm trying to. And tell you what, I have a LONG LONG way to go before I feel that I can even consider myself "decent" as a presenter and educator.

Posted in Presentation
 #       Comments [4]
# Saturday, August 26, 2006

Well, as part of relocating to Redmond, WA to work at Microsoft, my wife and I are selling our house in Battle Ground, WA (if the link is dead, you're probably reading this after it's been sold). I'm going to miss that house. It is a very cute house and it was absolutely wonderful to my wife and I.

It's within driving range of downtown Portland, OR (I used to drive to work everyday from there). It's just over 2100 sqft, 4 bedroom, two and a half baths, and in a very cute neighborhood with a park and tennis courts.

So, if you are looking for a house around the Portland, OR area (or know someone who is), feel free to check out our goods

Have I said yet that I'm really going to miss that house?

Posted in Personal
 #       Comments [3]
# Monday, August 21, 2006

You know, I don't know Robert Scoble that well, so I wasn't really wanting to chime in to respond to this post he recently made. In fact, the closest I've ever been to Scoble is that I'm now working in his old office, that's it. But after reading Jeff Sandquist's response, I have to chime in and disagree with Scoble as well.

I won't pretend to know whether Scoble's ego is out of control or not*, but Scoble, you are just wrong. I vehemently disagree with the sentiment that a blog has to be public to be a "blog". My wife blogs, is it public? No. Why? Because it deals with issues like fertility problems and other struggles. Even though it is not "public", it is available to be linked _within a smaller community_.

You can't find any posts from Google, MSN Search, or any other external search engine. However, all her posts are discoverable by other members of the community that are facing similar issues. She is getting a lot of the benefits from public blogging while being able to limit her audience to a support group that would be able to understand and sympathize with her.  I fully support her doing so, and encourage her to continue. Would I call it a blog? ABSOLUTELY. Within her community, they all gain the benefits of blogs and accomplish all five "things" that Scoble discusses (via the use of internal tools). After blogging for almost three years, I like to think at least that I perhaps "get it" more than the average Joe.

In the comments on Jeff's post, Scoble makes the following statements:

You just gave them their own name "internal blogs." Over on my blog you called them "private blogs."
Go see a trademark lawyer. You know that "Vista" is not the same thing as "Windows Vista."

Scoble, once again, you are just wrong. I don't believe this is the same thing as comparing "Vista" and "Windows Vista." Comparing "private blogs" to "public blogs" is more like comparing "wool sweater" and "polyester sweater": they are BOTH sweaters!!! They simply use a different "medium".

In my opinion, it is pretty short-sighted to say that "private blogs" or not "blogs." Think of the use of blogging within support groups: like for people suffering from HIV/AIDS, recovering Alcoholics, etc. They can have a way to communicate "publicly" within their own support group yet still remain "private" to the outside world. In a way, it is almost like comparing the "private", "protected" and "public" keywords in a programming language. Alas, I won't go down that road of comparison though :).

So please Robert, step back and look at the bigger picture. By taking the perspective you are, you are only hurting the topic that you say you are an "expert" at. If you really love blogging as much as you do, please open your eyes to the different ways blogging can be used to help make this a better world, not just the ways that "you want" to use them. Remember, you != everyone.

*although statements like "Blogging is something I'm a weeeee bit of an expert on" in this response post certainly make it seem that way. With how relatively young blogging is compared to other forms of communication, I don't believe that any single person can be considered an "expert" at it.

Posted in Blog | Rants
 #       Comments [0]
# Wednesday, August 16, 2006

A friend of mine made a good comment on my last post about TxF: "what the heck does TxF do and why should developers care?" I hope to answer that question in this post. If you've never heard of TxF, read on. If you have and still don't "grok it", read on. If you just happen to love the wonderful language that is expelled from my tranquil appendages as they dance over the keyboard, then by all means, read on as well :).

So, what is TxF? TxF is the "nick name" for a new technology coming with Vista and Longhorn Server: Transactional NTFS. You may have read about or used logging file systems in the past, and you may have used journaling file systems in the past as well. But TxF is a fully-transactional file system, all built on top of NTFS. And when I say "fully-transactional", I mean it supports full ACID transactions on the file system itself.

Why should you care about TxF? You should care about TxF because the transactions that operations are contained in are not only specific to the file system. When working with TxF, there is full support for the Distributed Transaction Coordinator as well. This means that now I can coordinate transactions between the file system and SQL. Heck, this also means that I can coordinate transactions between the file system and Windows Communication Foundation.

Just stop for a second, and think about the scenarios that this opens up to us as developers. Let's look at a Document Management System, for example. If I were to submit a new version of a file into the system, the database may have to store a hash of the file as well as a pointer to the file on the file system. The problem is that we have to now guarantee that the hash of the file in the database in identical to the version of the file on the file system (I'm of course assuming that we aren't just shoving everything into blob fields).

If we update the file on the file system first, there are at least two situations that can occur that we might have to deal with: 1) If someone tries to pull down the file before the database has been updated, then the hash comparison will fail and the file will falsely be identified as corrupt. 2) If the database update fails for any reason at all, we now have to write extra code to roll back the file manually, and in the meantime, users pulling down the file could have it falsely identified as corrupt again.

So, let's change the order. Let's say we update the database first and then the file. Unfortunately, we're not in a better position, only reversed from before. Either way we go, there is more code for us to write if we want a stable system. This is where TxF can come in to make our systems more stable and robust. We can use TxF's ability to coordinate with DTC to manage all of this for us.

First of all, it would be completely Atomic. By using DTC for our database update, and TxF for our file update, they can coordinate with each other to guarantee that either they both succeed or none of them do. That's right, if the database update fails, the file system update will be rolled back, and vice versa. The transaction is also Consistent. At the same time, the file system update is also Isolated. After we update the file and before we commit the transaction, every one outside of the transaction will still see the old version of the file (how cool is that?!?!?). And the system is Durable. If we commit the transaction and the system crashes, when it restarts, the file will be guaranteed to be updated. And all of this is handled by TxF (well, handled by the new Kernel Transaction Manager, to be specific).

That's just the beginning of the story though. Imagine this on a distributed scale. We can use TxF to manage file operations across multiple machines. We can also coordinate TxF with WCF using System.Transactions :D. So, let's say I wrote a Music Download service. As a user, I want to ensure that my credit card is not charged unless I download the file completely. This is a scenario that becomes a lot easier with TxF. If my credit card was not able to be charged, I should be not be able to keep the file. On the other hand, if I was not able to download the file successfully, my credit card should not be charged (disclaimer: there are some obvious security holes to work through in this example :P).

By adding transactional support into the file system, we are also hoping to make your lives easier in the long run. You no longer have to write extra code to self-manage the file system when dealing with distributed systems. By leveraging TxF and System.Transactions, all you basically need to do is code against "The Happy Path." You just have to ensure that if anything fails, all of it is rolled back (which is ultimately handled by the system). There are a couple of sayings I like to keep in mind as a developer: 1) The fastest running code is code that doesn't run at all (I believe I got this one from Rico M.) and 2) Code that isn't written is code that doesn't have to be tested. Easier lives through transactions :).

It's not all glitz and glamour though. In my last post on TxF, I discussed some of the "down side" of TxF as the API exists today. There were two "features" that are not implemented that I didn't mention. Mainly, at this time, we do not have support for transactions on streams, or transactions when dealing with encryption. The latter, I am told, is because of some interesting security challenges that we need to iron out first.

One of the challenges I have ahead of me as a Technical Evangelist is "spreading the word" of TxF. Even before I joined Microsoft, I had only heard about it because of a couple of things: 1) the job posting for the job I interviewed for and 2) A video about TxF made by Channel 9. There really isn't a lot of information out there on TxF. And the information you can find is largely based on Vista Beta 2 or earlier, meaning, it is now quite out of date. 

When chatting with Carlos about it, he said (and I quote): "I read a lot of blogs and that's the first I've ever heard of it." I'm pretty sure he's not the only one that would have this same reaction. Time to spread the word, my friends :). I only hope I can get a fraction of you out there as excited about TxF as I am. If I can do this, then hopefully the technology will speak for itself and word of it will spread fairly quickly.

Posted in TxF | Vista | Windows Server 2008
 #       Comments [4]

Contact

Email Me Send mail to the author(s)

Calendar

<September 2006>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

About this site

Jason Olson's thoughts on Programming, Games, Music and Life in General

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2008
Jason Olson

Sign In
All Content © 2008, Jason Olson
Theme based on 'Business' created by Christoph De Baene (delarou)