Finally I did it! I burned my old SharePoint blog and R.I.P.’ed my former Russian blog (DasBlog) as promised.
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:
There were several candidates:
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.
There are still places to improve. My general roadmap includes:
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!
It is pity the Russian website is gone. Is it still available somewhere? I'd like to download some articles for my archive.
@Oleg
See "Former Blog" in the nav menu http://sysadmins.lv/blog-ru/default.aspx
Post your comment:
Comments: