Community Launch 2005

Today's the Community Launch 2005 of my .NET UserGroup Vfl-NiederRhein and netug Düsseldorf.

Community Launch 2005 Banner

Here's the German announcement:

Die INETA (International .NET Association) User Groups VfL-NiederRhein und NET UG Düsseldorf feiern die Veröffentlichung von Visual Studio 2005, SQL Server 2005 und BizTalk Server 2006!

Microsoft® Visual Studio® 2005 und SQL Server™ 2005 und BizTalk Server 2006 sind in Englisch am 7. November erschienen. Die deutschen Sprachversionen werden in einigen Wochen verfügbar sein werden. Anlässlich der Veröffentlichung laden die INETA Usergroups alle Mitglieder und Interessierte herzlich ein, den Launch zu feiern.

In Zusammenarbeit mit INETA, der internationalen Dachorganisation aller .NET Usergroups und Microsoft, wurde der Event dem Anlass angemessen vorbereitet, lassen Sie sich überraschen!

Ready to rock the launch?! Nehmen Sie an der kostenlosen Veranstaltungen der INETA User Groups teil und informieren Sie sich schon heute praxisnah über die neuen Microsoft Produkte und der Anwendungsplattformentwicklung der Zukunft.

Während der Veranstaltung werden 10 "Visual Studio 2005 & SQL Server 2005-Packages" verlost. Ein Package enthält: 1 Visual Studio 2005 Standard, 1 SQL Server 2005 Developer Edition, 1 Voucher für eine MCP-Prüfung (beschränkt auf eine Auswahl von Prüfungen). Wenn das kein Grund ist: Worauf noch warten? Jetzt anmelden!

Cyber squatters suck!

Site news Comments

Cyber squatters suck! Yes, they really suck!

Harsh word, I know, so let me give you some details.

Maybe you have visited my site before (well, before October 21st). And maybe you remember that the domain name was Now have a look at the address bar of your browser. What domain name does it say? Yes, Do you see the difference? I'll give you a hint: there's an hyphen added.

Now I'll tell the whole story: on October 21st my domain expired. Till then I had it registered by Unfortunately, they've forgotten to renew the registration. Therefore I decided to switch my registrar. I'm really pleased with WebHost4Life who hosts my site for more than two years, so I wanted them to be the registrar of my domain as well.

However, they declined. Because my domain was already in the redemption period, it couldn't be transferred to another registrar. "Ok," I thought, "I'll stay with my formar registrar". I tried to call him, but no-one answered the phone. I mailed him, again no answers. After two weeks I gave up. Resignedly, I thought I have to wait until the redemption period is over, and then let WH4L register my domain. However, I misconceived that the redemption period lasts 60 days. That would be until December 19th. What a bad situation. Not only that my blog was down. Additionally, I couldn't get any mail to my accounts.

But it even got worse.

Last Wednesday–47 days after my domain expired–I checked my domain again. What did I have to see? The request was redirected to another site, It's an ad site. A cyber squatter already registered my domain!

A callback to WH4L revealed that I was wrong. The redemption period lasts only 30 days. And the cyber squatter was faster than I was.

Though it boded ill, I sent the squatter a mail and asked for getting the domain back. Their short answer? "The mimium offer that we will consider is $1000.00".

$1000?!? They must be kidding. This site is only a hobby of mine, and damn I won't pay $1000 to get the domain name back.

For those case there is the Uniform Domain Name Dispute Resolution Policy (UDRP). In paragraph 4(b)(i) it says:

[... the following circumstances ... shall be evidence of the registration and use of a domain name in bad faith] circumstances indicating that you have registered or you have acquired the domain name primarily for the purpose of selling, renting, or otherwise transferring the domain name registration to the complainant who is the owner of the trademark or service mark or to a competitor of that complainant, for valuable consideration in excess of your documented out-of-pocket costs directly related to the domain name.

Since the squatter demanded $1000 for the domain name IMHO the evidence is produced, so I could file case at World Intellectual Property Organization (WIPO). But how much would that cost? Well, at least $1500.

Now I resigned. Forget about Yesterday I've registered It took only 10 minutes to get my site back to life with the new domain name.

But what's really annoying is that there exist dozens of links in the web/blogosphere pointing to my old domain, and at myriads of sites I used email accounts. At the most important ones I've already changed the email addresses, but anyway. And the existing links I cannot change.

How did I start this post? Cyber squatters suck!

Using Hyphens In Post Names

Community Server Comments

