Forms Authentication is a very useful feature of the Asp.net framework. Unfortunately, in its default configuration, the requirements for password length and strength, security question, and some of the other options are too strict for most low-end web applications and Intranets.
So, if you are new to this subject and try to find information on the web for how to customize Forms Authentication, you will most certainly come across this very useful post on Scott Guthrie’s blog. Continue reading →

The Business Intelligence Showcase demonstrates our expertise with Microsoft’s business intelligence application suite. These technologies include the SQL Server database, Analysis Services, and Reporting Services. Recently added to the stack was the .Net chart control, a very powerful component that greatly improves productivity for producing visually appealing charts and diagrams on web sites and Windows Forms applications.
The initial release of the showcase application can be viewed at the following location:

A SSAS cube with data from the National Highway Traffic Safety Administration’s FARS (Fatal Accident Reporting System) for the year 2007
The demo is a simple 2-dimensional representation of the cube for web presentation, and the dimensions can be selected from a list and transposed

A .Net Charts application with data for a subset of the (controversial) HEDIS measures for California from 2007These measures are published annually by the Pacific Business Health Group, a health insurance purchasing group on the West Coast.

I am pretty sure I caught the Mebroot root kit last night, or some variant, and potentially some other things, too.
I was working when all of a sudden the machine rebooted, without a blue screen. It did an orderly shut-down and reboot (XP Pro SP III). I did not allow XP to boot back up, but instead booted Knoppicillin from DVD. This is a free Linux with a free version of Kaspersky, Avira Antivir, and BitDefender.
All three ran. pulled the latest signatures from the web, and found only 3 minor issues. One was the Move Networks video player that I need for ESPN360, the other two were 2 scripts in the Temperory Internet folder that my virus scanner had blocked access to anyways, so I don’t think they executed. Continue reading →

Those looking for ways to render application data and content into Microsoft Office documents used to have a limited number of options. There once was something called Visual Basic for Applications (Microsoft ended support in 2007) or, more recently, Visual Studio Tools for Applications (see Wikipedia). OLE Automation has been around since the early days of Windows and can be used to access the Office application’s object model from the outside world (see Wikipedia). OLE is no longer mainstream technology, and there are conflicts with the managed code programming and deployment model of .Net.

All these options have in common that they are geared towards automating Office applications, rather than manipulating office documents. Consequently, they require that the Office applications are installed, which can be a prohibitive complexity for server-side document processing.

Alternatively, SQL Server Reporting Services has been an easy path to generating native Excel documents without Excel on the server, but Reporting Services is not exactly a lightweight product, and customization and integration with other applications is a complex task.

This sets the stage for the arrival of the Open Xml SDK, made possible by the Office Open XML format specification in 2006 (see Wikipedia). This article will explain what the Open Xml SDK is and what it can be used for. I will also provide a simple code example for manipulating an Excel spreadsheet document.

The problem: a blog post is supposed to show a temperature chart. The chart is served by a remote server, running SQL Reporting Services. The table with the temperature data contains 100,000s of rows and the server that hosts the SQL database and Reporting Services is an older Athlon box. Serving that image can take a while.

Fernand Point, by some considered the “father of modern French cuisine”, writes in his book “Ma Gastronomie”:

Perfection is a lot of little things done well.

This is certainly true in regard to cooking. It is rare, albeit possible, that on little thing that’s missing or was not done right ruins the dish. More often it is a few subtle things, not enough or too little of a spice, the temperature of the oil in the frying pan slightly too low, that will make the dish less than perfect.

I find that the perfect software application also requires a lot of little things done right. That’s what makes software engineering more an art than a trade.

The outsourcing and offshoring trends of the early 2000’s were an indication that executives increasingly thought of software development as a commodity, i.e. something that is purchased in large quantities at a certain price per unit (e.g. $/hour) and the less the company has to pay per unit, the greater the savings will be.

It turns out that something went wrong with that calculation, since these trends are seeing a reversal today. Now companies are ‘in-sourcing’ because the out-sourcing turned out to be not as economical as projected.

This development was predictable, but why?

Software development is a creative process. The software engineer has to make design decisions along the way that will impact the quality of the end product. Quality is an ambiguos term, so lets be more specific. The end product is characterized by the number of lines of code, how well the code adheres to the requirements, the structure of the code, its clarity, modularity, reusability, etc. All these factors contribute to how we generally defined good code. Good code can be understood and maintained more easily.
A good programmer can write good code and be very productive.
An moderately talented programmer can write good code and be less productive, or write not so good code and be less productive. There are also programmers who write poor code and are very productive in it.
A poor programmer writes poor quality code and is a lot less productive.

Each programmer’s code contributes directly to the quality and the success of the project. In a way, each programmer owns a small portion of the project. I’like to compare a software development project to a corporation, and each developer manages a department or a subsidiary. Nobody would in his right mind think of department heads or managers in a real company as a commodity that can be bought in China at the lowest possible hourly cost. The bottom line of such a company would suffer dramatically.
Similarly, the bottom line of a software development project suffers dramatically when developers are brought on as commodities.