SharePoint As a Service

NOTE: For more on this topic, please check out this episode of the Office 365 Developer Podcast where I discuss these topics with Microsoft’s Jeremy Take; it was a great discussion!

For many years, Microsoft and others in the SharePoint community promoted SharePoint as a Platform. The idea was to develop business applications within SharePoint sites, and thus to gain access to all the rich services SharePoint brings to the table such as document management, search, user profiles, enterprise content management, and more. Another promise of this approach was that IT could support one big application (SharePoint) and deliver may smaller applications to business users, and thus deliver on the “long tail” of application needs.

The Long Tail of SharePoint
The Long Tail of SharePoint – Circa 2007

Microsoft invested in features like Business Connectivity Services and the Secure Store (identity mapping) service to make SharePoint a capable platform for building business solutions that integrate with other Line of Business applications. Yet this approach wasn’t all we had hoped it would be.
Continue Reading

Microsoft’s New Approach to Collaboration and Portals

At the Ignite conference last week, Microsoft laid out a new vision for collaboration and portals that is a major departure from the site-based approach that has been the core of SharePoint for more than a decade. Microsoft still fully supports SharePoint in its current form and will continue to do so, both on premises and in Office 365, even as it introduces Office 365 Groups and a new suite of Office 365 “NextGen” portals that could replace SharePoint sites for enterprises that want a more modern, cloud based approach to collaboration. SharePoint sites will continue to work, but it’s unlikely Microsoft will invest in enhancing them beyond where they are in SharePoint 2013.

Continue Reading

The Well-Tempered AngularJS Web Part

Listen while reading …

Manuscript for Bach's Fugue in Ab Major
Manuscript for Bach’s Fugue in Ab Major

The mathematics of music isn’t as simple as you might think, and early musical instruments often didn’t get it right. Keyboard instruments were especially susceptible to this. On a particular organ, for example, the fifth interval in the key of C might sound harmonious, but the fifth above Ab might be sour and grating to the ear. These so-called “wolf” notes could spoil a whole composition. It wasn’t until the late 17th century that “well-tempered” instruments came along, a fact that was celebrated by J.S. Bach in his solo keyboard composition, “The Well-Tempered Clavier,” which includes harmonious preludes and fugues in every possible key.

Like notes on a piano, web parts (or any kind of web widgets) are combined in new and unexpected ways on a page. Yet sometimes they don’t play well together. This article will show you how to write “well-tempered” web parts that always behave appropriately, even if other versions of Angular are used on the page.

Continue Reading

Understanding Javascript Promises

I have to admit I found the concept of Promises difficult to grasp at first; once I understood, I’ve been looking for a good way to explain it to others. This article is my attempt to make Promises easy to understand through a simple metaphor.


Imagine you’ve entered a crowded restaurant. You force your way to the maître d’ and request a table, and are told there is a wait. “We’ll call your name when the table is ready,” she says. This is the equivalent of a “callback” function – the server (a restaurant server in this case) will call you (the client) back when your request is complete. Inevitably half the people in the room are named “Bob” and a crowded confusion ensues.

Continue Reading

Stretching the (HTML 5) Canvas: Fixing Aspect Ratio Problems

The Problem

I’m working in a web part that uses the HTML 5 <canvas> element, and I ran into a little problem. The web part is a “microsurvey” that asks a single question and, when the user clicks an answer, displays the results of the survey so far. For the results, I wanted to show a bar chart, and I thought it would be a fun opportunity to use the new HTML 5 canvas. The problem is that my chart was distorted; as you can see the text is too wide and looks like it came off an old dot matrix printer. Somebody stretched the canvas!

3-9-2015 6-28-46 PM

Continue Reading

How to: Display the name of the Windows user logged into your ASP.NET Site

This article is reposted from my old MSDN blog. Please post comments here as I am no longer able to publish or respond to them on MSDN. Thanks!

This is really pretty simple but I was surprised not to find it in any one blog posting. The following code retrieves the display name of the logged in user, such as “Bob German” (not “domain\username”). It’s easy to accidentally display the Application Pool account rather than the logged in user. Some articles said to turn on Impersonation, but that’s often a bad idea for other reasons. This is what worked for me just now:

string username = &amp;quot;&amp;quot;;
IPrincipal userIdentity = HttpContext.Current.User;
PrincipalContext context =
    new PrincipalContext(ContextType.Domain);
UserPrincipal userPrincipal =
    UserPrincipal.FindByIdentity
        (context, userIdentity.Identity.Name);
if (userPrincipal != null)
{
    username = userPrincipal.DisplayName;
}

I hope this helps someone; thanks!

New Guidance from Microsoft for Packaging and Deploying SharePoint Solutions

This article is reposted from my old MSDN blog. Please post comments here as I am no longer able to publish or respond to them on MSDN. Thanks!


Microsoft is cleaning house. Now that it has to maintain SharePoint for thousands of enterprises and millions of users in Office 365, Microsoft is working to clean up all the odd and messy bits of its flagship collaboration product. In a recent training course on Microsoft Virtual Academy, Microsoft urged developers to change the way they package and deploy their code in order to clean up a mess that has been building since 2003.

Continue Reading

A Brand New Vantage Point

OldVantagePointWelcome – you have arrived at my new blog!

After nearly a decade blogging at MSDN, it’s time for me to strike out on my own. Microsoft was really nice to let me keep blogging after I left their employ to work at BlueMetal Architects, and Chris Bortlik was good enough to sponsor me (thanks Chris!) But alas, all good things must come to an end; a policy change means that partners can no longer post on MSDN.

So welcome to my new blog! As far as I know, Microsoft will leave my old articles where they are for the time being, and I plan to update some of them and re-post them here. Thanks for reading!