.NET Managed User Group of Switzerland

During my trip to Barcelona, last week, I met Atif Aziz, President and Program Director, and Roman Mathis, Vice President and Membership Director, of the .NET Managed User Group of Switzerland. We had several interesting discussions and I finally decided to join them in there user group as I am working in Zürich, Switzerland and there are located in the same city.

The 3 upcomings Events organized by the user group are:

Implementing MVC with ASP.NET
02.11.2004 at 19:00, 1020 Renens     
Presented by Sébastien Bouchet
Most of the development time in a project is dedicated to the user interface, making the presentation layer architecture the backbone of any ambitious development project. An appropriate architecture should enforce maintainability, versatility and reusability. This requires fine isolation of layers with different business lifecycles, such as the look & feel, navigation and business logic. Beyond the physical code-behind model, ASP.NET does not mandate any architectural paradigm for the presentation layer so nearly every project is required to create one from scratch. The Model-View-Controller (MVC) approach is a de facto industry standard and available in most development frameworks, but what about in .NET? This sample code-driven session will discuss application of MVC in .NET, available frameworks, and in particular the Microsoft User Interface Process (UIP) Application Block.

Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components
04.11.2004 at 19:00, 8700 Kusnacht 
Presented by Atif Aziz
HTTP modules and handlers can be used in ASP.NET to provide a high degree of componentization for code that is orthogonal to a web application, enabling entire sets of functionalities to be developed, packaged and deployed as a single unit and independent of an application. Atif illustrates this approach by demonstration of an application-wide error logging and display facility, called ELMAH, that is completely pluggable. It can be dynamically added to a running ASP.NET web application, or even all ASP.NET web applications on a machine, without any need for re-compilation or re-deployment. Along the way, you will learn about how ASP.NET handlers and modules work, when to use them and how to implement them effectively.

Sharp Vector Graphics (SVG#) 
Presented by Christian Wenz
23.11.2004 at 19:00, 8005 Zurich
Scalable Vector Graphics (SVG) is the official W3C standard for vector graphics on the web. Since the format is XML-based, .NET is a natural choice to dynamically generate SVG graphics. The talk introduces the SVG format, identifies advantages and disadvantages, covers the Open Source project SVG# and discusses similarities and differences between SVG and XAML.


Skype API

For sure there is a new version but I think the most important annoucement is the Skype API. Right now it is not sure what we will get, but I already see lots of possibilities for that.

TOOLS: new version of skype released

Skype released a new Windows version (v1.0.0.94) of its great freeware VoIP tool. As you know, versions for MacOS X, Linux and PocketPC platforms are also available.

IIS Admin

In an older post, I talked about the method described by Steven M. Cohn to have Multiple IIS Virtual Servers on XP Pro. Discussing with Renaud yesterday he shown me a tool to do it, I don't like to type under the shell ;-).

"IIS Admin is a small tool for use on Windows XP Pro. It allows you to create multiple websites on WinXP Pro and to switch between those websites. On Windows XP Pro, only one website can run at a time."

Thanks Davy Belmans, for your great tool.


Visual Studio Office Tools and Word 2003 using deserialization, nightmare end

I finally fixed the issue I reported in the post "New milestone reached in the development of the authoring tool for Tech Head Brothers French portal ". I am still waiting some feedback from Peter (he might be in holidays).

I am getting an exception when I try to deserialize an object. This exception is due to a security problem.

What I did is to use SGen tool from Daniel Cazzulino described in this post: "Strongly-typed, event-rising, design-time generated custom XmlSerializers (even more than Whidbey sgen!) ". I also used Mike Woodring code described in the post: "The Last Configuration Section Handler I'll Ever Need". I mixed all and modified XmlSerializerSectionHandler from Mike so that it doesn't return a fixed IDictionary but an object. With reflection I can determine which Handler to instantiate, then from this handler I call it method Create and I get something like that to deserialize an object from the configuration file:

SchemaSettings schemaSettings = (SchemaSettings)AssemblySettings.GetConfig("SchemaSettings");

With the configuration:



<section name="SchemaSettings"

type="TechHeadBrothers.Configuration.XmlDynamicSerializerSectionHandler, THBPublisher"/>


<SchemaSettings type="THBPublisher.SchemaSettings, THBPublisher" serializer="THBPublisher.SchemaSettingsSerializer, THBPublisher" reader="THBPublisher.SchemaSettingsReader, THBPublisher">




So the good point at the end is that I have a configuration file looking like a normal one, that I can get configuration settings from even deserialize object from it. Nice.


New milestone reached in the development of the authoring tool for Tech Head Brothers French portal

In this version we now have:

  • a toolbar hosting Preview, Zip, Post plugin
  • a dropdown connecting to a web service at first click to get back the articles categories, used before posting
  • a web service to post the article using DIME

Internal changes:

  • everything is configured in a config file now
  • XML Schema is associated with Word at runtime, read from config file
  • All source code colorization is done through configured properties

Here is a picture of Word 2003 with the toolbar:

I am still facing an issue. I am able to read configuration files from the assembly, but when I want to deserialize one part of my configuration file I get an exception saying: "There is an error in XML document" and the inner exception is "Security error". It seems to be a French problem cause I could find someone having the same issue in the newsgroup, here. I emailed Peter Torr that replied to this newsgroup message, I hope ot get an answer and a solution ;)


