My Gestalt

Understand the chaotic world by developing meaningful perception through the acquisition of seemingly disparate knowledge.

Collect information in large quantity with precise detail and connect the dots of meaning to form your own picture of the universe.

Act upon it

Knowledge and understanding without action is waste.

Be Grateful

Never underestimate the power of gratitude.


Forgiveness will make your heart happy. Forgiveness is not about someone deserving it, it's about healing your heart.

Entries in Microsoft (47)


Why the Microsoft Courier could change everything

We’ve all seen the Courier speculations… if you haven’t go look here for some new info or watch this Video:

I have basically been trying to emulate this functionality on my tablets PCs with very little success ever since I got one…

So what makes this different and unique from something like the iPad?  First of all its Pen Based, the iPad is touch based and doesn’t even have an option of a pen. So that begs the question, if I have Multitouch and a virtual keyboard do I even need a pen? 


I am far more comfortable using a pen for quick notes and drawing than I ever will be with my finger.  I can’t write text like finger-painting.

Circle/Cut/Drag/Paste/Annotate is exactly what I need to do most and if you watch the video above you will see that this is exactly the target of the Courier.

I want something small enough to carry without being cumbersome, with enough journal type functionality it can stand on its own.  I want to carry this IN ADDITION to a phone (which is too small to be practical) and a powerful notebook that I will use mostly for Developing Software.  I already carry two notebooks, but one is almost never used: the Acer 1420P which turns out to be a HUGE disappointment in functionality, it has every radio known to man, which is great, but the pen is a joke and the touch is resistive and leaves a lot to be desired, I may give this to one of my kids.

Convergence will never happen, I gave up on that a long time ago, segregating what I do on 3 different devices makes perfect sense. 

1.I want a phone that also lets me read an email, send SMS, Display Maps and do a quick browse of the internet.

2.I need a laptop powerful enough to write software, but is generally to big to whip out for meeting notes, or brainstorming… in fact it won’t be a Tablet.

3.Lastly I need something to organize my Mindmaps, Notes and Sketches for general work, this is where the Courier would fit perfectly.

Originally when I first saw the iPad I thought it would work, but I need a PEN.  I also need expansion or at least the ability to save things externally.  I don’t want to connect my device to a PC to sync stuff, it needs to stand alone.

Why the Courier can change everything…

First I have to assume it is a fairly open model like the Windows Phone 7 Series will be which uses XNA and Silverlight as the development platform.  We can assume that since they run the same OS on the courier, developing will be the same.

Secondly, and this is vitally important, is that Steve Ballmer just said that by the end of the year 90% of all Microsoft Employees will be working on Cloud solutions.  This is critical because one of the biggest problems I have with OneNote is syncing.  Currently I use Mesh, but that is not really optimal for the purpose and is limited to 5Gigs, a large capacity drive in the cloud completely solves this, but it MUST interact seamlessly with all my devices, this is where things like AWS fall down.  No one is going to install Sharepoint just to sync OneNote files, well I did once and gave up because it was too much of a hassle.

I want to be able to send my wife a OneNote notebook of a trip I am on so she can see it, do some editing and send it back.  Currently this is agony to pull off.

I need a damned Calendar that syncs properly to every device I have, maybe this will get solved in the next release of Office, but I am not holding my breathe.

This plumbing is the sort of stuff no one wants to think about.

Give me a few hundred gigs in the Cloud, a Phone that does simple things in my pocket and a Notebook that actually works well with Pen and Voice, connecting to a 3G network, has at least an 8 hour battery life and doesn’t require a nuclear power pack to run, this is what I see the courier doing for us in the next couple years.  I certainly need a fairly powerful machine for development and I don’t want to pull that out every time I need to check my journal.


Excellent guide for building your BootFromVHD Images

With the introduction of Windows 7 we have a new method we can use for booting. There is also a backport for Vista if you are so inclined to still run that as your main OS

