Microsoft Dynamics CRM is an interesting and powerful business application. A core out-of-the-box (OOTB) benefit of Dynamics CRM is the ability to extensively tailor the application to address business needs, and here there are two approaches to consider: development or customization. Determining which approach to take is the key to maximizing the benefits of Dynamics CRM while keeping costs low.

Dynamics CRM is a basic web user interface fronting a SQL Server database that manages relational data. However, it is flanked by a built-in array of basic analytical tools and extensive administrative features, such as auditing, which give it enterprise-level credentials. Throw in a customizable user interface (UI), and you have a tool that is capable of supporting both small businesses and multinational corporations. So it would be logical to assume that Dynamics CRM has a developer-friendly, structured architecture to support customizations.

However, the reality is a little more complicated and brings up some curious paradoxes about Dynamics CRM. Read More…

Since PaaS and Windows Azure have both been in the news recently, thanks to a favorable report from Gartner, I thought it might be good timing to revisit a whitepaper I wrote on PaaS. 

There’s been a lot of talk about the different cloud-based services available today, including Infrastructure as a Service (IaaS), Software as a Service (SaaS) and Platform as a Service (PaaS). While each of these services is unique, PaaS stands out from the mix. This is not to suggest that PaaS is somehow better than IaaS; that would be an improper comparison. In fact, as shown in the diagram below, PaaS simply builds on the capabilities offered by IaaS.

But if you are a developer, IT shop or an ISV responsible for building, deploying and maintaining solutions, leveraging PaaS is where you reap the maximum cloud-computing benefits. Read More…

What is Yield? A Brief Overview

Yield is a feature of C# that is not present in its largest competitor, Java. Many of you have heard of it, but haven’t really used it, or may have dismissed it as “syntactic sugar.” Others might have never heard of it before. In short, it’s a way of replacing this:

public static List<int> ExampleList()
{
     List<int> ret = new List<int>();
     ret.Add(1);
     ret.Add(2);
     ret.Add(3);
     return ret;
}

With this:

public IEnumerable<int> ExampleYield()
{
    yield return 1;
    yield return 2;
    yield return 3;
}

So what happened here? First, we’ve opted away from <code>List<int></code> for a more interface-driven <code>IEnumerable<int></code> function return. Also, we’ve reduced the number of lines; by two to be exact. And somehow, we’ve managed to return a list of items without actually allocating a new list. That’s an important point to make, because we have completely avoided instantiating a new object. Read More…