Finally I did it! I burned my old SharePoint blog and R.I.P.’ed my former Russian blog (DasBlog) as promised.

The problem

Just to recall the history. Several years ago I realized that I need a new website/portal to host my stuff. Initially I looked for a ready solution that would match my humble requirements:

  1. It should support hierarchical site directories to organize content;
  2. It should support SQL database;
  3. It should support multi-level hierarchical content categories;
  4. It should support an ability to control rendering;
  5. It should support old URLs and redirect to migrated content. It was very important, because I realize that there are tons reference links to my previous weblogs and can’t simply break them;
  6. Should use friendly URLs;
  7. Preferably, it should be .NET-based.

There were several candidates:

  • SharePoint (what? Again?)
  • Orchard
  • BlogEngine.NET
  • DasBlog (again)

After testing each from the list, neither matched all my requirements. I used to like Scott Hanselman’s DasBlog, as it matched almost all requirements, except first two. After that I decided to write my own blog/website engine with black-jack and hookers.


The first problem was that I don’t have web-application development experience. Many thanks to Sergey Zwezdin, who helped me to make first steps and provided valuable support during development. He suggested to try ASP.NET MVC + Entity Framework (EF) as a start point. Relatively quickly I learned basic concepts and some non-trivial things. Site development started about 2 years ago, but last year I realized that this is a bullshit, not a website and started again with new knowledge. Due to my studies at university, the progress was quite slow and only after exams I was able to work on website intensively.

The biggest conceptual problem was with hierarchical site directories, where each directory would have their own settings and filters. Once I implemented this, I faced another issue: ASP.NET routing failed to differentiate directories and pages with matching names. Actually, this was the only thing I couldn’t handle correctly and was forced to apply extensions to pages (like in classic WebForms). But I don’t care too much about this, not a big deal.

Second phase was existing content migration. Neither, DasBlog, nor SharePoint allows to export content in BlogML format. Since DasBlog uses XML to store site content, I quickly converted them to BlogML, including comments. With SharePoint this trick didn’t worked, so I used my small Metaweblog API client to grab posts from database.

Next phase was HTML content rendering control. I wanted to template some parts of page contents. For example, provide an unified PowerShell syntax highlighting, PowerShell console box rendering and so on. A great HtmlAgilityPack library became extremely handy to clear inline styles, transform HTML fetch images, rewrite embedded links to a new format and much more. In a fully automated way! I can guarantee that any direct link to any of my previously published page will work by redirecting to a new URL. Now this library is used to replace HTML at runtime. I wrote nice PowerShell syntax highlighter (by using built-in PowerShell tokenizer) and reused XML/HTML syntax highlighting from PS Cmdlet Help Editor and much more. JavaScript-free.

Once this major task was done, I started to work on related stuff, like Metaweblog API server (to post articles via Windows Live Writer), management system and UX. Eventually, I ended up with 5 MVC controllers and 5k+ (according to Visual Studio metrics) lines of code.

At this point, my new web site implements almost all my wishes, except the biggest one: site search. Unfortunately, there are no easy-to-use search engines for .NET applications, but I’m going to work on it. There are two search engines: Lucene.NET and Solr.NET, but they doesn’t look easy and requires some research.

What next?

There are still places to improve. My general roadmap includes:

  • Research an ability to add on-site search;
  • Replace heavy CKEditor with lightweight editor in the comment boxes;
  • Re-categorize existing content in main weblog;
  • Implement cuts for main page feed;
  • Move external content to this web site.

Final word

As a final word, I encourage you, my readers, to update bookmarks, links (if possible) to my website and RSS feed. For any questions, and/or issues, please, report them in the contact form.

And do not forget to visit my website for new content. Thank you, very much!

Share this article:


Oleg 09.09.2015 07:35 (GMT+3) Welcome to my new web home!

It is pity the Russian website is gone. Is it still available somewhere? I'd like to download some articles for my archive.

Vadim 22.11.2015 23:38 (GMT+3) Welcome to my new web home!


See "Former Blog" in the nav menu http://sysadmins.lv/blog-ru/default.aspx


Post your comment:

Please, solve this little equation and enter result below. Captcha