The Windows(R) Image to Virtual Hard Disk (WIM2VHD) command-line tool allows you to create sysprepped VHD images from any Windows 7 installation source. VHDs created by WIM2VHD will boot directly to the Out Of Box Experience, ready for your first-use customizations. You can also automate the OOBE by supplying your own unattend.xml file, making the possibilities limitless.
Fresh squeezed, organically grown, free-range VHDs – just like Mom used to make – that work with Virtual PC, Virtual Server, Microsoft Hyper-V, and Windows 7’s new Native VHD-Boot functionality!

Win7, 2008 R2, Boot from VHD and more! - Christopher Kusek, Technology Evangelist

I am using this same technique for my main desktop and Laptop.  By creating the VHD images I just copied it to the new machine ran my BCDEDIT script and booted.

No re-install from DVD, find an ISO Loader, etc.

Welcome to the new Virtual World.

In addition, I now employ Differencing Disks on my MAIN OS.  You know what this means?

I can install Betas to my heart’s content and run them at pretty much full speed with no worry of trashing my OS. I am getting about a 3% performance hit from the VHD on an SSD and I have FULL Hardware support.

I have never liked the 10% or more performance hit I was getting from Virtual Machines as well as the pain of double Natting and hardware limitations they have.

BootFromVHD is really awesome for a development machine or for someone who tends to try out a lot of software.  If something goes horribly wrong, simply drop the Differencing Disk.

You do have to take merging down the differencing disk into consideration, as well as creating a new one before installing big Betas but they are stackable.  I have 4 or 5 differencing disks sometimes. for example, I have VS2010 and VS2008 in separate spaces and a third that has them side by side. Then I have a differencing disk for trying out new programs.  My Main OS Install is not touched unless I merge the differencing disk down.

There are some drawbacks, you can’t BootFromVHD with anything but Windows, and only with Vista, Server 2008 and Win7, but that is fine for me, I don’t need to boot to Linux or XP on my dev boxes.  You also can’t do some things like Windows Experience Index, but I don’t need to do that most of the time and I have other machines for that sort of thing.

I would suspect that at some point this will become a pretty common scenario once Windows developers figure out just how nice it is to develop in this environment.

One thing that always bugged me was installing device drivers in a VM, it’s much easier with BootFromVHD and if the driver BSODs, bye-bye differencing disk, no restore/rollback necessary.

Here is a guide for doing it with ONLY the Win7 Install CD if you don't need/want a sysprepped image


EntityDB: The next great Microsoft tool (if they would just make it)

Reading in the Industry blogs, official samples and documentation provided with MS SQL Server 2005+, Visual Studio 2008 and Linq to Sql and the Entity Framework, you will get the impression that we have a tremendous ability to efficiently decipher how to interact with a Database.  Additionally, Industry leaders have led us down a path of Code Generators, Designers and the separation of UI Design from functional Object code; read "Astoria" and/or "MVC" here...

Didn't CASE do this sort of thing for us years ago?  Didn't it also fail?  There is huge amount of traffic about the topic of "Falling down when you hit a threshold" and insistence that all things should be built ultra-scalable.  OK, that's great if you love to write plumbing.  I for one, don't. What if that could be done for you, with the most efficient options always at your disposal; of course with the opportunity to tweak and extend to meet a specific need.

While there are many great arguments to be had over what is exactly ultra-efficient and those who think they have a better method must be able to override and extend the selected generation of code that is offered by not only being able to write that code, but also to inject it into the Generated Code (or at the least allowed to edit the templates) produced by Visual Studio.

If you don't already know why this is so important, we need to first look at the massive shift in Business Software Development and where we are going to be running most business applications.  We used to run all our apps on our own hardware, inside our own network and everything was under our tight control.  While this model still applies to much corporate development, I believe it will become less and less used as a cost effective alternative to a HOSTED solution.  Pricing of hosted solutions have plummeted in recent years, in fact I am almost willing to bet that the cost of electricity alone using hardware just a few years old would cover the cost of a hosted solution.  And what happens when I DO need to scale, How do I add 20 servers to the Web Farm overnight?  Staffing requirements and maintenance of hardware start to become totally offset when we look at this model. I CANNOT BUILD A SERVER CHEAPER THAN I CAN HOST ONE!  That is the real bottom line.

