Friday, November 07, 2003


We got lovely weather forecasts for the rest of the weekend, so I'm going flying tomorrow. Have a lovely weekend!

Thursday, November 06, 2003

Managed Code

This is the direction the programming world is heading in. Well, Windows programming, at least. .NET showed us the light, but it has its limitations. When writing .NET code, you can't really get down and dirty with the hardware, or even intimate with most OS functionality. I confess: I P/Invoke regularly! (Longhorn will change this, we're promised, and it will!).

Writing managed code makes it *easier* for us, doesn't it! No more intricacies when you concatenate strings, for example. The GC is one of your best friends. But this has its dangers!!!
I expect to be flamed for saying this, but just like the clunky code we've all seen from VB6-ers, we're starting to see clunky C#. This is because we don't know what happens *under the hood*.

If you want to leverage your skills as a developer, and also crank out better software, become acquainted with csc, ildasm, and IL itself. If you can get to know the CLR JIT-ter, you're really going to be HOT :)

Jan Gray from the Microsoft CLR Performance Team wrote this great article to get you started.

Monday, November 03, 2003


First of all, WinFS is not completed yet! There might be enhancements and changes before its official release, which could be anywhere from 2005 to 2006. WinFS is not a traditional filesystem with file-indexes. Instead, it utilizes a "Yukon" relational data-engine. "Yukon" is the codename for the next release of SQL Server. There's lots of confusion in the tech-world surrounding exactly how WinFS fits together.

Try to think of the current philosophy around file management: files are stored in folders, and subfolders and sub-subfolders... This doesn't work so well for the amount of data we store nowadays. Files get lost, or become hard to find at the very least. With WinFS, you don't need to remember the *location* of what you're looking for, but rather *any information* related to what you're looking for. Imagine trying to find that song in your head... You supply information like the category (ie "Rock"), or even a few of the lyrical lines of the song. WinFS will immediately find your song, or if you didn't supply enough info, reply with a list of candidates.
It seems that in Longhorn, Explorer will be a graphical interface to a relational data store.

WinFS is backwards compatible with Win32 files, and it provides support for 'filestreams' as we know them today.

I will briefly discuss the following core areas:

One or more WinFS stores can exist on an NTFS partition. The store corresponds to an instance of the Base.Store type, which exposes meta-data and events for the store. Custom stores can be created. The set of items in a store is called a directed acyclic graph (DAG). Within a DAG, an item can have holding relationships from one or more items. There is a single root item, per store, with no holding relationships from any other items. Items in the stores are related to each other, and can be either file or non-file based.

Uniform Data Model
The data model provides the following concepts (from the SDK):

All items in a store are XML-serializable.

All WinFS core functionality will be exposed via API's. The API's define strongly typed .NET classes for use with languages like C# or VB.NET. Some examples are functions to create or delete stores, or to search for a file (I sometimes wonder if files should still be called "files" in this "filesystem"!) based on its metadata. Examples of pre-defined types are Person, File, and Document.

Core Services
This includes Synchronization, InfoAgents and File System Services. Standard InfoAgents will be shipped, but developers can create their own. A user will configure an InfoAgent to perform a chosen action when a specified condition is met in the filesystem, for example if I had a new picture to "My Photos", my mom will automatically be notified via email. Synchronization will include functionality to synchronize contacts between your computers, for example.
Custom services will be written, like AntiVirus software. Microsoft has coined a new term: "Services Oriented Programming", which is worth to read up on.

I've seen C# code specific to WinFS types, and it looks daunting.
From the documentation:
"At one end of the spectrum you can use relational APIs, including ADO.Net and OLE-DB, but miss the item oriented aspect of WinFS. At the other end, you get Win32, but miss the relational aspects of WinFS. The "WinFS" API merges both aspects into a single programming model."
I feel as if there's just too much to learn! It is a total new philosophy regarding data storage and retrieval. Isn't this just typical of the software-world! Our brains will never rest :)

Sunday, November 02, 2003

I've been having little sleep over the last few days. It's been a great weekend, but I've failed to deliver the promised info on Longhorn. I have been checking out WinFS, and I can say that the little I know gets me excited. Forget about the definition you have for the word 'filesystem'. Think more in the lines of 'LIVE relational data engine'. I'm posting more on this tonight.

This page is powered by Blogger. Isn't yours?