There is one major issue still bugging me. When Vista comes out of sleep or hibernation it cannot connect to the Internet. The wireless connection with my WiFi access point becomes available again, i.e., it shows up as connected. But Windows Vista says it has no Internet connectivity and indeed I cannot ping my SpeedTouch 716 ADSL modem. Running "Diagnose and repair" does not help. The only option to get network connectivity back is to disconnect from my wireless network and manually connect again.
All in all, I am making progress and I do not regret the switch from XP to Vista like Dennis does. I am also happily using Vista at work.
*) Out of the available updates, I installed only the Dutch language pack and not all other exotic languages that became available 😉 But where is the Dutch text-to-speech version?! And will there be any other English language voices other than Microsoft Anna?!
I received a question through the contact form about the usage of my WCF ServiceProxyHelper. That blog post shows the code for the LogicaCMG.ServiceAccess.ServiceProxyHelper<TProxy, TChannel> class. This class helps you in creating a disposable wrapper around a generated Windows Communication Foundation proxy class for a service.
Suppose you have a standard generated WCF proxy class with the name TeamServiceClient which implements the service contract ITeamService. Both are generated by the svcutil.exe utility from the Windows SDK or by using "Add Service Reference" in Visual Studio. For clarity I have left out most namespaces and attributes because they are not important for this discussion:
[ServiceContract(...)] publicinterface ITeamService
GetTeamWithMembersResponse GetTeamWithMembers(GetTeamWithMembersRequest request);
public partial class TeamServiceClient: ClientBase<ITeamService>, ITeamService
GetTeamWithMembersResponse GetTeamWithMembers(GetTeamWithMembersRequest request);
You can use my ServiceProxyHelper class by deriving from it:
publicsealed TeamServiceHelper: LogicaCMG.ServiceAccess.ServiceProxyHelper<TeamServiceClient, ITeamService>
public TeamWithMembers GetTeamWithMembers(Guid teamGuid)
GetTeamWithMembersRequest = new GetTeamWithMembersRequest();
request.TeamGuid = teamGuid;
GetTeamWithMembersResponse response = Proxy.GetTeamWithMembers(request);
As you can see I have added code for the construction and unwrapping of the DataContract classes GetTeamWithMembersRequest and GetTeamWithMembersResponse.
And in your code you can call the service through this helper by using code like this:
Guid teamGuid = new Guid(...);
using (TeamServiceHelper helper = new TeamServiceHelper())
team = helper.GetTeamWithMembers(teamGuid);
This will give you guaranteed clean up of any WCF channels and such that are used behind the covers in the face of exceptions. Only expected exceptions during the clean up and closing of the channel will be ignored. Exceptions that occur when calling the service operation are not swallowed and will still be passed on to your code.
I hope this helps explain how you can use my WCF ServiceProxyHelper.
In this interview Anders explains, in terms that all programmers can understand, why LINQ and functional programming will change the way we develop applications. As Anders sometimes says, functional programming allows developers to describe what they want to do, rather than forcing them to describe how they want to do it. If you are interested in LINQ, lambdas, expression trees, deferred execution, composability, functional programming or concurrency, then you should watch this interview.
If you are interested in the future of programming, this is well worth 30 minutes of your life (*). If you already peeked into the future and you want to be reminded why LINQ is the greatest thing since sliced bread go watch it also.
I had the pleasure of seeing the first unveiling of this technology at PDC05 in LA. Anders has a great way of explaining the why behind the introduction of new technology.
Today, the details are revealed on ScottGu's blog and on Mikhail Arkhipov's blog. Mikhail blogs about the new web forms designer in "Orcas", codenamed "Sapphire". Check out the screenshots of the much improved CSS support, side-by-side view of Code and Design and new HTML designer options.
"Sapphire" has been work-in-progress since November 2004. Since the code is now integrated in the "Orcas" main code branch, this new web forms designer will become available in the upcoming February 2007 CTP.
To undo some of the "brainwashing", I just watched a video interview with Jonathan Schwartz. For those of you who don't know him, he is the CEO of Sun Microsystems. The interview was conducted by former Microsoft employee of Channel 9 fame Robert Scoble for PodTech.net and can be found up on Jonathan Schwartz's blog.
It is a very open and relaxed interview. Go see it, you might find it more enjoyable than a BillG interview 😉
On the third and last day with sessions, I attended the Software Factories workshop. We had to sign an NDA to attend this session even though only a small portion of the workshop was about future yet-to-be-disclosed technologies and product plans.
Don Smith gave the best presentation of the workshop. He mainly talked about the currently released Web Service Software Factory (WSSF) v2, so no secrets there. This version includes several code analysis rules for validating WCF configuration and semantics at design-time. WCF only validates these rules at runtime. However as I found out a year ago, code analysis is missing by design from the Team Architect SKU. The Professional Edition of Visual Studio 2005 is also missing code analysis. This severly limits the usefulness of this cool WSSF feature, because it will only work on the Team Developer SKU and the Team Suite SKU (which carries a very hefty price tag). I pinged Don about this, and he is trying to find out if code analysis can be included in Team Architect for the "Orcas" release of Visual Studio.
Last Friday, most of us who attended the Microsoft LEAP program in Redmond flew back to Amsterdam. We arrived early Saturday morning at Schiphol Airport. During the flight we were warned multiple times about heavy turbulence. Nevertheless, it was a pretty smooth ride up till about 5 minutes before landing. Here is a shaky picture of the Amsterdam ArenA that I managed to take:
My transition back to the Central European Timezone isn't feeling that smooth. I am fighting the temptation to go to sleep. If I would have gone to sleep this afternoon, I would be wide awake in the middle of the night.
A storm raged over large parts of Western Europe, including the Netherlands, last Thursday. I found everything back in one piece when I arrived home. The SBS broadcasting building nearby didn't fare so well:
Yesterday was a great day at LEAP. Overall, today was less interesting than yesterday in my opinion. RJ also blogged about today (in Dutch). He presents the facts, I will add my opinion 😉
The session on Virtualization was split in two parts. The program manager gave a very lively presentation with the main highlights of present and upcoming virtualization technologies my Microsoft. The presenter after him went into all the gory details of the new hypervisor technology. This was mainly a monotonous summing up of points.
The session about business architecture was not my cup of tea. The purpose of business architecture only became clear halfway through the presentation on the slide "Why Business Architecture?". The story was entirely technology agnostic and most examples were not even IT-focused.
The case studies presentation was split up in two parts:
Commonwealth Bank of Australia
The facts and numbers presented at the MySpace.com by its Vice President of Engineering and its Chief Software Architect were just staggering. The growth rates that these guys have to cope with are just staggering: exponential growth with a doubling rate of just a couple of months. They currently have 18 million concurrent users. Their system is mainly build on Microsoft .NET and Windows technology. All wisdom as you know it about building applications starts to break down at that scale. They have learned a lot of those lessons the hard way. Solving new classes of performance problems as they appeared.
Office Business Applications
The session on Office Business Applications just reiterated what we had already heard at a LEAP session in Barneveld. It talked about the Office System as an application platform: both for the client products like Excel, Word and Outlook as well as the Microsoft Office SharePoint Server. I recently architected and built a small Office Business Application on top of Excel using VSTO 2005 SE. The developer experience isn't all that great. The Office object model sucks big time when used from managed code. Especially when used from C#. Support for managed code still feels like a clunky after thought with Office 2007. In another project we learned that Excel Services and the Business Data Catalog in MOSS 2007 have some v1 characteristics that make them less than ideal. The OBA presentation did not go into any drawbacks on those products and did not tell us when not to use them.
Visit to the Microsoft Company Store
A highlight of today was a visit to the Microsoft company store. We were allowed to buy up to $120 of software, hardware, books and Microsoft branded merchandise at employee prices. Unfortunately, an Xbox360 fell outside the allowed price range. But being able to buy Microsoft Flight Simulator X Deluxe Edition for just $15 is a pretty sweet deal. I also bought a Microsoft LifeCam VX-6000 for $50 as my current Logitech webcam isn't supported under Windows Vista.
Walking around the campus
During the lunch break Edward, RJ, Frits and I walked around part of the Microsoft campus. There was still snow lying around.
A bit of excitement occurred when a helicopter landed on a field nearby. We went there to take a look. I took some pictures but was soon ordered by a security guard to delete those pictures. Apparently you are not allowed to take pictures of "medical emergencies" on Microsoft property if you are not a Microsoft employee. That no victim or emergency was in sight was irrelevant.
We had dinner at the New Castle Golf Club which lies on a hill. From the terrace on this hill we had a nice view on the skyline of Seattle.
Let me add that I was pleasantly surprised by the lack of product pushing by the Microsoft architects. The LEAP sessions in Barneveld (NL) were much more focussed on Microsoft products. They were mainly on the pros and not the cons of those products.
The sessions here in Redmond gave nice high-level overviews of a couple of topics that we as architects face in today's IT world.
The G-word seemed to be forbidden (apart from Gmail) but all-in-all Microsoft gave a balanced picture of software as a service.
The session by Jack Greenfield on Software Factories was the best of the day. I was already familiar with Microsoft's vision and strategy and the Sofware Factories Initiative. Hearing the man with the vision speak himself on this subject adds a lot to this.
On Thursday we can attend a workshop that goes into more depth on software factories and where Microsoft will show off early bits of the future products in this space. We have to sign a Non-Disclosure Agreement (NDA) before attending that session, so we can't blog about it.
Okay, there are people still waiting to be tagged ;). I tagged five people, out of which twopersons continued the meme. Two other persons said they would blog five personal things, yet they didn't. And the fifth didn't want to increase his number of blog postings by 50%. So I guess, my continuation score is 40%.
Before tagging a sixth person, I will reveal a sixth item which you should know already, if you read this blogcarefully.
6. I am often mistaken to be straight. I guess, because I am too straight-acting.
Today was the first day of LEAP. The program is so packed that the 10 minutes I have now are not enough to blog anything meaningful about it yet. We haven't seen much of the Microsoft campus yet as we drove in and out in the dark.
Yesterday with 6 colleagues we went to the Boeing factory in Everett, WA. Everett lies just to the north of Seattle. The Boeing factory tour led us into the giant hall where the Boeing 767, 777 and 747 airplanes are produced. In March 2007 they will start work on the new 787 "Dreamliner" plane. Unfortunately we weren't allowed to take photocameras or any other electronic equipment with us to the assembly hall. That assembly hall is the largest building in the world measured in volume. It is so big that it has its own microclimate. The hall doesn't have heating or air conditioning because it doesn't need to. A large amount of aircraft fit into this building. According to the tour guide the entire Disneyland Park California park could fit inside the building and there would still be room to spare. We saw Boeing 777 aircraft at various stages of assembly.
Next to the factory lies the Boeing "Future of Flight" visitor center. We were allowed to take pictures there. Here are a couple of those pictures:
And here is a brand new Boeing 777 waiting to be delivered to KLM