
Monday, July 14, 2008
Hi all!!
It has been a while without posting here and maily this is because I've started posting about Visual Studio Team System. I created a
new site about Team System for the spanish community because I think I can contribute with interesting content. The content you'll find in the new site is in Spanish and I know that some of you out there aren't spanish. It has been a pleasure posting in this blog and I'm glad if I could helped someone.
I know that some of you are Spanish readers and because that if you're interested in Visual Studio Team System, Visual Studio Team Foundation Server, Metodologies, Quality Assurance or another thing related with ALM I suggest you to update your feed reader to the new one:
http://feeds.feedburner.com/teamsystem-es. Today I'll mix my old feed with the new one and in about a month I'll delete the old feed.
Thank you very to all of you for your reading and comments.
Jesús Jiménez.

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.
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.htmlhttp://en.wikipedia.org/wiki/Lazy_loadingAnother 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.

Wednesday, February 28, 2007
One thing that Microsoft use to do when they launch new technologies is to offer courses in the E-Learning website to help developers to achieve a minimun of knowledge. Because that I've decided to make a compilation of the free courses that Microsoft is offering now.
.Net 3.0
Web / ASP.NET 2.0
Sharepoint
Security
Biztalk
I think that all of them, in one manner or another, are interesting resources for learning the new avalanche of the technologies that are hitting the street in this days.