posts - 63,  comments - 159,  trackbacks - 5
  Thursday, November 22, 2007
I don't like to write posts with just a link to another blogger post, but in this case this an exception. It's an exception beacuase the post I'm reffering to has a lot of links of free tools that can make your life easier when you're dealing with SQL Server databases. Another reason for posting this is to remember myself this great post from the SQL Team Blog.

http://weblogs.sqlteam.com/mladenp/archive/2007/11/20/Free-SQL-Server-tools-that-might-make-your-life-a.aspx
  Monday, November 12, 2007

I'm relatively new to Team Foundation Server, and I'm discovering a lot of community projects than are very useful for me a for my team when developing using TFS.

One of the things I read about was the Checking Policies. In one of the last events we had in the Madrid .Net User Group, Luis Fraile (MVP Team System), talked us about VSTS extensibility, but I don't have enough experince with this environment to create my own policies.

One thing I consider very important is that all code that are in the repository are commented out and browsing CodePlex I found CCCP ( TFS Code Comment Checking Policy). It's a tiny application that installs smoothly and that allow the TFS Admin to add a policy that checks if the code is commented when a TFS User is checking-in some changes to the repository. It works for C# and VB and allow the administrator to select what items are going to be checked: class, methods, properties or by accessor: public, private or protected.

I'm still testing it but it's a very good approach to ensure that all code of the repository has comments.

 

  Thursday, November 08, 2007

I've been a lot of time without writing here. I'm specially busy with other issues than blogging but this time is an special time. I'm proud to annouce the next session of the Madrid .Net User Group.

We'll explore some common problems in software development and their consecuences with some examples. And then we'll continue with five basic design rules in software development.

Event details:

Event Name: Retaking control, Agile Design Principles (Translated from Spanish title)
Speaker: León Welicki
Where: Microsoft Iberica Offices (Madrid)
When: November 15th from 19:00PM to 21:00PM
Registration: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032359440&Culture=es-ES

  Friday, June 15, 2007

The Lazy Load Pattern is a very simple and useful pattern. This pattern is usually used when a property of an object is not always accessed during the usage of the object instance. For example, image that you have a Customer object. This object has a property that contains a collection of all orders placed by the customer. In the UI you have a general view of the customer object where you only show it name and surname. For this view of the customer object you don't use the Ordes property, so it can be loaded only when neccesary, for example in a detailed view of the customer object.

LazyLoadPattern

In a classical implementation of the Customer class, the Orders property use to be as follow, and is filled in the business layer when the instance of the Customer class is created.

class Customer
{
    
#region Private members

    
private int m_id;
    private string 
m_name;
    private string 
m_surname;
    private 
OrdersCollection m_orders;

    #endregion

    #region
 Public properties

    
public int Id
    {
        
get return m_id}
        
set { m_id = value; }
    }

    
public string Name
    {
        
get return m_name}
        
set { m_name = value; }
    }

    
public string Surname
    {
        
get return m_surname}
        
set { m_surname = value; }
    }

    
public OrdersCollection Orders
    {
        
get return m_orders}
        
set { m_orders = value; }
    }

    
#endregion
}

A better performace approach is to defer the loading of the Orders property to the moment that it's accessed. If the property is accessed and the private member is null means that the property has not been initialized so you can load it value in that moment.

private OrdersCollection m_orders;

public 
OrdersCollection Orders
{
    
get
    
{
        
if (m_orders == null)
        {
            m_orders 
= new OrdersCollection(this.m_id);
        
}

        
return m_orders;
    
}
    
set
    
{
        m_orders 
= value;
    
}
}

Another approach is to convert the property Orders of the Customer class into a method called GetCustomers that loads the orders that belongs to the customer. This approach is very similar but since the Customer class is an entity it shouldn't have methods, only just properties.

public OrdersCollection GetOrders()
{
    
return new OrdersCollection(this.m_id);
}

As I said before this is a very simple and useful pattern and it's easy to implement. I tried to explain that pattern clearly but I know my english is not perfect. In the case you have doubts about what is the Lazy Load Pattern or the benefits that you can obtain with it usage check the next resources:

http://www.martinfowler.com/eaaCatalog/lazyLoad.html
http://en.wikipedia.org/wiki/Lazy_loading

Another good resource is the Lazy Load Property Snippet by Michal Talaga in his Vault of Thoughts - .NET Blog that makes easy to use this pattern in our code.

  Monday, June 11, 2007

