Maintenance in progress!
This is archived mirror of content until new site come alive.

comments spam

Wondered why my google analytics data was going up when there was not any content update in last 6 month or so.The secret was comment spam ;-(

Massive comments’ spam has been cleaned up. New version of BlogEngine has some better spam fighting features.

Blogengine 1.6.1 has some new admin features as well that allow more or less bulk comment deletes.

An upgrade from version 1.5 of BlogEngine to 1.6.1 was pretty easy since I did not have too many customizations. Left “themes” and “app_data” folders unchanged > deleted everything else > uploaded new files from version 1.6.1 without overriding before mentioned folders.

updating ...

new look coming soon ...

Year-end desk cleanup

The 960 Grid System is an effort to streamline web development workflow by providing commonly used dimensions, based on a width of 960 pixels.

Cuyahoga is an open source .NET web site framework. It provides content management capabilities and has a modular approach.

ASP.NET 3.5 Unleashed
Chapter 25. Caching Application Pages and Data
Chapter 21. Advanced Navigation
Chapter 20. Using Site Maps

Spring Batch is a lightweight, comprehensive batch framework designed to enable the development of robust batch applications vital for the daily operations of enterprise systems.

The SQL Site Map Provider You've Been Waiting For

Implement Custom Cache Dependencies in ASP.NET 1.x by Dino Esposito

Kentico CMS for ASP.NET flexible, all-in-one solution for web developers

Open Source CMS

Building Layered Web Applications with Microsoft ASP.NET 2.0 
N-Layered Web Applications with ASP.NET 3.5

S#arp Architecture: ASP.NET MVC with NHibernate Pronounced "Sharp Architecture," this is a solid architectural foundation for rapidly building maintainable web applications leveraging the ASP.NET MVC framework with NHibernate.

Tip/Trick: Url Rewriting with ASP.NET 

Using Common Table Expressions

Visual Basic LINQ Hands On Labs for Visual Studio 2008 

12 More SEO Tips for 200

Google Help › Analytics Help › How do I track AJAX applications? 

Simplify Ajax development with jQuery Discover how easy Ajax and DOM scripting can be

Rendering individual controls for AJAX Callbacks 

jQuery: Write less, do more

Getting Clueful: 7 Things CIOs Should Know About Agile Development 

Version Control for Multiple Agile Teams

Inversion of Control and Dependency Injection: Working with Windsor Container Oren Eini

Inversion of Control - Dependency Inversion Principle - Castle's Windsor/MicroKernel David Hayden 

Higgins 1.0: Identity Management Solutions from the Eclipse Foundation

Three Rules for Database Work by K. Scott Allen 

Using XQuery to Manage XML with SQL Server 2005 

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET by Jimmy Nilsson

Mocks Aren't Stubs by Martin Fowler

Service Oriented Architecture (SOA) and specialized messaging patterns This white paper discusses specializations for advanced data exchanges within enterprise service oriented environments and illustrates some of the common architectures of these new platforms.

A control adapter can "teach" the Menu how to produce this kind of CSS friendly HTML without sacrificing the power and flexibility of the original Menu control.

Don't Make Me Think!: A Common Sense Approach to Web Usability by STEVE KRUG

jQuery Puts the Fun Back into Browser Scripting by Rick Strahl 

On The Care and Handling of Cookies By Paul Riley 

Scalability Best Practices: Lessons from eBay Posted by Randy Shoup 

Guidelines for Using Distributed Queries

SELECT * INTO tableA FROM tableB 
=> this will create tableA based on tableB schema and insert the data

A Visual Explanation of SQL Joins by Jeff Atwood

Programmatically retrieve an InfoPath form from a SharePoint library by S.Y.M. Wong-A-Ton 

Aging of Accounts Receivable 

Web Service optimization By Alexander Yumashev

Chapter 6 — Improving ASP.NET Performance by P&P 

Custom Paging in ASP.NET 2.0 with SQL Server 2005
By Scott Mitchell 
Sorting Custom Paged Results By Scott Mitchell

Quick way to create UML Sequence diagrams

I stumble upon this post the other day.
This led me to wonderful online tool .
The SD/MSC Generator is an easy alternative to using mouse-centric tools like Microsoft Visio.
It has nice Domain Specific Language and API for creating quick sequence diagrams.

I would prefer this approach for creating any UML diagram anytime over any mouse-centric diagramming tool. Any UML diagram drawn will be rarely revisited later and adjusted/updated to the reality of the live code base. Usually when some process is better can be presented visually you want to have it done as quickly as possible while the idea is still fresh in you head. With traditional tools you would probably spend 70-85% of your time resizing horizontal and vertical lines, boxes, searching for the right shape and stencils, trying to remember to save the document in the correct format and with all this “noise” you loose concentration and spend 3-4 hours on simple diagram that would take 30 minutes to one hours with the tool like SD/MSC Generator. It is so much easier to learn Domain Specific Language for this tool than count pixels on the Visio grid.

And here is the best part of tool like this: you can store text/instruction for your diagram as regular text file in your favorite version control system rather then binary file.

Disclaimer: I am in no way affiliated with this product.

I just found another tool or technique that makes more sense, to me, and makes software project more Agile and less bureaucratic.

Generic Singelton pattern in C# and VB.NET


using NUnit.Framework;

public class SingletonTest
    public void ObjectsAreTheSameTest()
        DeploymentInfo firstDeployment = Singleton<DeploymentInfo>.UniqueInstance;
        DeploymentInfo secondDeployment = Singleton<DeploymentInfo>.UniqueInstance;
        Assert.AreSame(firstDeployment, secondDeployment);

//Singleton Pattern 
//Generic Version

public class Singleton<T> where T : class, new()
    private Singleton()

    private class SingletonCreator
        static SingletonCreator()
        // Private object instantiated with private constructor
        static internal readonly T instance = new T();

    public static T UniqueInstance {
        get { return SingletonCreator.instance; }


Imports NUnit.Framework

<TestFixture()> _
Public Class SingletonTest
    <Test()> _
    Public Sub ObjectsAreTheSameTest()
        Dim firstDeployment As DeploymentInfo = Singleton(Of DeploymentInfo).UniqueInstance
        Dim secondDeployment As DeploymentInfo = Singleton(Of DeploymentInfo).UniqueInstance
        Assert.AreSame(firstDeployment, secondDeployment)
    End Sub
End Class

'Singleton Pattern 
'Generic Version

Public Class Singleton(Of T As {Class, New})
    Private Sub New()
    End Sub

    Private Class SingletonCreator
        Shared Sub New()
        End Sub
        ' Private object instantiated with private constructor
        Friend Shared ReadOnly instance As New T()
    End Class

    Public Shared ReadOnly Property UniqueInstance() As T
            Return SingletonCreator.instance
        End Get
    End Property
End Class