Thursday, November 30, 2006

Anti-Patterns for Test Driven Development

This is a nice and funny list of anti-patterns that you may recognize, and like me, may have used in the past. I particularly like The Inspector and Generous Leftovers. It seems to be quite difficutl to write a decent and reliable unit test without falling into the same trap again.

Wednesday, November 22, 2006

Office 2007 Developer posters

If you're into developing based on the Microsoft Office 2007 System, you may like these great A0 posters created by Microsoft.

Monday, November 20, 2006

Uninstalling Microsoft Office 2007 Beta 2

Recently, I tried to uninstall Microsoft Office 2007 Beta 2 Technical Refresh so that I can go back to Office 2003 again. Even though the uninstallation completed succesfully, Office 2003 refused to install due to some residual leftovers. Trying to delete the physical files and some obvious references in the Registry did not help either. But as usual, Google came to the rescue with a blog entry that helped me solve this problem in a glitch.

Wednesday, November 15, 2006

GhostDoc on Vista

If you, like me, have been using GhostDoc for improving the documentation of your code, you may have noticed that installing it on Vista causes some troubles. In order to succesfully install version 1.9.5 (for Visual Studio 2005), install it from the command line and make sure you use the fully qualified path to the .msi file:

msiexec /i "<fullpath>\GhostDoc1.9.5.msi"

Sunday, November 12, 2006

Leaving Barcelona

I wonder how busy the Barcelona Airport is in the middle of the summer when all those people are transfered from and to coastal areas such as Calella, Lorett de Mar and Salou; it took us almost one hour just to check in. But Saturday afternoon, at around 15:30, I finally set foot on Dutch soil again. Damn, what a difference in weather conditions. It is only a two-hour flight, but we went from a sunny 20+ degrees Celcius to a windy and rainy 5-10 degrees. I think I'll immigrate to Spain when I have the time :-)

Friday evening, we concluded our stay in Barcelona with a nice outside dinner at the Plaza Real while enjoying a nice glass of beer. At around midnight we decided to go visit the Baja Beach club just outside the city center and meet up with some of the people we met during the TechED. It is quite funny to see that this club is using the exact same formula as the equally named club in Rotterdam. In fact, by now, I know that they have the same owner, so not a coincidence after all. Since we needed to be at the airport at 10:00, we left the club to go to bed at around 2:30 in the middle of the night.

Friday, November 10, 2006

TechED is over

Oh my, this was already the last day at the 2006 Barcelona TechED for Developers. Tomorrow around noon, we'll fly back to cold and rainy Holland. That will sure be big a disappointment after enjoying a full week of warm and sunny days here in Barcelona. Anyway, still a few sessions to attend today.

The first one, Developing Smart Clients with the Smart Client Software Factory and the Composite UI Application Block covers many subjects that are very close to me. It was presented by an architect from Microsoft Austria which has been using both blocks in real-live applications. He elaborated a fair amount of time on defining the scope of CAB workitems based on functional requirements such as use cases. Because that part of the SCSF is the least well explained, I especially liked that. He also showed some nice extensions they've been creating to improve the overall design of a SCSF-based Smart Client. I forgot how much I like Smart Client applications. I foresee a happy future since new components and technologies such as software factories, WPF and Synchronization Services are arriving real soon.

I skipped the second session of the day to meet up with Don Smith, product manager for Microsoft's Web Service Factory and a colleague of Tom Hollander. He missed our demonstration of our SMART-Microsoft Software Factory during Tom's session last Tuesday. We've been talking for more than an hour to show off our DSLs and the way we have approached our productivity efforts. He has also shown recent technologies such as the Guidance Automation Extensions and how they can help us to improve the use of our factory even more. We are sure going to stay in contact. What is great to hear is that the Patterns & Practices team really listens to developers and customers working in the Microsoft community.  