I would wager that MOST applications would run just fine on a hosted solution with one machine doing all the work, at least in the beginning, or at least with a hoster that gives you Web on one machine and your DB on another.  Are we talking about every solution here?  No, but I think we are talking about a gigantic sector of the market that is currently all but ignored by the provided tools we have at our disposal.

Don't get me wrong here, we have GREAT tools available and more coming, do they target what is really needed?

First lets look at the three new primary tools given to us by Microsoft.  WCF, Linq to Sql and the Entity Framework.  WCF provides a great pipeline to pass data between our UI, Business Objects and Database, but it just plumbing.  Linq to Sql and EF provide a great way to interact with a Database IF and ONLY If you have a proper database in place first.

What does this mean to most data-driven development projects?  It means they either need a DBA, or they need to hire one for the portion of the application that defines the database.  This is one reason Migrations for Ruby on Rails has gained so much popularity, it hides this chore.  Most of us don't care about the DB, it's just a place that holds data.  Some of you can go on and on all day about the subtleties of databases but that is completely outside the scope of what I am talking about here. Not only will Migrations create a DB and Schema around what your App needs, it will also keep it up to date with changes made by any developer that can be easily stored in Version Control software like SVN or TFS.

This is what the Designers for Linq to Sql and/or Entity Framework need to do for us.  I really don't mind changing my Linq to SQL Apps over to Entity Framework if it will allow us to focus on one great technology.  It's great that they can operate against a currently created database, but they should also create one (IN AN OPTIMIZED WAY) when one does not exist.  It should create Stored Procedures if I tell it to... Even if we are migrating a legacy application, I would still like to see what a tool spits out for me.  I just might use the new techniques.  There are tons of ways to move data from one schema to another, again, outside the scope of this article.  So back to the scope...  EF Does a great job of creating an interaction between Database and Business Objects, but it doesn't help us rapidly create a NEW model without an existing database and I think this is important in two ways, first and foremost, I don't want to write any plumbing code to do this.  The tools are smart enough already to do almost all the work for us, it can go just a little bit further and create the expected interaction that solves most of the interaction of the database work for us.  I can create a Model with the EF Designer by adding Properties and Associations, but it won't go and create a database around that model.

I should not have to know about how the interaction happens, just that it does and that it does so in a fairly efficient manner.  If I lose a certain percentage of performance due to layers, then so be it if I can create my application 10 times faster.  If the tool developers choose to implement change tracking in a DataContext or Object Context that is great, do so in a way that makes sense for the CODE developers to use, not require me to go hire Database professionals to argue about the proper plumbing or storage techniques.  Linq ALREADY knows how to create efficient SQL, if it did so in code generation vs. dynamically at runtime who cares?

We can host a solution out in the cloud so should we need to be worried about the optimization of how our application persists its data?  Certainly there is is need to cover legacy applications and all the DBAs running around out there, that is well covered right now.  What we seem to be missing is the ability for competent application developers to create Rich Internet Applications (read Silverlight and Ajax) and have the data persisted without a bunch of plumbing and tweaking.

What is NOT covered is the ability to rapidly envision, design, develop and deploy solutions destined to live on a Hosted Solution -- even if it is "hosted" internally.  This solution will most likely have a distinct separation between UI, Business Objects and Database, but do I really need to see those distinctions in my code?  Not really.  Do I really need to spend the time to wire up all the Databinding when the MetaData already knows what I need to do?  No Way, a tool can create that for us.  It can already look into our metadata and see what we need to do to hook up a DataGridView to a table.

I would venture to say that the tools are already here, they just don't work the way we need them to so we can build these applications quickly.  I spend MOST of my time Creating a Database, then working on plumbing and interactions between the Database and the UI, I should not have to do this any more.  Microsoft did a fabulous job of giving us a database that can scale with us as our application grows.  We have SQL CE, SQL Server Express and SQL Server Enterprise to grow with us, we can use SQL CE for Mobile Apps and offline stuff, wouldn't it be wonderful if I did not have to architect that portion of the solution any more?  I am talking about the people who do not have the luxury of a full time DBA.

