Tuesday, November 18, 2008

Agile Reading List

Last week I attended an Agile Mini-Conference (hosted by my company) featuring Martin Fowler and Neal Ford. During the course of the day, there were many books and papers mentioned by both of these Agile luminaries. Below is the list that I compiled.

Books

Smalltalk Best Practice Patterns
Kent Beck, ISBN 013476904X

The Pragmatic Programmer: From Journeyman to Master
Andy Hunt & Dave Thomas, ISBN 020161622X

The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition
Frederick P. Brooks, ISBN 0201835959

The Productive Programmer
Neal Ford, ISBN 0596519788

Pragmatic Thinking and Learning
Andy Hunt, ISBN 1934356050

Essays

No Silver Bullet: Essence and Accidents of Software Engineering
Frederick P. Brooks, Jr.

Code as Design: Three Essays by Jack W. Reeves
Jack W. Reeves

Thursday, September 18, 2008

Developer Basics: Good Source Control Practice

Jeff Atwood has a great article, Check In Early, Check In Often This covers what he considers the golden rule of using source control. After working on a large project with 5+ developers, I would have to agree with his views concerning the "giant dollop of code" and that when you check in smaller bits of functionality, each check in makes that code "infinitesimally more functional".

Thursday, August 28, 2008

Using CTRL + F5 in your browser

I recently found the CTRL+F5 shortcut key that you can use in your browser to refresh a page that you are viewing. Below is an explanation of the difference between that and using F5, from the Microsoft Knowledge Base article: http://support.microsoft.com/kb/306832.

Refresh the current Web page              F5 or CTRL+R


 


Refresh the current Web page, even if     CTRL+F5


the time stamp for the Web version and 


your locally stored version are the same  



 



Basically, CTRL+F5 will force the page and your cache for that page to be reloaded from the web server, while F5 will just refresh the page and display the cached version if one exists.



CTRL+F5 behaves this way for all Internet Explorer versions as well as Firefox, I am not sure about other browsers.

Tuesday, August 26, 2008

IE7 & Fiddler

This is probably old news for most folks... But since I recently upgraded my browser to IE7 in support of a project that I am working on, this was new to me. Fiddler will not pickup http requests from http://localhost if you are using IE7. The Configuring Clients section on Fiddler site explains why and how to work around the issue.

I also found this post showing that you can use http://localhost./ (note the extra dot at the end).

Wednesday, June 4, 2008

SQL Server 2005 & Ordered Views Gotcha

I recently ran into an issue where we were using an "undocumented feature" in SQL Server 2000, that allowed us to sort a view and then when selecting all items from the view the items returned in the select statement would follow the same order as the view. This does not work with SQL Server 2005, because the undocumented feature has been corrected. Lets say that we have the following table and data.

tblSortedUsers

IdUserNameSortorder
1Bob4
2Tim3
3Sally2
4John1

Now we create the view vwSortedUsers as follows:

CREATE VIEW vwSortedUsers AS
SELECT TOP 100 PERCENT
Id, UserName
FROM tblSortedUsers
ORDER BY SortOrder

Now when execute the following query:

SELECT * FROM vwSortedUsers

I will get the following results:


SQL Server 2000































IdUserName
4John
3Sally
2Tim
1Bob


SQL Server 2005






























IdUserName
1Bob
2Tim
3Sally
4John


The reasoning for this this best explained by the excerpt below from Microsoft KB Article 926292:

SYMPTOMS

You have a view in a database in SQL Server 2005. In the definition of the view, the SELECT statement meets the following requirements:

• The SELECT statement uses the TOP (100) PERCENT expression.

• The SELECT statement uses the ORDER BY clause.

When you query through the view, the result is returned in random order.

However, this behavior is different in Microsoft SQL Server 2000. In SQL Server 2000, the result is returned in the order that is specified in the ORDER BY clause.

This discussion talks about this being an undocumented feature that was corrected in SQL Server 2005 and also references the above MS KB Article. While the KB article mentions a HotFix that can be applied to SQL Server 2005, the best (and recommended) solution is to add the Order By clause to your query and not your view. Therefore, the query should be:

SELECT * FROM vwSortedUsers ORDER BY SortOrder


So if you are in the process of upgrading your database from SQL Server 2000 to SQL 2005, please aware of this issue.

Tuesday, April 1, 2008

Dependency Injection/Inversion Overview

James Kovacs' article, Tame Your Software Dependencies for More Flexible Apps in the March 2008 issue of MSDN Magazine is a great read. If you have heard of either Dependency Injection (DI) or Inversion of Control (IoC) and wanted to know more about what they are and how they work, then I would recommend that you check out the article; as James gives a very good explanation of both.

Dependency Injection/Inversion Overview

James Kovacs' article, Tame Your Software Dependencies for More Flexible Apps in the March 2008 issue of MSDN Magazine is a great read. If you have heard of either Dependency Injection (DI) or Inversion of Control (IoC) and wanted to know more about what they are and how they work, then I would recommend that you check out the article; as James gives a very good explanation of both.