<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d11476683\x26blogName\x3dWinFX+Adventures\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://winfxadventures.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://winfxadventures.blogspot.com/\x26vt\x3d-973673445853683999', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Tuesday, May 17, 2005


It's done, I've moved my blog. You can now find it here: Innovative Development.

Wednesday, May 11, 2005

Change Of Pace

I've decided to switch things up a bit around here. For starters, I'm going to scrap the UI project. Why? For a couple of reasons actually. For one, its not the most exciting project I've got lined up. My girlfriend and I have found a really great place to move into, and I'm rather excited about it, so I've got a few projects lined up that pertain to the new place that I'd like to jump into. Another reason is my summer job. I thoroughly enjoy it, and it does take up quite a bit of my time. As such, that leaves me with less time to work on projects, so it is in my best interest to accelerate things around here. The final reason is Visual Studio 2005 Beta 2. My DVD's I ordered should be arriving in the mail any day now, and the next CTP drop of Indigo and Avalon will be arriving sometime this month. A format will be in order when the drop is made, and that will require even more of my time.

So the new project? A recipe web service! Not only do I enjoy eating food, but I also enjoy cooking as well. The new place has a really great kitchen with a lot of counter space. Now that I have my desktop running, I no longer use the laptop as my primary system. This means that the laptop could be located in the kitchen to stream music and video/television while cooking, as well as display recipes.

Essentially, recipes will be stored by the recipe service in either XML format or on a SQL database. I know, a database would be overkill for this project, but it would be nice to test out the April CTP of SQL Server (also on the DVD's). The client will contact the service to get a listing of recipes, and more information can be viewed by selecting a recipe. An image of the prepared item would be a nice addition so that you can see what you'll be cooking.

While I'm planning out the project, updates may be few and far between due to work. I appologize if anyone is upset over the cancellation of the UI project. If anyone would like to continue from where I've left the project, feel free to email me (WinFXAdventures@gmail.com) and I'll send you the files.

Wednesday, May 04, 2005

Contact Project: Header Bar

Well this is what I've managed to get done the past couple of days. It doesn't seem like much, but I've put a few hour of work into it. I think that taking on a project like this when starting with Avalon was a great idea. In doing this project, I'll be covering many different features of Avalon. So far I've gotten into Data Binding, and a fairly decent amount of styling.

It may be hard to see at first glance, but all of the controls up there, with the exception of that middle textbox, have been styled. To the left and right, you will notice the task tiles. Each of these sets of tasks are contained in a ListBox control which has been styled. A typical ListBox control displays its content vertically. In order to implement a horizontal ListBox, I simply overrode the VisualTree and implemented a StackPanel with it's Orientation property set to "Horizontal". A mistake that I made, and later seeked help for on the WinFX newsgroups, was to neglect setting the ItemsControl.IsItemsHost="True" property on this StackPanel. This lets Avalon know which control is hosting the ListBoxItems.

Styling the ListBoxItems is where the real creativity comes in. But first, a little background on Data Binding. I created two XmlDataSource items in the Resources section of my Avalon application. Each data source contains the data for the left and right ListBox's respectively, which is only the path to the image, and the caption text. The images are from the original PDC 2003 slide. I just cut the images out and cleaned up the edges a bit.

In order to implement the ListBoxItem style, I had to do a bit of thinking after first jumping in and then realizing the error I had made. Each tile is a task that can be started by the user. These tiles are going to have to behave as buttons. Buttons however, are rather ugly for this application. Instead of having to create my own control which looks like a tile yet behaves as a button, I simply overrode the VisualTree of the ListBoxItem to contain a button, and then in a separate style, I overrode the VisualTree of the button in order to give it my own appearence. I didn't do anything too special, just a DockPanel containing an Image docked to the top (with it's Source property data bound to the Tile property in the XmlDataSource) and a Label docked to the bottom (Content property bound to XmlDataSource text property).