Of course, the solution is there, staring us right in the face, the answer is the Designer for Entity Framework.  If this Designer could be used to build out the Database, and track the Schema changes, then it would take down part of the battle, just a little more work and it could completely remove the NEED (we should always have the option to extend and modify though) for us to write anything between the Business Objects and the Database.

We should not need to write Serializers for Silverlight, WCF or anything else, the tools already KNOW how to do that, they just don't.  The MetaData is there, let's use it.  Rob Conery's Subsonic and ActiveRecord shows there is interest in such a tool, but I say this tool needs to come from Microsoft and it needs to be built into the current generation of tools we are using or are being pushed to use (aka Linq).  With Rob and Phil working AT Microsoft why can't they contribute some of that knowledge over to the ADO team and get this into the EF Tools we need.  Pablo, Mike, Dinesh and the rest of the ADO Team are doing a great job so far, but they are only touching on what we really need.  The newest version of EF finally gets a way to do disconnected graphs which is a step towards the goal thanks to Danny Simmons.

These tools need to work seamlessly with Linq and allow me as a developer to write applications with little or no concern for how my data is persisting.  I want to create Controls that I can offer to my UI which work seamlessly with Ajax or Silverlight and not require me to write a ton of plumbing just to move things back and forth from one layer to another.

This is the challenge for the new world of development.  We have already moved to a hosted world and our tools need to move there with us. But what do I know, I am a VB developer first and foremost... This is what I know, my customers are asking me to create these applications and to create them really fast.  I can choose to use the tools I know best or I can branch out and find something new.  The problem here is that I have already invested years of time to learn the tools I am using and they are simply not doing what I need them to do to make my job truly easier. 

My Invoice Object doesn't really need to know what DataContext my Customer Object lives in and I as a developer should not have to be concerned about that in the slightest.  I should be able to freely take a Customer I loaded from Invoice "A" and assign it to be used for Invoice "B" without worrying what context it came from, Invoice "B" just needs to know its a valid Customer or that it is a new one I just created without me forcing something into the plumbing to test it.  It should know how to roll itself back when I cancel changes, etc.

With Generics and XML Literals, VB is a Top Notch Code Generator.  Kathleen has proven that here and Karl talks about Metadata and what we can do with it over here... We don't need Yet Another Code Generator.  We need something that works with the existing modelers and designers and just makes our life as developers easier.  It needs to be INSIDE Visual Studio and we need to be able to work with the templates.  I should not need LLBLGen or MyGeneration or CodeSmith or SubSonic to do something Visual Studio pretty much already knows HOW to do, it just doesn't.  I don't need another designer that works with an existing database, I need the CURRENT Designers to Make the Database AND the plumbing.

I personally think this should be the direction for the next revision of Visual Basic.  VB IS the glue that puts the framework together, sure you could also do it in C# (if they added XML Literals...) but VB is already geared for it so why not enhance it's productivity even further by giving us a way to be far more productive than we are today.  This does not require any great shift in the tools we already have, it just requires Microsoft to use them smarter and provide us the keys we need to open the door.


It's Time for more Fun with Betas that are out of sync...