I know that in the last months I haven't posted anything here, but the post of the other day. If you read the title of this post I'm sure that you're thinking that there's a mistake, but this is what I want to write "ilitialize()"

Today I've started working for ilitia technologies and I'm very happy. Some of the bloggers of clearscreen.com already belongs to it, and very happy to join the team. For those who didn't know about ilitia, it's a Microsoft Certified Gold Partner company based in Madrid (Spain). They usually use to collaborate in community events with Microsoft Iberica, what means that there are people with high technical level. I hope to learn a lot.

At the moment I don't have much more to say, I'll write more soon. I'm doing a personal project that I don't know if it will be useful but I'm sure it will be funny.

  Saturday, June 09, 2007

Doolwind's Game Coding Site is riding a Programmer Personality Test. This test is based on the Myers-Briggs Personality Test and has been modified to relate to your programmer personality type. It's a 12 question test so it's easy to fill out.

It says that I'm a DLTB (Doer, Low Level, Team, liBeral) programmer type.

What kind of programmer are you?

  Monday, March 05, 2007

Since Windows Vista became public the list of software companies that certifies their software products increases every day. Microsoft has published a list of applications that have earned the "Certified for Windows Vista" logo or the "Works with Windows Vista" logo. Officially there are 116 applications certified for Windows Vista and 884 applications that works with Windows Vista. I think that the number of applications  that works with Windows Vista is higher, but this may be one reason why people is waiting to migrate to Windows Vista.

You can view the full list of  the previously mentioned applications at this Microsoft Support KB Article that is updated weekly.

  Thursday, March 01, 2007

I don't like to do echo when a new release of a product or something hits the street, but I don't like that great things fall into oblivion too just why people don't write about it, so I'm proud to announce that WatiN 1.0.0 has been released. I would like to thank Jeroen Van Menen for doing this great framework to test our web applications via UI automation.

"This release adds may new features like using multiple attributes to search for an element, full support for the Style attribute, casting an Element instance to a more specialized element type, support for changing the default settings used by WatiN, added support for tbody elements and improvements to SelectList and Table."

This is the brief release note that Jeroen has made public, but obviously there's a lot of work behind that, a lot changes internally and in the API Side. Now, as a good "Release echoer", some links for an in depth information about WatiN 1.0.0 release.

Now, if you still reading this post and don't know what WatiN is, you can check out my codeproject article that briefly introduces on how to use this framework to test our web applications user interfaces.

  Tuesday, January 23, 2007

Past week, reading some posts I came across a post that announces MS Firefox 2007 Professional Edition. Some of the program features made me laugh a lot, so here you are some of them:

  • Tabbed Browsing
    View multiple Microsoft sites in a single browser window. Easily switch from one Microsoft site to another through tabs at the top of the browser frame.
  • RSS (Real Simple Sex)
    RSS is a relatively new algorithmic technology fueled by the continued hot desires of many online web users. Accessed by an illuminating an icon on the toolbar - a single click allows you to view and optionally download anything that resembles a tit, a boob or a breast - rendered directly in the browser with speeds up to 10 times faster than the competition. Real Simple Sex can scan and arrange explicit images/pictures in order of quality and effectively filters out irrelevant content such as balloons or soccer balls
  • Address Bar Protection
    Every window, whether it's a pop-up or standard window, will present an address bar to the user, helping to block malicious sites such as Yahoo.com
  • Improved HIJAX Support
    Improves the implementation of the XMLHTTP Requests with native Javascript exploits of other web browsers. This syntactically takes over (Hijacks) random browser clients online compromising their security and usability.

There are a lot features more, but I don't want to close this post without showing you some of the MS Firefox 2007 Professional Edition System Requirements:

  • Computer/Processor
    Quadcore CPU 4.6GHz processor or higher (For the loading of Hotmail.com)
  • Memory (To compensate for frequent memory leaks):
    Windows XP Service Pack 2 (SP2) - 873 MB
  • Peripherals:
    Microsoft Mouse, Microsoft IntelliMouse, or any compatible Microsoft device. (Otherwise all hyperlinks will be disabled)
As I said, it made me laugth a lot. You can check for the complete list of features and the complete list of system requirements at www.msfirefox.com and if you haven't tried www.ie7.com before, try it, it's funny to see that the people have a lot of spare time. :D