Welcome to the new website. This is my place on the net to share knowledge about web, database, and enterprise software. In my day to day work with technology, I have found there is No Silver Bullet [] to the essential difficulties of software development. Essential best practices are situational and defined by context. […]

To elucidate a simplistic example of this, if you had a company table and an employee table and each company row could have many employee row associated with it, you would (assuming they were correctly designed) have two relational tables and one relationship. Normalization is the process by which a series of rules known as […]

Failure modes should not reveal native error codes or diagnostic system information and always revert the application to the most secure state possible Passwords should generally not be persisted to any client. Text persisted in an input type=”password” or hidden fields is still viewable in HTML. Cookies are just text files on disk and passwords […]

HTML / CSS Usage At a minimum HTML output should validate as compliant with the w3c HTML 4.x Transitional Standard with external CSS Level 1 Stylesheet Formatting (or better) and the use deprecated HTML tags is strongly discouraged. For better forward-compatibility with XHTML, all eligible HTML tags should be properly closed with attribute names in […]

GET should not have direct effects and anything which does not have direct should use GET. Bookmarked, linked or hacked URLs should be usable as navigation devices including the search, sort, and paging of data for reporting. “GET operations (as happen when you follow a regular hypertext link) are fundamentally different from POST operations (as […]

A database table’s primary key is the field or combination of fields that yield a distinct value for every row in a data table. Beging able to unambiguously distinguish every piece of information in a database is fundemental to the concept data integrity. Practically speaking, natural keys are unweidy whenever they are composed of the […]


Regular .NET applications load assemblies into an application domain on demand. However ASP.NET has special behavior that will automatically load all assemblies in the /bin directory when the application domain loads or reloads. An application domain will unload when any one of the following occurs: An update to web.config, machine.config or global.asax Any updates to […]


There is a definite Art in Computer Programming [] shaped by the Structure and Interpretation of Computer Programs []. From a technical pespective, Refactoring [] is the essential technique to incrementally remove harmful code patterns such as the Go To Statement [] and other AntiPatterns [] such as the Big Ball of Mud []. Following […]


Web applications accessible to the public Internet are guaranteed to be the target of random or focused attempts at mischief or abuse and recovering from a root compromise always painful. At a minimum, web applications require the planned design and consistent implementation of diverse technologies based on: realistic Threat Modeling [] education in the Most […]


SharePoint 2010 Publishing Sites have a cool spell check feature for page content but it is not at all obvious how to add words your own words to the dictionary. Unlike most modern word processors there is no “Add to Dictionary” button on the GUI. Instead you need to: Create a text file called “Custom […]