Before going to the conference center ICC in Gent, I checked in to the hotel where I’ll be staying tonight.
It is located in a quite street with little traffic. I sure hope that I can sleep tonight because on arrival I discovered that there is a railroad right in front of my hotel room (like 10 meters away from my room).
Funny that they didn’t mention that on the website.
Ah well. I only stay there for one night. My room is very clean, comfortable and the people here are very friendly.
The ICC itself is only at walking distance from the hotel, located in a beautiful park. Luckily it was no problem to register for the event without the printed registration papers that I forgot in my car.
Keynote
For some reason, keynotes generally fail to excite me. Maybe I have just become too cynical after 9 years in the consulting business to be affected by a marketing whizbang speech..
It was a typical American keynote with lots of multimedia. Luckily the keynote speaker - David Chappel - managed to fill 1.5 hours of speech without boring me too much. That is an achievement in itself.
David delivered a good story that incorporated what he calls ‘The Brian May’ principles.
- Work together.
- Stretch yourself (specialization is for insects)
- Know your tools.
Brian May was a guitarist for the rock band Queen. Apart from being a brilliant musician, Brian published an article in Nature as an astronomy grad student. He also built his own guitar.
David then went on to give a survey of .NET3.0, Forefront, System Center and Longhorn Server, explaining how the aforementioned principles apply to them and to the developers and IT professionals using them.
The keynote conclusion was that we can all be a rock star like Brian May in our own way.
WCF communication patterns
This session is hosted by Christian Weyer. I have seen him before in Barcelona and I hope this session is as good as the previous one.
I like to get a lot of WCF and WF information because I’ll soon be starting at my new company in the role as the sole Systems Engineer, responsible for systems integration and custom applications.
The beginning of this session is equivalent to the Barcelona intro session on WCF with the ABC story: Address, Bindings and Contract.
Then there was an explanation of the issues involved with WCF application scaling. Basically you have to start using asynchronous programming, threads and callbacks to avoid synchronous behavior.
This was coupled with an explanation of the different channel types in WCF:
- One way. This is just a fire and forget method of sending messages without waiting for them to be handled. One caveat is that Sending itself is synchronous, so methods only return if the message is really gone.
- Duplex. Communication channels are bidirectional, allowing a process to send a message and receive multiple return messages over the same channel. By default this is only possible with session based bindings.
- Request reply. A process sends a message to someone else and then gets 1 reply afterwards.
WCF is extensible at each level of the WCF stack. You can extend channels, protocols etc, but it is fairly complex.
The demo was very similar to the demo in the architectural session in Barcelona last year. Only this time, Chris focused only on the WCF part of the story.
Visual studio team system for DB developers
This is one of those sessions I attend because there is nothing else that sounds interesting. It is hosted by Roy Osherove from Israel. He is a surprisingly witty speaker and interesting to listen to.
Roy gave a quick overview of Visual studio Team Suite and Visual Studio Team Foundation Server, and how they relate to the VSTS for DB developers.
Basically, VSTS for DB devs allows developers to develop databases (with tables, stored procedures, …) in visual studio, integrated with TFS.
This means that you have all the support of tasks, bug tracking, unit testing and nightly builds, but applicable to database designs.
This is really something because there is nothing comparable from any other vendor at the moment. DB design is usually kept separate from the rest of the source tree, and there is usually some level of asynchronous development, leading to integration mismatches and problems late in the development phase.
There were some demos of database unit testing, integrated with a nightly build system.
It was really impressive, and I can easily see the justification for spending a couple of thousands of euros for this tool in a DB development environment.
Using this will save you lots and lots of pain.
At the end of the session, Roy took his guitar and sang ‘the database development song’ to the tune of ‘Sound of silence’. Really. No joke.
And it was a nice song too. It was definitely something that people remember when the guys at home ask ‘So how was the conference?’. Oh well there was this guy that sang a song about databases… I can already image my wife’s face when I tell her this.
Regex
This session was also hosted by Roy Osherove as well.
Regular expressions are something I have not yet used ‘for real’ in any of my projects, but I can see the importance of a good understanding of regular expressions.
For those who don’t know what regular expressions are: a regular expression allows you to define a pattern that describes what a piece of text should look like, and then apply that pattern to some arbitrary input data. You would use regexes to verify input fields for telephone numbers etc.
.NET regex allows you to
- Describe text using patterns.
- Validate, manipulate or parse text.
2 tools that can help you develop regexes are regulator and regulazy, which are available for download from www.osherove.com
Regular expressions can save you enormous amounts of time and money because you don’t have to write custom parsing code that allows for all sorts optional fields and parameters.
The problem with regular expressions is that they can quickly become unreadable for other human beings.
The conclusion of this session was that .NET regexes are really powerful, they can save you a lot of development and debugging time, but should only be used where appropriate because of their inherent maintenance (readability) issues.
I really got a good idea of how I can use .NET regexes. This was a good session.
It ended with another guitar song about regular expressions, though it was not as good as the DB song.
WCF practices from the field
This session was hosted by Christian Weyer, and continued where his previous session stopped. The first 5 minutes and slides were the same. After that it quickly picked up pace with practical WCF development issues.
This time his code demo focused on hosting WF inside a WCF service, but without really looking at the WF part. Rather, the binding via WCF was highlighted.
The crux of his speech was that interop between WCF and other ( non WCF tools) is really not easy. Partly this is because WCF is still v1.
The default bindings are useless in 99% of all real world scenarios. This is because of the ‘security by default’ design which limits virtually everything into uselessness. The good news is that it is very easy to configure bindings, as long as you aware about which settings you should override immediately.
Some of the settings are very obscure and named illogical. For example, the ReceiveTimeout setting is really the session timeout. There is a tool in the SDK that allows you to configure these settings.
Another of his point is that the Microsoft slogan ‘choose any contract and use it with any binding’ is really a pipe dream. In real world scenarios there are so much binding parameters to be configured that you should instead choose one and stick with it. After all, there is little point in changing bindings just for the sake of it.
Binary data transfer across HTTP is the binding that is best in most of the cases, and you should only pick something else if there is a pressing need.
The whole point of WCF is message exchange. To allow objects to be sent over a wire, they have to be serialized. This can be done through several serializing methods.
- XMLSerializer
- BinaryFormatter and SoapFormatter
- DataContractSerializer
The preferred one is the last one, as it has been custom tuned for WCF, though it can only be used if interop with other languages like e.g. Java is not a requirement. Or was that the NetDataContractFormatter? I can’t remember.
Anyway, there are a couple of important points for WCF servers:
- Ideally they should be self-hosted in an NT service to minimize dependencies. IIS 7 is also an option, and it is said to be stable and robust. Unfortunately it carries an ugly stigma from the IIS4 and IIS5 days, when IIS was one of the most horrid pieces of crap to be connected to the internet.
- Make sure your code runs with non-administrator privileges. This means that you have to create the connection points in advance, using a config tool. This is because they invoke http.sys which is unavailable to non-admin accounts because it runs in the kernel.
To consume a WCF service from the client side:
· Use svcutil or ‘add web reference’ to create an interop assembly. Or
· Use the .NET interfaces themselves. After all, they ARE the WCF contracts. Note that the first call is VERY expensive, since the whole WCF stack has to be created.
· Avoid session affinity, since sessions can be lost. NetNamesPipe, NetTcp and WspTcpBinding all have an implicit dependency on session semantics.
Some points in conclusion:
- WCF supports almost any communication scenario known to man, but can be tedious to configure.
- If interop is not an issue, use secure transport (http over SSL).
- Security is a feature, and secure interop is a miracle (or better: a pipe dream)
- WCF has built-in support for WMI, event logging, tracing, …
All in all a very good talk.
VS Orcas, improving end to end application level performance
This session was hosted by Jay Schmelzer, and was going to cover the following things:
· Advances for all VS languages: VB and C#. This one immediately had me miffed. Excuse me!?!? What happened to C++? Steve Teixeira (Group PM for Visual C++) seems to be convinced that C++ has a considerate amount of improvements as well. Better tell him that was cancelled.
I mean it’s not like I expect a wide audience to be interested in VC++, but if this talk is to be about Visual Studio, he could at least mention that C++ still exists.
After all, Tech-ed Barcelona showed that VC++ has still a lot of developer interest.
· .NET multiplatform targeting. This is kinda cool, since it allows VS to create applications for different .NET framework version. I.e. the .NET framework version is no longer coupled to a specific VS version.
· .NET 3.5 design surfaces.
· Web / Office 2007 apps.
This session was going to be a code demo. Cool, I like those.
…
…
Are you a Dilbert fan by any chance? I am. Several years ago I read a Dilbert comic (I still have it, but cannot publish it here obviously) that had Dilbert sitting in front of some important customers, demo-ing their latest product.
Dilbert starts the demo and says: “Our product does not yet have a user interface, but if it had, you’d see something here, here, and sometimes here. And then you’d be saying ‘I’d gotta get me some of that’. Any questions?”
Now picture a Group Program Manager in front of a 300 man audience. He is going to show the new VS features. He starts a database connection wizard or something. An empty dialog box appears.
He then says ‘This feature does not yet work. But if it did, you’d see this and that, and you would be able to yada yada yada and you would really like it yada yada’.
At that point I picked up my stuff and left. As novel as it was to have a code demo where you have to imagine the actual demo, I figured I’d avoid the rush and leave early to get dinner.
No offense to Jay, who is a good speaker, but this session was not up to par.
End of day 1
Overall a good day. It was kind of tiring, with a keynote and 5 sessions crammed into 1 day, but good nonetheless.
It was not quite as nice as tech-ed though. Some points for improvement:
- You could only get drinks and snacks on the ground level floor. This means that after each session, there is a surge of people going for a drink.
- No free wireless access. You had to go to 1 of 2 stands with 8 Ethernet cables and physically connect.
- Coffee was served in little cups. I preferred the large cups I got in Barcelona, since you could easily take them with you to the sessions.
I accidentally ran into 2 former colleagues who now work for a small consulting company that offers services in the .NET and IT area. They were doing well, and it was nice catching up with them.
I had diner in a nice restaurant near the ICC, called ‘Grade’ www.grade.be
Should you ever be around the ICC, feeling hungry, it is a good place to eat.