March 2006 Entries
I am testing Deepest Sender which is a blog posting tool that can connect to your .Text or Subtext through the MetaWeblog API. It also works with Turkish characters which is a necessity for me.

It's editor is WYSIWYG and the entry can be post to multiple categories unlike w.Bloggar. Life is getting easier by the day. Smile

And baby Uzay meets with computers...

Damn space bar, it's not working again

I've spent a lot of money on this chair and my back is still in pain.

ctrl+alt+del, why it is not just one button?

Is this caps-lock on?

Why is numeric keypad too far away?

MuscleBoy: Yes babe, I am 25...

C# or VB.NET; that is the question...

Reverse Dos spam trackback protector. You can chuck all the offending domain names and words into its configuration file and stop them to create referrer records on your database. A quick analysis on my database showed 600+ spam referrers. I copied them to an Excel sheet and created these filters. It boiled down to 274 unique domain names including the ones on RDos config file.

Now My blog is free off spam trackbacks.

After 5.5 months of formula and breast feeding, Uzay finally tasted some solid food. Well almost solid. It is just baby rice cereal mixed up with formula. He was watching us on the dinner table before and trying to reach out for the food. I am afraid that he will start to kebabs soon.

Every big project starts with planning. Here is Darth Wader's planning session on an agile approach.

Himmmm I wonder if anyone against the ideas of Wader

Picture courtesy of

The Subtext blogging engine is released yesterday and downloaded more than 100 times. Checkout the project from here
You can download the release package here
Administration and management made easy in this release. There are also top notch new skins available with this version.
Here is Phil Haack's (our benevolent dictator) announcement.

Yes, my skin is a rip off from Joomla interface. I liked its interface and it was a challenge for me to implement with Subtext. I think I did a good job with the CSS. There are still small things which are not working with either IE or Firefox. My wife Elif also helped me with the graphics.

I have installed Subtext for my blogging purposes but having the multiple blogs working is a bit tricky.

I have to comment out the following handler line on the root web.config

<!--<HttpHandler pattern="(?:((\/\/default\.aspx)?|(\/\/?))?)$" controls="homepage.ascx"/>-->

And set up the aggregation section like:

<!-- Aggregate Blog Stuff -->
<add key="AggregateEnabled" value="true" />
<add key="AggregateTitle" value="Analyst Developer Blogs" />
<add key="AggregateUrl" value="" />
<add key="AggregateDescription" value="Blogs by Analyst Developer" />
<add key="AggregateHost" value="" />

Note the value of AggregateHost. Although the subtext is installed under, this should be the root host.

I have 2 directories for each of my blogs under these are

  1. and

Each directory contains 3 files:

  1. default.aspx (an empty file)
  2. RSS2Image.gif (picture of yourself or a logo for RSS readers)
  3. web.config

This individual web.config file contains handlers (same as main web.config) and some UI texts with a different encoding. We need to copy the handlers from main web.config so that the links can go where they suppose to go.

