The PDC 2008 is history, I've crossed the Atlantic and slept the first night back at home. Before the memory of PDC 2008 begins to fade, I'd like to take a look back.
The PDC started for me with an amazing pre-conference session with Charles Petzold on WPF. I don't know how people without any WPF knowledge at all may have experienced it, but for somebody like me, who has looked into WPF again and again, just to be stopped each time by more urgent things to be done, the session was really great.
For the precon Petzold chose an approach different from his WPF book (or "the phonebook" as some call it because of the lack of images), which was definitely a good thing, starting immediately with XAML (instead of code) to explain the concepts. The amount of preparation that went into these 6 hours was impressive: A script almost an inch thick, perfectly timed segments of 20min each and literally hundreds of samples shown in a custom-written viewer which highlighted the small steps from sample to sample.
In a good mood I visited the keynote on Monday, just to be severely disappointed. As PDC traditionally is about the future, i.e. upcoming technologies that developers should be motivated to take a look at, it was hard to understand that the keynote started without a video pumping up the crowd. The keynote on Tuesday was better in that respect, as it started with a video showing a number of WPF applications, giving me a first "oh wow, WPF really seems to take off" feeling.
Unfortunately, both keynotes sadly lacked excitement. It wasn't the content - that at least made me go "hmmm.... what I just heard somehow sounds important". Instead, it was more the speakers and the way the content was presented that failed to reach and motivate me. The joke among me and my colleagues was "hey, go and motivate yourself".
Speaking of keynotes, the Microsoft Research keynote definitely lacked a review cycle in the days before the PDC, where fluff could have been separated from the (mostly pretty cool) content. When I sat through the first half hour in which I was told over and over again how great Microsoft Research is, I was reminded of the movie "Spiderman 2" where an equal amount of time was spent on how sad the life of a super hero can be. Both in the movie and the keynote the point where I'd think "ok, I'm not dumb, I get the point, now PLEASE move on" was reached soon enough.
The sensors stuff in the MR keynote left me wondering what's so special about it, but the other parts (e.g. programming for kids using a joypad or the World Wide Telescope) where really interesting. I just got angry when the audience was told "oh, we've got to hurry now because we're running late". Yeah, that's because you spent all the time on telling us how great Microsoft Research is.
But the PDC is not (only) about the keynotes. It's the sessions. And I must say that the sessions - at least those that I chose - where of high quality. There's a noticeable difference between talks by (certain) members of the "conference circus" (you know, those guys that do nothing else but travelling from conference to conference, but please, I don't mean all of them) and somebody from (or very close to) the development team. For me, the most memorable example for this is the difference between the sessions of the WPF team at PDC05 and virtually any other talk I have heard about WPF since then - which I could rant about again and again, but that's a topic for another blog post.
In general, I'd say that the sessions (again, this applies only to those I attended) on average were of slightly higher quality than those of PDC05. I judge this by how fast time seemed to fly by, but my memory may serve me wrong, so don't pinpoint me on that.
To come to a close:
- Did I enjoy PDC 2008? Yes!
- Do I think PDC 2008 was worth the expenses paid by my company (Comma Soft AG, we're hiring by the way)? Yes!
Honestly, if I didn't think so, I simply would have left out the question ;-) - Would I choose to endure the grueling long flights in Economy class again to attend PDC 2009? Um... Yes!
So let's hope I get the opportunity in 2009, maybe we'll see us there!
P.S. Visual Studio 2010 seems to become a seriously cool release, finally allowing things like this or this (and even more)...
After an Italian configuration for GhostDoc there's now also a Spanish configuration available. As mentioned for the Italian version, I cannot comment on the quality. Also, please note that GhostDoc is intended for English documentation, which means that tweaking it for other languages is likely to run into problems sooner or later.
On the other hand, a lot can be achieved with the help of some clever custom rules, so I recommend to try out the Spanish configuration. As usual, exporting the current configuration as a backup is definitely not a bad idea.
I'm always happy to announce new releases of the free Visual Studio add-in SonicFileFinder by my colleague Jens Schaller. This tool for quickly navigating in Visual Studio solutions with just a few keystrokes has reached version 2.0.
This blog post gives an overview on what's new, the download is available on the SonicFileFinder website.
Twitter, the service that finally starts making some kind of sense to me, offers various ways of including updates in your own website/weblog. After experimenting with the AJAX version directly on my weblog, I switched to using a separate HTML page shown in an IFRAME tag instead. The result can be seen on this page, it's on the left side under the tag cloud, in the "News" box.
Just in case somebody else may find this useful, here's a short HOWTO:
The .NET User Group "Bonn-to-Code.Net" of Bonn, Germany is happy to welcome Jean-Paul Boodhoo on September 29th for a talk about Behavior Driven Design. The talk starts at 19:00 and will be in English, admission is free (as all of our user group meetings). Information about the location is available here and here (Google Maps in English).
An Introduction To BDD
For years many of us in the TDD crowd have been repeating the statement "Tests are documentation". How many of us can truly say that is the case.
In this session we are going to take a look at how to transform stories and translate them down into human readable code that truly can live as "business documentation". We will also take a look at simple organizational tools that will enable us to generate natural language reports from the tests that we are writing. Tests that can be read and validated by developers and domain experts themselves.
When moving to a new development machine recently, I noticed that I was using a couple of (minor) customizations to GhostDoc on the old machine that are not included in the default configuration. Most of them were rather specific, but three custom rules that may be of general interest are for overrides of the methods ToString(), Equals() and GetHashCode(). Without the rules, the documentation is inherited from System.Object:
/// <summary>
/// Returns a <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
/// </summary>
/// <returns>
/// A <see cref="T:System.String"/> that represents the current <see cref="T:System.Object"/>.
/// </returns>
public override string ToString()
/// <summary>
/// Determines whether the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>.
/// </summary>
/// <param name="obj">The <see cref="T:System.Object"/> to compare with the current <see cref="T:System.Object"/>.</param>
/// <returns>
/// true if the specified <see cref="T:System.Object"/> is equal to the current <see cref="T:System.Object"/>; otherwise, false.
/// </returns>
/// <exception cref="T:System.NullReferenceException">The <paramref name="obj"/> parameter is null.</exception>
public override bool Equals( object obj )
/// <summary>
/// Serves as a hash function for a particular type.
/// </summary>
/// <returns>
/// A hash code for the current <see cref="T:System.Object"/>.
/// </returns>
public override int GetHashCode()
The comments are OK at first sight, but I don't really like the references to System.Object, I prefer "the current instance" instead. Fortunately, changing this in GhostDoc is pretty easy.
In general, to replace the generated documentation for a specific method, property, etc., simply define a custom rule and make sure has a higher priority than the rule that would create the documentation otherwise (in the case of the above methods that would be the "inherited documentation" rule).
The new rules are available as a configuration file you can download here (see the included ReadMe for instructions how to use it).
Importing this file will not affect other parts of your configuration, but creating a backup of your current configuration is never a bad idea. After the import the rules will automatically have the highest priority, so no other steps are necessary.
Das Material zu meinem gestrigen Vortrag "Visual Studio nutzen, anpassen und erweitern" bei der .NET Developer-Group Ulm steht nun zum Download bereit:
Am nächsten Mittwoch, 6. August, bin ich um 18:00 bei der .NET Developer-Group Ulm zu Gast und werde dort einen Vortrag zum Thema Visual Studio halten. Im ersten Teil stelle ich diverse Konfigurationsmöglichkeiten, Tipps und Tricks vor, im zweiten Teil geht es dann um Erweiterungsmöglichkeiten wie Macros, Templates, Wizards sowie (kurz angerissen) Add-ins.
Just thought I'd mention it...
I already mentioned Notepad2 in a past blog post: It's a nice little free Notepad replacement that meets my requirements for a program that is similar to, but slightly better than the original, with a fast startup.
That's why it makes me sad to read about what has happened to the author, Florian Balmer: Somebody took the (GPLed) source code of Notepad2, changed a few lines and released it as an "improved version" called Notepad3 to various download sites. In theory there's nothing wrong about this as the licensing conditions are met, but some kind of unpleasant aftertaste remains to put it mildly.
Read the full story in a commentary by Florian titled The Spirit of Open Source.
More Posts
Next page »