There was a discussion regarding naming of posts in a CommunityServer forum (a surprisingly unknown feature of CS::Blogs, though even dotText .96 supported it). CS replaces spaces with underscores. However, Jonathan stated that Google prefers hyphens to underscores. So I tried to use hyphens in the post name, but I've stumbled over two issues:

  1. You cannot enter hyphens in the post's name edit box because the field validator won't accept it. The regular expression is defined in the code as [a-zA-Z][1234567890a-zA-Z_\\s]{4,250}, i.e. only letters, digits, underscores, and white-spaces are allowed. To enable hyphens as well, you have to change line 155 in Blogs\WeblogPosts.cs to

    public static readonly string PostNamePattern = "^[a-zA-Z][1234567890a-zA-Z\\-_\\s]{4,250}$";

    and re-compile CommunityServer.Blogs.dll.

  2. When you want to visit the post using the named url, you'll get a 404 error. That's because the regular expression in SiteUrls.config is defined as ``\w+, i.e. only letters, digits, and underscores. Again no underscores. Fortunately, there's no compilation required, instead change the regular expressions forweblogpostNameandweblogarticleName` to:

    <url name="weblogpostName"
        location="weblogs" path="{0}/archive/{1}/{2}/{3}/{4}.aspx"
        vanity="post.aspx?App=$1&amp;y=$2&amp;m=$3&amp;d=$4&amp;PostName=$5" />
    <url name="weblogarticleName"
        location="weblogs" path="{0}/articles/{1}.aspx"
        vanity="post.aspx?App=$1&amp;PostName=$2" />

    (Be careful if your SiteUrls.config differs from the default configuration, e.g. if you have used Ken Robertson's SiteUrls Generator.)

If you're using ScottW's auto-naming module, you can skip step one including the re-compilation and just edit your SiteUrls.config.

Save Bandwidth and Compress Your CommunityServer Feeds

Now that my vacation and the PDC are over, I can continue with all the stuff which I left unfinished on my desk. One of these is a mod for CommunityServer which compresses all the exposed feeds. I've written it some weeks ago already and deployed it on my web server. Since it seems to work properly, I now want to announce it publicly. Though my bandwidth at WebHost4Life isn't limited, for some of you it may save real money.

The HTTP standard defines the compression of any content in RFC 2616, section 3.5. IIS supports compression, however, admin permissions on the server are required. So if your CS blog is hosted in a shared environment, you do not have access to the server. Therefore, you have to look for another solution.

Due to the nature of blogs, the most accessed part of a blog is its feed, or better, the feeds, as most blogs offer RSS as well as ATOM, and may even explose feeds for categories and comments. Therefore it makes sense to at least compress the feeds.

Some time ago Jeff Julian has written an add-on for dotText which compressed the RSS feed. I used to use this add-on on my blog as well, which reduced the size of my feed by about 80%.

Currently CommunityServer does not compress its feeds, and till now there is no add-on available which would add this functionality. Therefore I took Jeff's solution as a starting point and wrote a module myself. Now I'm happy to announce Thoemmi.CommunityServer.Compression 😃

The installation is pretty easy: Download the ZIP file and extract the DLL's to your bin folder. Then replace the handlers in the httpHandlers section in web.config to point to my classes. Here's a lineup of the corresponding items:

Original blog RSS handler
CommunityServer.Blogs.Components.WeblogRssHandler, CommunityServer.Blogs

Thoemmi.CommunityServer.Compression.CompressedWeblogRssHandler, Thoemmi.CommunityServer.Compression

Original blog ATOM handler
CommunityServer.Blogs.Components.WeblogAtomHandler, CommunityServer.Blogs

Thoemmi.CommunityServer.Compression.CompressedWeblogAtomHandler, Thoemmi.CommunityServer.Compression

Original blog comment RSS handler
CommunityServer.Blogs.Components.WeblogCommentRssHandler, CommunityServer.Blogs

Thoemmi.CommunityServer.Compression.CompressedWeblogCommentRssHandler, Thoemmi.CommunityServer.Compression

Original gallery RSS handler
CommunityServer.Galleries.Components.GalleryRssHandler, CommunityServer.Galleries

Thoemmi.CommunityServer.Compression.CompressedGalleryRssHandler, Thoemmi.CommunityServer.Compression

Original forum RSS handler
CommunityServer.Discussions.Components.ForumRssHandler, CommunityServer.Discussions

Thoemmi.CommunityServer.Compression.CompressedForumRssHandler, Thoemmi.CommunityServer.Compression

If you have had a default installation before, the httpHandlers section should now contain following lines:

<add verb="GET" path="blogs/rss.aspx"
    type="Thoemmi.CommunityServer.Compression.CompressedWeblogRssHandler, Thoemmi.CommunityServer.Compression" />

<add verb="GET" path="blogs/atom.aspx"
    type="Thoemmi.CommunityServer.Compression.CompressedWeblogAtomHandler, Thoemmi.CommunityServer.Compression" />

<add verb="GET" path="blogs/commentrss.aspx"
    type="Thoemmi.CommunityServer.Compression.CompressedWeblogCommentRssHandler, Thoemmi.CommunityServer.Compression" />

<add verb="GET" path="photos/rss.aspx"
    type="Thoemmi.CommunityServer.Compression.CompressedGalleryRssHandler, Thoemmi.CommunityServer.Compression" />

<add verb="GET" path="forums/rss.aspx"
    type="Thoemmi.CommunityServer.Compression.CompressedForumRssHandler, Thoemmi.CommunityServer.Compression" />

That's it. By default, the feeds are compressed with deflate with normal compression. If you want to change the compression level or switch to gzip compression, have a look at web.config.merge in the ZIP file. My add-on uses Ben Lowery's HttpCompressionModule, which in turn uses SharpZipLib. Both assemblies are included in the ZIP file as well.

BTW, if you want to check the compression of your feeds, PipeBoost generates Web Compression Reports.

[Update 10/14/2005: Fixed broken link]