I am working extensively with Linq as well as Silverlight.  Unfortunately they are not in the same release cycle :(

So for now, I am back to running my development machine with 2 Hard Drives. (because VMs suck on my laptop...)

Further info here: Error installing Visual Studio 2008 SP1 Beta and Silverlight Tools Beta 1


[total tangent department]

Maybe I can get a new Laptop soon with a 17" screen, Hyper-V and 64Bit OS... and Tablet functionality... not holding my breath... they don't exist.  I just might have to build one, but I am not feeling that adventurous this month.  Maybe I'll just dedicate a small notebook to notes, but that defeats the purpose for me in most cases.

[/total tangent department]


Why do installers need to be painful

When installing Silverlight 2.0 beta 1 I encountered the following error:

An Error Has Occurred:
Silverlight Tools cannot be installed because one or more of the following conditions is true:

1. Visual Studio 2008 RTM is not installed.
2. The Web Authoring feature of Visual Studio is not installed.
3. A previous version of the Silverlight Runtime is installed.
4. A previous version of the Silverlight SDK is installed.
5. The Visual Studio Update KB949325 is installed.
6. A previous version of Silverlight Tools is installed.

To continue, please install or uninstall the appropriate products and run this installer again.

First of all... This is ridiculous, the installer knows EXACTLY what is missing... so what is it?  Why do I need to hunt down one of 6 possible problems?  Just tell me EXACTLY what is wrong, or better yet, FIX IT!  If I need to uninstall something, then DO IT, obviously that is what I WANT to do to make this work.  If I need to Install something, then go get it and install it (unless of course it is VS08 which would make me a complete idiot for trying to install this without that)  or point to the Trial Version with a darned link already.

I know that VS08  and the Web Authoring feature are installed...
I already uninstalled the previous Silverlight stuff I have...
I looked in Installed Updates and don't see the referenced KB Update...
I already uninstalled the previous SDK Tools and Rebooted...

So, this "error" is of course, NO HELP.

If companies want to make tools and have them get widespread adoption, then they need to be smart and helpful, not say:

Uhhhh, something bad happened and I can't help you, later dude.

So, where is the log of the installer so I can manually go track down an error that the installer should be intelligently informing me about...


Apparently the Registry Entry “HKLM\SOFTWARE\Microsoft\VisualStudio\9.0\ToolboxPages\Silverlight Components” must not exist or the installer fails.  After simply removing this entry, the install worked without a hitch.  This must not get removed correctly by some versions of the Silverlight Tools.

More information for resolving problems can be found here.



Scott Guthrie is coming back to Scottsdale - March 11th

AZGroups is pleased to announce of a visit to our valley of the sun of
Microsoft software development visionary Scott Guthrie. Our fifth annual
Arizona .NET User Group (100% free) event brings you a chance to spend some
time with an original inventor and creator ASP.NET. Scott has been busy
since ASP.Net was first launched and now presides over product development
efforts for Visual Studio, Silverlight, ASP.NET, IIS and Expression Tools.
If you have used these tools you have Scott Guthrie to thank. Many
developers, however, see beyond Scott's formidable product manager status,
and find a cut-to-chase, blog-friendly mentor helping to improve they way we
work and utilize Microsoft developer tools. Don't miss this opportunity to
experience one of the brightest and most down-to-earth technologists Redmond
has to offer.

See you there!

Scott's events in the past have always been the most informative, worthwhile events I have attended in Phoenix.  If you are a Developer, Designer, Architect, or Project Manager this is a MUST ATTEND event.


Xbox 360 + Xvid = Awesome

I am pleased to report that my foray into getting Xvid content running natively on an Xbox 360 since the Dec 4th Dashbord update is working VERY well.  I am in the process of writing a better uPnP Server (using VB and Linq of course) to handle my library.  I had originally hoped we would have Xvid/Divx support on the 360 and I am quite pleased that now we do and it works perfectly for me.

I have tried a couple different uPnP servers out there, TVersity, uShare and some others, they are all lacking when you want a rich interface for the server and high quality, easy to use management of your Library with thousands of files.

I started leveraging the capability of Xvid years ago to reduce the storage size of my library as well as having centralized storage for all my personal media so I can share it around the house on different TVs in the house.

And lets not forget that MP3s are still a chore to wrangle and manage, being able to play these on a device you can buy new for $399 or used for like $100-200 and still use as a Top Notch Gaming system as well is really awesome!  And I didn't have to hack a thing, it just works.


Xbox Team : December 2007 System Update

December 2007 System Update

Hello Everyone!

Coming shortly is our December 2007 System Update, one where we've added a lot of new features that you guys have been asking for. You should be prompted for the update early next week on December 4th.

Xbox Team : December 2007 System Update

This is not only the most exciting update I've seen to the Xbox 360, it is also the most compelling reason for me to go out and buy another one!

An Xbox lives in many rooms in my house right now, there are only 2 things I still want now that we FINALLY have Divx support.

  1. I want XNA Support for VB!!!
  2. We need Silverlight 2.0 Support

I know for a fact that some Silverlight support has at least been demoed for the Xbox but I don't believe this was running on an Xbox.

VB Developers should be allowed to be XNA Developers!  This stems from there not being a build of the VB Runtime yet for the Xbox.  Hopefully this will be cleared up soon, there is some talk about the VB Runtime not being required any more in VB.Next but nothing firm.  I'd much rather see a port of the runtime to work on the Xbox so we can just start writing games in VB Now.  There were a ton of great PC Games written in VB3 and up, it only makes sense that many of those developers would love to be writing titles for the Xbox.

With support for Silverlight, we could have awesome media library connections and Home Server applications that would be displayed on our main Entertainment / Living Room system.  I'm hoping both those updates roll out soon and I will then commit all my entertainment type development to the Xbox.

I really look forward to testing out the Divx update on Tuesday and if it works as expected, I will finally be building my Library system with the Xbox in mind.


ScottGu on ASP.NET 3.5, Silverlight 2.0, and IIS7

.NET Web Product Roadmap (ASP.NET, Silverlight, IIS7) - ScottGu's Blog

Of Note is the changing of the Release name for the next version of Silverlight:

Previously we've been referring to this .NET-enabled Silverlight release as "Silverlight V1.1".  After stepping back and looking at all the new features in it (the above list is only a subset - there are many more we aren't sharing yet), we've realized that calling it a point release doesn't really reflect the true nature of it.  Consequently we have decided to change the name and refer to it as "Silverlight V2.0" going forward.