All of the controls rest on a series of rectangles with different colours, gradients and opacities to give the appearence that the rectangle is rounded and has some depth. It took some playing around to get the colour right, and XAMLPad was a great help in speeding up that process with its on-the-fly rendering. I would have posted some snippets from my source code, but Blogger doesn't seem to allow that sort of thing. When I make some more progress, I'll post the source files here on my Blog. In the meantime if you would like a copy, send me an e-mail (WinFXAdventures[at]gmail.com) and I'll send you a copy when I get the email.

Some tips when you're just starting up with Avalon:
  • Have a couple instances of the WinFX SDK Documentation open. It's a really great resource for learning about the different controls and the properties that they expose.
  • Sign up for the Avalon newsgroups (found in the WinFX newsgroups). It's more that likely that someone else is having the same problem that you are, and that a solution has been given. I read every entry made on that newsgroup (As well as the rest of the WinFX newsgroups) and it really does help you out even if you aren't having that specific problem... yet.
  • Crank up the tunes and start playing with Avalon. You can't learn nearly as much by reading as you can by getting your hands dirty. It can get frustrating at times, but that's what the music is for. I've been playing Emanuel in the background all day (seeing them in concert tomorrow in Ottawa), and it's really helped out with the snags I've run into.
I'd love to see what everyone else out there is working on. If you've got some material up, post a link in the comments so I can take a look!

Monday, May 02, 2005

UI Imitating With Avalon

I've finally gotten my desktop system all set up and ready to go. I ran into a few problems with viruses on the network. With only SP1 installed by default from my installation CD, my system was vulnerable to attack and the virus was able to propagate to it on three seperate occasions, each time forcing me to format. I finally decided to go searching through the moving boxes for my antivirus and firewall CD's which seemed to do the trick.

I've decided to start of my Avalon escapades by recreating this Longhorn Contact window from one of the PowerPoint presentations from PDC 2003. I would have liked to have jumped right into my first real project, however Indigo templates are currently only offered on Visual Web Developer Express and I've only got C# Express at the moment. The next CTP of Avalon and Indigo isn't too far off either, so by the time it arrives, I'll hopefully have the UI for my first project all done and ready to go. I'll post some screenshots as I get more of the UI done. So far I've gotten the top marroon bar completed with some minute effects to make it appear like it has some depth. I'm currently working on styling the listbox. Once that's done I'll have to find some images that I can use for each of the tasks (New Contact, Edit Contact, etc.) If anyone has any recommendations on where to find some for this project, please contact me.

I've come to really appreciate XAMLPad. Being able to see what you are creating on the fly is a very productive feature. That being said, it does lack a needed feature. Intellisense would be nice, as I've had to flip back and forth between XAMLPad and C# Express to figure out what properties are exposed on different objects. I've tried to use Chris Anderson's AVPad, however I haven't been successful in getting it to work. It simply reports an error.

Sunday, May 01, 2005

Synchronized WinFX CTP Not Far Off

I've just read on the Avalon WinFX newsgroup that Arik Cohen, Program Manager for Avalon, has stated that they are closer to release and that they can now commit to a release date of "May 42nd." This is good news, as developers will soon be able to make use of Visual Studio Beta 2 SKU's to develop for Avalon and Indigo. Let's hope that May 42nd comes a lot sooner than it seems!

Friday, April 29, 2005

Back Home For Me, And Longhorn

It's been well over a week since my last update, but in that span of time I've written my last 3 exams, moved back home, and done all kinds of fun errands like going to the dentist and such. Doesn't everyone just enjoy the dentist? Anyways...

Longhorn's been sent home too. Microsoft has apparently decided to pull the latest build released to WinHEC attendees (Build 5048). I don't blame them either. Although I would have liked this build to have been publicly available, it is a developer preview intended for testing new hardware drivers. Much of Longhorn's feature-set was stripped out, and this is what is seems like no one has understood. Right from the day this build was released people began criticizing the user interface (or lack there-of). This should have been pretty obvious, but this is a hardware developer preview handed out at a hardware developer conference.

