Archive for March, 2009

One of the most heated debates during Web sites or intranet designs are discussions were developers and designers discuss whether such a design or form or whatever is the best for the users.  In most of these discussions everyone is just assuming that what makes sense to himself/herself is what will make sense to users. In most of the times, actual users’ answer is “none of the above”.

For example, a 60 years old person who rarely uses a computer has serious trouble figuring out that hovering over a menu item will cause the menu to expand into the second level. For most designers or developers this is a no brainer. Same for floating panels or drag and drop operations and so on.

Most requirements documents mention actual users just in term of numbers; something like: expected number of users is X and expected number of concurrent users is Y and it is all about performance measures and not about knowing the actual users who will be using the system. Many developers and designers have never met the customers and can not even imagine how they look like or what they are actually using the machines. As a result, with unknown users, geeks are developing what they see best –for themselves.

Not understanding the end users is one sure way the application will not be a success. On the other hand, making really simple applications that targets the end users needs is one the reasons the IPod and the IPhone were smashing successes.

One the popular methodologies used to design a user-centric interface is the use of personas. Personas are imaginary users that are targeted during the design. There can be one or more personas for any given application. This is a good antidote for the problem of designing application for self rather than for the actual users (called mirror personas) For example, when designing Visual studio, Microsoft came up with three personas : Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed. Elvis, the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learn while working on the solution. Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution.  (Reference: http://www.nikhilk.net/Personas.aspx )

The use of personas was introduced in the famous book “The inmates are running the asylum” ( http://www.amazon.com/Inmates-Are-Running-Asylum/dp/0672316498 )

Needless to mention, the success of this methodology depends on having personas that accurately represent the end users, otherwise it will be defeating the purpose.

This will help eliminate problems that are sure to come from discussions that go like this: For an application that is targeting people with very superficial knowledge of PCs:

  • Developer1 : How will the user be able to change that setting?
  • Developer2: Very simple, all they need to do is open this XML file and edit the corresponding node with the updated value.
  • Developer1: Cool, That means our application is generic and configurable.

Of course you can imagine the  users’ reaction when told to simply  open the XML file, look for the node “xyz”, etc. Even worse are the problems that may come out of such users actually trying to edit this XML file.

Personas can be equally helpful when trying to figure out what features may be most useful to “users” and what features can be scoped out of the project or how to prioritize features or releases.


Read Full Post »

IE 8 Released


Read Full Post »

This tutorial will very quickly walk through creating a VERY SIMPLE  Entity Model. This is a VERY simple tutorial to simply get a taste of EF.

You will need visual Studio 2008 SP1 or later and SQL Server for the database and we will use the Nrothwind sample database.

ScreenHunter_01 Mar. 19 00.09

Open Visual Studio 2008:

ScreenHunter_02 Mar. 19 00.09

Create a new Project: (Make sure you are selecting Framework version 3.5)

ScreenHunter_03 Mar. 19 00.10

Right Click the Project Name and Select “Add Item”, Select ADO.NET Entity Data Model from the “Data” Category and select a name for it

ScreenHunter_05 Mar. 19 00.11

A Wizard will start, Please select “Generate from Database” (Note: Though theoretically, you can start with the Model and the Later on map it to the a database, The Visual studio tools for EF are best designed in this current release to generate the mode from the database.

ScreenHunter_06 Mar. 19 00.11

The Next form will ask you to create the connection to the database Or choose from an existing connection in the project if one exists:

ScreenHunter_07 Mar. 19 00.11

Create the connection. Note that the wizard automatically creates a key in the web.config or app.config with the connection string inside it (nice feature)

Next you will be asked To select the Tables/Views/Procedures that you want to include in the Entity Data Model and to se a namespace for the Model Classes:

ScreenHunter_09 Mar. 19 00.13

In Our case we will simply Select the “products” and “Categories” Tables from the List of tables available in the Northwind database. (This is just for simplicity).

Based on the choice, the Wizard will generate the Entity data model.

ScreenHunter_10 Mar. 19 00.17

To make the Model more easy to understand and more natural, you can set the name for the Entity (Product as opposed to products like the table name in the database) and the Name of the Entity Set (we can make it Products or ProductSet or whatever)

ScreenHunter_11 Mar. 19 00.28

You can also change the Class properties, For example, you can rename ProductName (as in the column name in the DB) to be “Name” to be more natural to write code like productObj.Name rather than productObj.ProductName for example.


Now the model is ready we can start retrieving data.

A very simple code to load all products will look like this:

using (NorthwindDBConn context = new NorthwindDBConn())
    foreach (Product prod in context.Products)

Important Note: Though prod Object has a category property, due to Lazy loading by the EF it will e initialized as null and wont be fetched from the database.

In order to read it from the database and make sure it is initialized, you need to add the line “ prod.CategoryReference.Load(); “ so the code will look like :


using (NorthwindDBConn context = new NorthwindDBConn())
    foreach (Product prod in context.Products)


That is All you need to retrieve elements from EF. To use more sophisticated queries, EF allows you to use LINQ to build queries.


In order to save an Product object for example, all you nee to do is:

using (NorthwindDBConn context = new NorthwindDBConn())
        Product x = new Product();
        x.Name = "New Product";




That is all you need to get started with the EF.

For more information you can refer to:

Read Full Post »

Good Links, March 18, 2009

ASP.NET MVC 1.0 Released : http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

A List of sample ASP.NET MVC applications: http://www.tampadev.org/News/Details/ASPNETMVCSampleApplicationsOpenSourceExamplesTutorials

A Free end-to-end chapter from an ASP.NET MVC book to be released in April 09: http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf

And the Sample application described in this chapter (full source code and unit tests): http://nerddinner.codeplex.com/

S# Architecture: ASP.NET MVC with NHibernate architecture: http://devlicio.us/blogs/billy_mccafferty/archive/2008/04/21/asp-net-mvc-best-practices-with-nhibernate-and-spring-net.aspx

Reshaper 4.5 Beta released and can be downloaded here: http://www.jetbrains.com/resharper/beta.html

Silverlight 3 Beta released (developer version only) : http://www.microsoft.com/downloads/details.aspx?FamilyId=11dc7151-dbd6-4e39-878f-5081863cbb5d&displaylang=en

ASP.NET MVC Training kit: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=1e0be0b2-910a-4676-9f3a-41e4d9c0fc08

Read Full Post »