<?xml version="1.0" encoding="unicode" ?>
<HandlerConfiguration defaultPageLocation="DTP.aspx" type="Subtext.Common.UrlManager.HandlerConfiguration, Subtext.Common">
<HttpHandler pattern="/login.aspx" handlerType="Page" pageLocation="Login.aspx" />
<HttpHandler pattern="/Admin/" handlerType="Directory" directoryLocation="Admin" />
<HttpHandler pattern="/rss\.aspx$" type="Subtext.Common.Syndication.RssHandler, Subtext.Common" handlerType="Direct" />
<HttpHandler pattern="/atom\.aspx$" type = "Subtext.Common.Syndication.AtomHandler, Subtext.Common" handlerType="Direct" />
<HttpHandler pattern="/comments/commentRss/\d+\.aspx$" type = "Subtext.Common.Syndication.RssCommentHandler, Subtext.Common" handlerType="Direct" />
<HttpHandler pattern="/aggbug/\d+\.aspx$" type = "Subtext.Framework.Tracking.AggBugHandler, Subtext.Framework" handlerType="Direct" />
<HttpHandler pattern="/customcss\.aspx$" type = "Subtext.Web.UI.Handlers.BlogSecondaryCssHandler, Subtext.Web" handlerType="Direct" />
<HttpHandler pattern="(?:/category\/(\d|\w|\s)+\.aspx/rss/?)$" type = "Subtext.Common.Syndication.RssCategoryHandler, Subtext.Common" handlerType="Direct" />
<HttpHandler pattern="(?:/archives\.aspx)$" controls="SingleColumn.ascx" />
<HttpHandler pattern="(?:/archive/\d{4}/\d{2}/\d{2}/\d+\.aspx)$" controls="viewpost.ascx,Comments.ascx,PostComment.ascx" />
<HttpHandler pattern="(?:/archive/\d{4}/\d{2}/\d{2}/[-_,+\.\w]+\.aspx)$" controls="viewpost.ascx,Comments.ascx,PostComment.ascx" />
<HttpHandler pattern="(?:/archive/\d{4}/\d{1,2}/\d{1,2}\.aspx)$" controls="ArchiveDay.ascx" />
<HttpHandler pattern="(?:/archive/\d{4}/\d{1,2}\.aspx)$" controls="ArchiveMonth.ascx" />
<HttpHandler pattern="(?:/articles/\d+\.aspx)$" controls="viewpost.ascx,Comments.ascx,PostComment.ascx" />
<HttpHandler pattern="(?:/articles/[-_,+\.\w]+\.aspx)$" controls="viewpost.ascx,Comments.ascx,PostComment.ascx" />
<HttpHandler pattern="(?:/contact\.aspx)$" controls="Contact.ascx" />
<HttpHandler pattern="(?:/posts/|/story/|/archive/)" type="Subtext.Web.UI.Handlers.RedirectHandler, Subtext.Web" handlerType="Direct" />
<HttpHandler pattern="(?:/gallery\/\d+\.aspx)$" controls="GalleryThumbNailViewer.ascx" />
<HttpHandler pattern="(?:/gallery\/image\/\d+\.aspx)$" controls="ViewPicture.ascx" />
<HttpHandler pattern="(?:/(?:category|stories)/(\w|\s)+\.aspx)$" controls="CategoryEntryList.ascx" />
<HttpHandler pattern="(?:/comments\/\d+\.aspx)$" type = "Subtext.Common.Syndication.CommentHandler, Subtext.Common" handlerType="Direct" />
<HttpHandler pattern="(?:/services\/trackbacks/\d+\.aspx)$" type = "Subtext.Framework.Tracking.TrackBackHandler, Subtext.Framework" handlerType="Direct" />
<HttpHandler pattern="(?:/services\/pingback\.aspx)$" type = "Subtext.Framework.Tracking.PingBackService, Subtext.Framework" handlerType="Direct" />
<HttpHandler pattern="(?:/services\/metablogapi\.aspx)$" type = "Subtext.Framework.XmlRpc.MetaWeblog, Subtext.Framework" handlerType="Direct" />
<HttpHandler pattern="(?:((\/\/default\.aspx)?|(\/\/?))?)$" controls="homepage.ascx"/>
<!--UI Text -->
<add key="PostCollection" value="Kategoriler" />
<add key="ArticleCollection" value="Köse Yazilari" />
<add key="ImageCollection" value="Resim Galerisi" />
<add key="Archives" value="Arsivler" />

That is it. You can also use something like .Text's web.config for multiple blogs. But I needed to change the UI Texts for my Turkish blog so I have implemented like this.


About me

Hi, my name is Gurkan Yeniceri. I am a software engineer with 8 years of experience in both public and private sectors. I have been generally writing about software engineering and Microsoft technologies since March 2005 on this site.
View Gurkan Yeniceri's profile on LinkedIn


If you would like to contact with me you can use the contact page here. I will try to respond it in a timely manner (I will try my best). You can also contact with me via Microsoft Live Messenger with the address gyeniceri {AT} hotmail {DOT} com.
If you are one of my Turkish readers, you may want to visit my Turkish blog here.

If you would like to read my site with an RSS reader like RSS Bandit, you may want to use to subscribe.

RSS 2.0


Bookmark this site digg NewsVine YahooMyWeb Reddit Spurl TailRank BlinkList Furl Shadows blogmarks
    This is a Flickr badge showing public photos from gurkanyeniceri. Make your own badge here.
    There are 133 posts and 88 comments on this site. Other sites also linked it 7 times.