I had some OMG moments when reading this entry.

Significantly on Silverlight 2.0

WPF UI Framework: The current Silverlight Alpha release only includes basic controls support and a managed API for UI drawing.  The next public Silverlight preview will add support for the higher level features of the WPF UI framework.  These include: the extensible control framework model, layout manager support, two-way data-binding support, and control template and skinning support.  The WPF UI Framework features in Silverlight will be a compatible subset of the WPF UI Framework features in last week's .NET Framework 3.5 release.

Currently in Silverlight 1.1, the UI IS NOT compatible with WPF.  making it a compatible subset means that you can take a Silverlight App and recompile it in a Windows App and it will work without modification.  This is a MAJOR improvement and something I have really wanted, specifically for a project I am working on right now.  If I am reading that wrong, someone please enlighten me.

We will be releasing a Beta of Silverlight 2.0 in Q1 of 2008.  This Beta will support a Go-Live license that enables developers to begin building and deploying Silverlight 2.0 applications.

Go Live rocks!  Thanks Microsoft.

As I get deeper into 2.0 I will be publishing a lot of new tutorials as well.  I have been holding up a MAJOR site to put it on Silverlight 2.0.  That may release sooner on 1.1 but I sort of doubt it due to time contraints.


"ASP.NET 3.5 Extensions" release.   --> WOHOO!

The first public preview of this will be available for download next week on the web.


I have not been using MVC because it did not provide much benefit for what I do.  If Silverlight is going to be upward compatible to WPF, that just might change my mind.


ADO.NET Data Services

I absolutely cannot wait for EF and Astoria to be ready for a Go Live.  I NEED IT NOW! I NEED IT NOW! I NEED IT NOW!

ok, I'll settle down now :-)


VB guys can('t) be Zealots too

As Nick points out, there is a disturbing situation going on in a forum where there are no posted rules. So I would like to correct what nick says as VB guys CAN'T be zealots, without being punished by the overlords.

VB guys can be Zealots too - Nick's .NET Travels

I am also a zealot when it comes to VB, I love the language and have written some great applications with it.  I literally BASED MY CAREER on VB.

If I were to refer to the treatment as being brought down by "Jackbooted Facists" in the same forum, then I would probably get myself in a lot of trouble.  Who knows, maybe making a reference to it here will get me into trouble as well.

So should I and other MVPs that choose to rally support for our preferred language (and thus the reason we were awarded MVP status in the first place) be in fear of posing our opinions or lose access to our inside resources?

VB needs zealots to whack Microsoft on the head and confer with urgency either the enormous mistake they are making by excluding VB from SDKs and platforms or to get them to admit they want to KILL VB as a language and focus solely on C#.  If it is the former, then they need to get their act together and start PUSHING VB support and samples out the door by hiring a dedicated crew to produce them. 

Hey Microsoft, Feel free to hire me to participate since I am going to be DOING IT ANYWAY!