With that being said, there are some notable improvements (just a couple, but this is a developer preview release) that I've seen in some screenshots. The My Music and My Pictures folders have received an upgrade. On the left hand side there is a directory tree view rooted at the My Music (or My Pictures) folder. You can now browse you're music with each artist in a seperate folder without having to see everything else that you've got on your hard drive as you currently do in Windows Explorer. I just might start to make use of these folders because of this improvement. The status bars at the bottom of windows have also been modified. Their height has been increased in order to provide a richer presentation of the file metadata.

Sure this build looks like Windows XP with a little bit of a UI change, but pay attention to the above text in italics. Don't judge Longhorn on this build, it's not even close to a fraction of whats to come. Much of the improvements that come with Longhorn are under the hood, thats what people should be excited about. Yes, I'm excited about the new UI as well, but that's not what it's all about.

Wednesday, April 20, 2005

What Flavour Of Longhorn Will You Get?

Since the introduction of Windows XP, as well as with previous versions of its server line of operating systems, Microsoft has offered several different flavours, or SKU's of the operating system. Each SKU targetting a distinct class of end-users. Windows XP Home was aimed at the home user and came with little extra features. Windows XP Professional came with IIS in the box, as well as the ability to log into the machine using Remote Desktop (something that I personally feel should have been bundled with the Home SKU). Some time later, Microsoft unveiled the Media Center Edition, although in order to get a copy of this SKU, it is required that you purchase a Media Center PC from certain OEM's, and there is a specific list of hardware that can be used with these PC's.

With Longhorn on the way, I hope that Microsoft will follow one of two routes. The first, which I believe would be best for the end-user, would be to bundle everything together in one box. The second way to go about things, have two different SKU's at most, but with distinct differences in functionality.

Including everything in one box is definately possible. By the time Longhorn goes RTM, every PC is likely to have a DVD drive. You would go about installing Longhorn just as you would normally install an operating system; boot up from the optical media, select the partition you wish to install to, and start copying the 1's and 0's over. Once Longhorn has been installed, re-insert the installation DVD and from the autorun menu you can select which role you would like this installation to play in your home. Installing no additional role would give you your desktop PC experience. You could however choose to install the Longhorn Media Center functionality on this PC, or the Tablet/Mobile functionality.

The second option, and the one that I assume Microsoft will likely go if they had to decide between my two options, would be to have at most two SKU's. The first would be a standard Longhorn installation. Don't call it Home Edition or anything like that (the name for Longhorn alone would be a blog entry in itself), Windows Longhorn (or whatever name is chosen) will suffice. This SKU would target both home users and business users. A standard version of Longhorn would be installed by default, with the option of installing additional services such as IIS, and Media Center functionality. The second SKU would be the WIndows Longhorn Tablet/Mobility. This version would lack the ability to install IIS (running a website on a mobile system isn't really recommended) or the Media Center functionality, but would include core mobile functionality that Longhorn will provide, as well as the inking and handwriting recognition features. The ability to view media from a Media Center system would be a nice feature, however.

I hope that at the very least, the Media Center functionality will be available without purchasing a system from an OEM that has been dubbed a Media Center PC. I see Microsoft moving towards a new era in computing - multi-role systems. Gone will be the days of owning a desktop PC and a dedicated Media Center. By the time Longhorn goes RTM, the system that will likely be running this next generation operating system will be powered by a multi-core processor. I wouldn't be surprised if the PCI-E graphics card in that system had multi-core GPU's as well. With all this multi-threading going on, someone could be using the desktop PC in the office while it simultaneously plays and records live television for the users in the den. Moving away from the half-dozen SKU's could help Microsoft realize this possibility and make a better, richer, and cheaper experience for the end-user. I'd be interested to see how Microsoft goes about deploying Longhorn to the the consumer.