O/R frameworks

This evening, I mean morning, it is already almost 1 AM, I read the article about NHibernate from Justin Gehtland on TheServerSide.NET. Btw it is a good introduction. I am playing now for some time with O/R frameworks. And i must say that I appreciate tools like NHibernate but also tools like Data Tier Modeler. This tool is great to use for new projects, but what about projects that already have a database? In this case you might use tools like NHibernate. What I really like in DTM is that you use a UML tool to model your domain. Then the tool consume this model and generate all the plumbing needed to store your objects states. So you really deal with your domain objects and do not need to create mapping files or things out of your domain. There is another project that Ikeep an eye on is Neo, it is really similar to DTM. If you look at the ppt presentations of both you will see the idea are the same.


Visual Studio 2005 Express Beta Products

This evening I installed on Virtual PC:

It is really funny!!! In fact I knew about those products because I saw something I should not see during the MVP Summit: a splashscreen. Then I just asked what was Express. And nobody wanted to answered me. Then during the C# presentation we were asked about a last interesting question. I raised my hand, and asked what was Express. Everybody from Microsoft was astonished to hear this word 'Express'. Then we got an answer after telling us again that we were under NDA and that it was absolute absolute secret.

I quickly tried to create a personal website with Visual Web Dev 2005 Express. Thats how it looks like:

There is nice photo album with the template:

There is a place for a resume:

The site looks nice. Now I need a bit more time to look in the code. If there is some ;-)


Resharper Build 84 secret feature

On the JetBrain's Resharper changes page it is written:

Build 84

  • Documentation summary is shown in completion list and in Parameter Info (Ctrl+P)
  • Code completion for symbol references in doc-comments
  • Option to switch between VS icons and own ReSharper icons for symbols
  • Code style options for modifier keywords order and use of explicit private/internal modifier (and Reformat Code can reorder modifiers)
  • A secret feature, many of you will see it in the next few days :-)


Anyone could find what the secret feature is?


I solved my issue concerning the Addin registration in Visual Studio .NET 2003

I had a problem to register new addins in Visual Studio .NET 2003 that I exposed there : Refactoring my publishing tool. When I was starting Visual Studio .NET 2003 I got this dialog:

Now it is over. If you are facing the same issue here is how I solved it:

I installed the extensibility.dll in the CAG manually:

gacutil /i "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\PublicAssemblies\extensibility.dll"

Then reinstall or repair the addin installation with its setup. Thats it.


Update of Tech Head Brothers site

I refactored quit a lot of code on my site Tech Head Brothers this week and went to bed late (around 1:30 AM each day). But now it is running better and faster. I removed the rendering to Pdf using NFop of the articles because it works locally on my TEST server but not on the PROD one.

One of the speed improvement is due to the complete reimplementation of a user control that download a RSS to publishnews on my site. The issue with the previous method was that the cache was buggy. Now what I am doing is to to use two values in cache, one is the RSS document (a XML document as a string) and that one never expire:

Cache.Insert(CacheKey, xmlControl.Document.InnerXml, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration);

The second cache value is an expiration cache value :

Cache.Insert(ExpiredKey, "", null, DateTime.Now.AddSeconds(60), TimeSpan.Zero);

I use that cache value to know if it is time to download again the RSS :

/// <summary>

/// Check if the cache expired

/// </summary>

/// <returns>true, if it expired otherwise false</returns>

private bool isCacheStillValid()


    return ((Cache.Get(ExpiredKey) != null));


If it is time to download again then I remove from the cache the XmlDocument after having it downloaded correctly:

//Remove old version from cache


This way I always have the RSS in the cache, and remove it only if I have a new one downloaded.

About Laurent

Laurent Kempé

Laurent Kempé is the editor, founder, and primary contributor of Tech Head Brothers, a French portal about Microsoft .NET technologies.

He is currently employed by Innoveo Solutions since 10/2007 as a Senior Solution Architect, certified Scrum Master and Founding Member.

Founder, owner and Managing Partner of Jobping, which provides a unique and efficient platform for connecting Microsoft skilled job seekers with employers using Microsoft technologies.

Laurent was awarded Most Valuable Professional (MVP) by Microsoft from April 2002 to April 2012.

JetBrains Academy Member
Certified ScrumMaster
My status



This is a Flickr badge showing public photos and videos from Laurent Kempé. Make your own badge here.

Month List

Page List