Monday, December 10, 2007

Object-oriented design

The goal of object-oriented design is not only to reduce dependency, but also to remove ambiguity.For example, using DataSet as a universal data transfer object definitely reduces dependency, but increases ambiguity a lot, requiring you to understand the non-documented contract of what data should be in the data set and what do they represent. By using strongly-typed objects you document the contract and reduce ambiguity.

Here is the strong point of the strongly typed languages vs. dynamic languages. The contracts in the strongly typed languages are usually more pronounced. Unit tests can compensate for the missing contract details but cannot themselves become a part of the object contract.

Monday, December 03, 2007

Tuesday, November 20, 2007

Exam 70-529 training kit

The training kit is written quite poorly with a lot of typos and mistakes. Some of the examples are only given in VB.Net. What is most exciting (and funny) are the "words of wisdom" of the book:

"It is nearly impossible to write more than a few lines of code without there being some type of error in the execution of the code" (page 239)

"You should always expect the unexpected" (page 242).

Monday, November 19, 2007

Delayed Load

Cool technique for delay loading is provided at http://www.codeproject.com/Ajax/DelayedContentLoading.asp. Just use UpdatePanel, Timer and MultiView controls.

Saturday, October 27, 2007

PageDefrag

I must admit that PageDefrag does make a lot of difference in omputer performance.

Thursday, September 27, 2007

Tuesday, September 04, 2007

Manage ACL in ADAM

If you want to manage the access in ADAM the documented tool is dsacls. However this command-line tool is not very intuitive and easy-to-learn. There is an undocumented tool ldp in C:\Windows\ADAM directory that provides a GUI for security descriptors, i.e. DACL and SACL.

Thursday, August 30, 2007

Totally backwards!

I just discovered that Upgrading VS 2005 Web Site Projects to be VS 2005 Web Application Projects is a totally backwards procedure, as described in this blog. I just don't understand why this is so hard procedure, and why the "Convert to Web Application" context menu is available when you have already converted the project to web application, and it not an available menu for web sites.

Monday, August 06, 2007

Failed installations

To cleanup after failed installations (especially C:\Windows\Installer) you can use

MsiZap G!

Or alternatively download "Windows Installer Cleanup Utility" to do that using GUI.

Friday, August 03, 2007

MSBuild and Web Site projects

One of the developers found an interesting misfeature of the MSBuild. When you supply Project Name parameter it does not package the web site and does not create PrecompiledWeb folder. However as soon as you remove this parameter the folder gets created. Weird.

Monday, July 30, 2007

AzMan group (2)

Unfortunately the approach I described in the previous post does not really works. The problem is that the AzMan.msc breaks if I do that. Probably it expects the groupType to be exactly 16 or 32 rather than what would be correct behaviour: apply a bitmap.

Friday, July 27, 2007

AzMan groups

AzMan groups ain't security groups. If you check the groupType attribute of the Basic AzMan group it will be 16 (0x00000010). Now the security groupType normally is -2147483646 (0x80000002). This article deciphers the groupType values. Thus 0x80000002 really means global group that is also a security group. So if you want your Basic AzMan group to behave like a security group you should use group type 0x80000012 which will be -2147483630 in decimal.

Monday, June 11, 2007

ASP.NET AJAX performance problems

Look at this Fiddler capture: ScriptManager loads more than 400 MBytes of JavaScript code!

WebResource.axd: 20 KB
ScriptResource.axd: 260 KBytes
ScriptResource.axd: 65 KBytes
ScriptResource.axd: 22 KBytes
ScriptResource.axd: 9 KBytes

This will make people want to come back to plain old HTML.

Monday, April 30, 2007

Microsoft SQL Server management Studio

The management studio is a big disappointment for me, because I expected the tool that has the best features of Enterprise Manager and SQL Query Analyzer. Instead I found the combined tool where EM and SQA exist as independent units, so I don't have any of SQA features when I open the table from the object explorer, and when I use "New Query" I cannot edit results, nor use Query Designer. I can't believe Microsoft is selling the tool as a SQL 2005 "improvement". :(

Tuesday, March 13, 2007

New syntax for NUnit 2.4

Check out the new syntax for NUnit 2.4 in this blog entry. Nunit will have more object-oriented syntax for assertions, allowing to encapsulate the complexity of unit tests in nice object model. I guess this is another reason to stick with NUnit rather than going to VSTS unit testing framework.

Tuesday, February 20, 2007

Unofficial Windows 2000 DST patch

http://www.intelliadmin.com/blog/2007/01/unofficial-windows-2000-daylight.html

I'll try to apply it today.

Wednesday, January 31, 2007

QuickCounters

QuickCounters is a library that will make it easier to instrument your .Net code with performance counters. It still requires you to instrument the code through, which could make it quite messy.

Tuesday, January 02, 2007

Agile Google

Well, this blog says that Google represents good Agile, while other agile processes are bad agile. I agree with some points of the post, like if you have super developers the process does not help as much as if you have a mix of junior and medium level developers. But my personal experience does not confirm that no process is better than an agile process.

An eye-opening experience report by Mark Striebeck on Agile 2006 conference confirmed my suspicions. His area of work is Ad Words system, which is different from other stuff Google develops in that it is quite complex and requires a release cycle and commitments (as a B2B system). When he joined he found a few problems that can be attributed to a lack of a process. First of all the development was always late. Worse off, the developers did not know how late they are until the last moment. The scope creep was more than 30%. Mark was invited to add a process into the Ad Words development, to help solve these problems. Now, according to Steve Yegge this is like adding bad agile to good agile. Probably smart people at Google think differently.