I did however visit the third (and one-but-last of this year's TechED) session. One of the founders of Thinktecture. Christian Weyer, presented a level 400 (!) demo on building distributed applications with .NET 3.0 technologies. He created an awesome multi-media system consisting of several WCF services, web clients, WPF Windows clients, while employing all aspects of .NET 3.0. Stuff I've seen: WCF custom behaviours, workflow extensions, streaming video over multiple WCF channels, MSMQ queing through WCF, a WPF media player. I'm going to download that code as soon as it is available. Absolutely awesome!

Next came another Windows Forms/WPF session by Brad Adams, this time elaborating on the Windows Forms stuff and how that will work together with WPF in Visual Studio Orcas. According to this guy, Windows Forms should be used for rapid application development while WPF is great for graphical-rich applications such are often used by hospitals, control pads for operating factory machines or public systems. However, you can actually host a WPF control in a WinForms application as he proved in a demo. Shame though that they were repeating the synchronization stuff that I already saw in a previous session by Brad. Not the best presentation of this week.

And what that session, the formal part of the TechED completes with a day full of Smart Client technology. Let's enjoy this last night in Barcelona...

Thursday, November 09, 2006

Patterns & Practices' Web Service Factory

While deeply mourning over losing my Idols Contest (well, a little bit), I visited Don Smith's introduction of the P&P's Web Service Software Factory. Since we at Ordina have a lot of experience with software factories through its DSL-based SMART-Microsoft Software Factory, I was eager to find out what Microsoft has been up to here. Their Service Factory is actually pretty cool. Although ours focusses more on leveraging the business domain (using DSL Designers), their's has a more technical origin. Using the Guidance Application Toolkit and a lot of wizards and dialogs, it provides guidance for tasks like generating the solution skeleton, securing your website, adding new WCF data and service contracts, and much more. Unlike SMART-Microsoft though, it does not support a fully functional object-relational mapper or any fancy model designers. Nevertheless, I think that both solutions can benefit from eachother very well. By combining them, you'll get the best solution for reaching the optimum business value while retaining the technical flexibility to match any possible scenario.

Not this year...

Well, I just had my take in the 2006 TechED Idols Contest, and I lost. In the third wave, five contestants got a chance, but a Belgian student gave a fancy demo as if he has been doing that all his live. Well, I've tried and I give myself credits for that. The judges thought that I did have the skills, but appeared a bit unstructured (it was not clear what point I was trying to prove). Good remarks that I'm going to take into consideration next time.

The Belgian guy was even better than the UK guy from the first wave and became the 2006 TechED Idol. Rumours (from our Ordina Belgium collegues) say that he already was in contact with some Microsoft guys and even may go to Redmond anyhow. Well, I preferred him over the UK guy anyway. He was really good.

D-Day

Well, here we are at the fourth day of the 2006 TechED for Developers in Barcelona. Today I will to have to show the Idols Contest jury what I have to offer on presentation skills. Unfortunately, yesterday evening was also the right time to be at the Dutch Country drink in Barcelona City Hall night club. Drinks were free, and I forgot that I'm not used to drink that many Bacardi Coke's anymore.

Therefore, I decided to start the day with a highly interactive Whiteboard Discussion on best practices for using Team System (which is great for starting after a hangover). The session was hosted by two Team System MVPs so clearly these guys have a lot of experience. In fact, it already took 15 minutes just to prioritize the many requests from the audience, . Since I ran into many issues while working with Team System, I'd like to ask them a question or few! I sure am going to check-out their blogs later on. As a side note, I was now getting a little bit nervous for the Idols stuff during lunch...

The next session was about the synchronization issues you run into with occasionally connected Smart Client applications. It was co-presented by Microsoft's Brad Adams, which is known for his books on .NET design guidelines. As part of Visual Studio 'Orcas', they've been cooking up a framework that should help us creating applications that are as great to use as Microsoft Outlook even if you don't have a connected right now. This stuff is not yet available fully and it relies on SQL Server Compact Edition for the local database, but a CTP is supposed to arrive soon enough.

Wednesday, November 08, 2006

Halfway through the 2006 TechED for Developers

Well, here we are at the third day of a week full of technobabble and mostly nerdish guys trying to gain some attention from all those Microsoft gurus. The day started with a presentation on the class object model of Sharepoint Portal 2007 and Windows Sharepoint Services 2007 and was provided by us by Ted Pattison. It was quite technical but even as a novice Sharepoint user, I managed to learn a decent amount of new stuff. One thing we should look at when we're back home is to integrate our custom ASP.NET pages that now run separately into Sharepoint's page collection. You can then obtain some neat information from Sharepoint itself and even modify site collections, navigation bars, sites and pages in a very detailled way.

The next session was presented by one of the leading guys of the AJAX Control Toolkit team. He showed us how easy it is to enhance an existing website with AJAX animation, hovering menus, pop-ups and much more eye-candy without bothering with JavaScript code. He also explained in a lot of detail how to create your own AJAX Behaviours (client-side) and Extenders (server-side) using the base-classes in the toolkit. Although the toolkit is an open-source project by a small Microsoft team and some 3rd party contributors, they've tried to do there best to releave us of too much plumbing-related work. The toolkit is not part of the ASP.NET AJAX core functionality, but will evolve over time when more contributers will jump on the train. Really cool stuff if you ask me... 

Again, similarly to each day so far, lunch was moderate. It seems that people from the south of Europe tend to have a warm meal during lunch. But we Dutch people, prefer to have a piece of bread with ham or cheese. The only food left for us was some cold stuff that you can hardely call lunch. Bad call Microsoft!

Following lunch, I attended a session on combining Office 2007 and Windows Sharepoint Services 3.0 in a collaborating solution. The two presenters showed some neat tricks to extend Sharepoint with custom-build components (such as custom fields and validators). Since I don't have personal experience with developing in Sharepoint, this session was a little bit to deep for me. Nevertheless, I did leave the session with the knowledge that you can do pretty much everything and that it shouldn't be too difficult if you already have some basic knowledge on the Sharepoint object model.

Session four of the day was given by the famous Ivar Jacobson, co-founder of the Unified Modelling Language and Rational Unified Process. This time, he was promoting his new Essential Unified Process, a new process consisting of eight essential practices, incorporating Agile aspects, social engineering prinicples and more. His goal is to overcome the heavy weight of RUP and introduce new process that should be easy to understand, easy to use, and easy to maintain. The great thing is that he has been integrating this process in Visual Studio Team System. However, looking at the demo and the material, I think it is still in development and needs a lot of marketing.

The day completed with another Ted Pattison presentation on Windows Sharepoint Services 3.0 development, this time focusing on web parts, master pages, field types and more. I'm definitely going to order a good book on this subject now. Sharepoint has a great future. 

This completes the third day at wonderful Barcelona. Tonight, we're going to join a party organised for Dutch developers visiting the TechED. It's in the Barcelona City Hall Nightclub....

TechED Idols Contest Wave 2

During Wednesday's lunch, the second round of the 2006 TechED Idols Contest completed with another wave of three speakers.

The first one, an Italian student (part of the 2006 Imagine Cup winner team), showed a very nice demo of a Windows Sidebar Gadget hooked up to a Bluetooth heartrate monitor. He had a bad Italian accent that made him difficult to understand, and somehow none of the speakers have managed to stay within the proposes five minutes.

The next one, a UK guy living in Austria spoke so fast that nobody must have been able to keep up with him (even the native speakers). Then again, explaining ASP.NET AJAX extenders in five minutes is quite a challenge on itself. He definitely lost the group rightaway.

The third one, some East-European guy could barely speak English, so not worth mentioning. I'm astonished he actually came through the initial submission selection. But the fourth one, somebody who gained access through one of the wildcards that were made available to the audience, was not bad at all. He was a Romanian guy that presented (in good English) some stuff about user interface design.

Overall, this wave was not up to the standards set by the raw presentation power displayed during the yesterday's first wave. To my surprise, the Italian guy won this wave. I'm now starting to doubt what really excites the judge...

Day two of the TechED 2006 for Developers

Because the first day of the 2006 TechED for Developers in Barcelona was actually a pre-conference day, the second day started with the traditional keynote. I thought that the first speaker (don't recall his name), was a bit uninspiring for the 3800 developers. But they called a little eleven year old Pakistan girl on stage who obtained her first MCP exam already! Her future is guaranteed I say…

The keynote speaker, Eric Rudder, was followed by two rather impressive demos. The first one showed the full potential of combining the power of Sharepoint 2007, Office 2007 and .NET 3.0. They even used a WPF control library from Infragistics. The second demo was even impressive since it demonstrated the possibilities of the new C# 3.0 LINQ functionality, both in a database and an XML centered context.

Right after the keynote session, I met Tom Hollander to prepare for the Software Factories presentation later on that day. I even gained access to the Speaker Area :-)

The first real session of that day was about Commerce Server 2007 by Ryan Donavon. Since a client of ours is considering migrating from 2002 to 2007 (and from .NET 1.1 to 2.0), I was quite interested. Unfortunately, the session was rather moderate from a content point of view. It basically listed the differences and new features, but did not show any real code-examples or more in-depth details. What the speaker did mention was that migrating to 2007 means nothing more than running a wizard (in most cases). I would have loved to know what those exceptions were. Prices will stay the same, and there will be a free developer version. The old COM codebase is still there though.

During lunch, I had to meet-up with the Idol Contest crew and the other contestants. According to the crew, about 20 submissions have been received of which nine were selected for the real deal. However, three wildcards will be provided for daredevils that want to try it without preparation. That makes a total of 12 contestants. Three guys are natively speaking English, so that's a disadvantage for me. The Greek guy (Evangelos or something) is part of the Ask-The-Experts team so he may already have more stage experience than me.

I was planning to go to a live demonstration on Sharepoint 2007, Windows Workflow Foundation and Infopath, but that session was already full in minutes, so I had to fall back on a presentation on C# language innovation by Karin Liu. No tears necessary though, since she give a very nice presentation on how typical limitations of one C# version have been addressed in the next version, up to and including C# 3.0. I really liked the stuff on how LINQ works under the hood and what C# 3.0 functions have been introduced to make this all possible.

The last session of the day dealt with all the new stuff for Web developers that becomes available in Visual Studio "orcas" (and .NET 3.5). Expect a lot of cool stuff to improve the productivity of the design-tools within Visual Studio such as: improved ASP.NET designers, seamless integration of new technologies such as AJAX, Intellisense and debugging support for JavaScript, and finally, LINQ designers. One notable aspect of LINQ was that it provides a full-blown object-relational mapper making products like Nhibernate obsolete. They also showed a command-line tool that generates a complete and fancy ASP.NET 2.0 website that provides extensive maintenance screens using a database schema as its source.

The day concluded with an introduction reception at the central Exhibition Hall. Microsoft has a history of spectacular parties (even the one at the DevDays 2006 was nice), so imagine the disappointment when there was no party at all. No music, no (exotic) dancers, no nothing. Well, the snacks were nice and there were some dressed up actors pretending to be fortune tellers, santa clause or something else peculiar. Hopefully, the Dutch party at the Barcelona City Hall Nightclub on Wednesday will be better.

TechEd Idols Contest Wave 1

At 19:00 I went to see the first wave of the Idols Contest in the Exhibition Lounge. Wow, competition is huge this first year. The first speaker, a UK guy, give an extremely smooth presentation like he was an oiled machine. Noted, he took too much time, has a very annoying voice and he would fit in the cast of the next installment of Revenge Of The Nerds, but he sure is going to be very tough to beat. The second speaker was from the UK as well, but his presentation didn't provide too much content and he overused his slides. Moreover, he looked like he is going to die soon. The third guy was from Greece and centered his presentation around Pizzas. His approach was a bit different from the others by creating a big party out of his 5 minutes. His slides were very busy and filled with pizza-related images, but his English was awful with ehs and ehms every two words. He is not going to be much of a competition.

Well, I've lost my confidence in winning the final e a bit, but I'm still going through. Sure, getting free entrance next year is still nice, isn't it...

Tuesday, November 07, 2006

Ordina Software Factory at the TechED 2006

Tom Hollander, Product Manager for Microsoft's Patterns & Practices team, was at the TechED to share their future plans on software factories. Since we have been using the Domain Specific Language tools for almost a year now, Tom asked us to provide a 15 minute demonstration of our SMART-Microsoft Software Factory in action. The session was labeled as a whiteboard session and was attended by about 80 people, mostly architects observed by the kind of questions we received. I shortly showed the different DSLs and what kind of code they generate. It was quite funny to see that several concerns from the audience on software factories were answered by the way we use DSLs in a real-live solution.

A day of ASP.NET AJAX (TechEd Day 1)

On Monday, I've been attending the pre-conference session on ASP.NET AJAX (formerly referred to as ATLAS) brought to us by Wintellect's Jeff Prosise. From what I read before, I thought it was merely some kind of SDK which primary purpose is to allow page updates without a full post-back and heavily relies on web services. How wrong I was…

Only a few years ago, Microsoft was still promoting the server-side aspects of ASP.in contrast to tedious client-side scripting and classic ASP. However, the big challenge since then is that Web-based applications could never compete with the visual richness of desktop applications. With ASP.NET AJAX, Microsoft shows that they've invested a lot in an attempt to get rid of this limitation. It essentially allows us to add a lot of eye-candy to traditional ASP.NET applications without a hassle. Most of the AJAX stuff intends to abstract away the complexity and the vast amount of Javascript code required prior to the introduction of AJAX. And I must say, I'm impressed!

Of course, AJAX itself is not a Microsoft technology, but they've clearly embraced the necessity of powerful client-side logic. Obviously, they are not a big fan of tedious Javascript code (as am I), and you can expect big changes on that side of the fence. In short, ASP.NET AJAX (beta 1) contains (amongst many other things):

  • A very powerful UpdatePanel control that abstracts away the Javascript and server-side code for asynchronously updating parts of a webpage without any flickering. Microsoft itself calls it the crown-jewel of ASP.NET AJAX. You can actually surround a part of an existing ASPX page with this control and voila; it now updates as smooth as possible.
  • An exhaustive set of (Browser-agnostic) extensions for Javascript providing us with an OOP-like development environment with .NET-like classes. This is an important aspect of AJAX, because apparently these extensions forms the foundation for all the other eye-candy.
  • Support for calling ASMX web services from client-side scripts (no WCF support yet).
    Advanced client-side databinding with web services running on the server.
  • XML-Script for declaratively defining client-side layout, appearance and behavior without the need to write one line of Javascript.
  • An extensive control toolkit with 30+ AJAX-enabled controls such TextBoxExtender, CollapsablePanel, and DragPanel. This toolkit includes really useful controls that provide more than just eye-candy.
  • Support for orchestrating complex animations (colors, fading, scaling, moving, sequentially, parallel), and drag-and-drop through any control.
  • Abstraction classes hiding away the browser-specific DOM. For instance, there is a TextBox class that wraps an browser textbox and provides the same events and properties regardless of the actual browser.

Monday, November 06, 2006

Barcelona at night

Yesterday (Sunday), we arrived at Barcelona at around four o'clock in the afternoon. We had no delays at Schiphol and the flight took fifteen minutes less than expected. A shuttle bus organized by the TechED organization was supposed to bring us to our hotel, the Hesperia Metropol in downtown Barcelona. Unfortunately, the lady in bus was a bit confused and brought us to the suburbs of Barcelona where the TechED is located. Her directions caused us to walk around for 15 minutes asking the locals for directions, until we walked into an American women living in Spain telling us that we needed to go downtown again. Fortunately, a cab (with a driver that didn't speak any English at all) finally brought us to the hotel.

Apparently, our hotel was only 400 meters away from the famous Ramblas boulevard, so we decided to have diner at one of the restaurants along it. Unlike what we expected, prices were quite low and I enjoyed a nice three-course meal accompanied with half a liter of beer (which is the medium size; I wonder how big the large one is!?). Barcelona actually has a lot of trendy bars and pubs, and I ran into a number of Starbucks as well. I sure am going to enjoy a nice Frappacino and a brownie sometime this week and try to forget me being on a diet for a brief moment :-)

This morning, the pre-conference session of the TechED started, and I'm writing this while joining the ASP.NET Ajax session of Jeff Prosise. Tonight, I'll need to perform a last test-run of our SMART-Microsoft Software Factory demo that I'm going to do as part of Tom Hollander's session on Software Factory Futures tomorrow.