Wednesday, July 27, 2011

Metalogix Times Square Contest for SharePoint Saturday NY

If you’re going to SharePoint Saturday New York this weekend, you’re probably planning to go to Times Square anyway, so why not take a picture that could win you a Flip video camera?

All you have to do is take a picture of yourself in front of the Metalogix loves Microsoft SharePoint billboard, follow the @metalogix account and then tweet the photo with @metalogix and #SPSNY in the message and you’re entered to win a Flip video camera. (Winners will be notified by Twitter DM, so don’t forget to follow @metalogix.) The Metalogix banner will appear every hour 7am to 1am on Friday and 7am to 3pm on Saturday—the exact time is random. To get an idea of what it will look like, see the image below.

You can read about the contest on the Metalogix blog.

image

Metalogix is the official Office 365 sponsor for the event. I’ll be there to present a session about migrating file shares, ECM systems, Exchange public folders and other SharePoint systems to Office 365.

Tuesday, July 26, 2011

Speaking at SharePoint Saturday New York 2011

For the third year in a row, I’ll enjoy the privilege of being at the SharePoint Saturday New York (#spsnyc) community conference.

Metalogix is the Office 365 sponsor and I’ll be speaking about SharePoint upgrade and migration.

website: http://www.sharepointsaturday.org/ny

Tuesday, July 12, 2011

Microsoft.com Case Study with Metalogix

This week, Microsoft published a four-page case study about Metalogix Software. I’m the Director of Product Marketing (and Chief SharePoint Evangelist) for Metalogix, so I’m really happy to see this pat on the back from our most important partner. There are some quotes in there from me as well, so that’s another good reason for me to like it.

Metalogix helps organizations benefit from the collaboration and content management features of Microsoft SharePoint Server 2010. The company developed a portfolio of tools that customers use to manage and migrate from previous versions of SharePoint Server and third-party systems to SharePoint Server 2010. Metalogix also supports cloud migrations, helping customers flexibly adopt fully hosted and hybrid scenarios. Metalogix customers experience fast, easy, and cost-efficient migrations and on average, they report a lower total cost of ownership with SharePoint Server 2010 than competing solutions, experience cost savings from SharePoint Online, and achieve these gains faster by using Metalogix.

image

Since 2001, Metalogix has helped companies plan for and complete their transitions to Microsoft content management systems as quickly and cost-efficiently as possible. After acquiring two leading solution providers, Metalogix has expanded its product line to include binary large object (BLOB) storage/externalization, management, and archiving and technologies, and it has served more than 5,000 customers across the United States, Canada, Europe, and the Middle East. Metalogix is a member of the Microsoft Partner Network with a Gold Independent Software Vendor/Software competency.
 
With the release of Microsoft SharePoint Server 2010, Metalogix sees a significant number of organizations that want to take advantage of a unified environment for collaboration and content management. Metalogix customers are eager to embrace advancements to workflow, business intelligence, and content editing with the familiar Ribbon feature, part of the Microsoft Office Fluent user interface. “Customers are also attracted to the capabilities in SharePoint Server 2010 for connecting to external data,” says Stephen Cawood, Director of Product Marketing at Metalogix. Microsoft Business Connectivity Services in SharePoint Server 2010 enables organizations to easily connect their SharePoint Server 2010 intranets, extranets, and websites to line-of-business systems, databases, and other external systems. “The overarching theme of SharePoint Server 2010 for all customers is flexibility,” says Cawood.

Read the full Microsoft.com Metalogix Case Study and download the Microsoft Word version.

Monday, July 11, 2011

Canadian Microsoft Azure ISV Twitter Account and Blog

Microsoft canadian ISV blog



“I See Value,” the Canadian Microsoft Azure ISV blog, now has a Twitter account @ISeeValue.


On the Canadian Microsoft Azure ISV blog, read about Connect2Fans, a BizSpark Startup that has developed a solution to help artists, writers and other people in the arts and entertainment industry who find it difficult to connect directly with their fans.

Sunday, July 10, 2011

Windows Azure Table has Phantom Columns

While working on my Windows Azure application this weekend, I ran into an issue that had me stumped for a few minutes until Neudesic’s Azure Storage Explorer helped me attain the moment of clarity that brought the resolution to me.

The issue I was running into was that one of my Azure tables was showing a number of columns that I wasn’t using. The answer was quite simple—I WAS using them in the past. Therefore, even if I deleted all the rows in the table, I wasn’t removing those old columns and they were showing null data.

image

- You can download Neudesic’s Azure Storage Explorer from www.codeplex.com.

In this case, it didn’t show my anything other than my Azure table had empty columns that I didn’t think I was adding, but that was enough for me to ‘see’ the issue.

Friday, July 08, 2011

Error Deserializing XML: There is an error in XML document (2, 2)

While working with some XML documents, I ran into this cryptic error: “There is an error in XML document (2, 2).” The problem turned out to be a surprising case sensitivity in the C# code. When I was trying to deserialize from XML to an object, the XML elements didn’t match the case of the class properties.

Here is my original XML file:

<?xml version="1.0" encoding="utf-8" ?>
<test>
  <name>stephen</name>
</test>

Test class:

public class Test
{
  public string Name { get; set; }
}

And the code that I was using to deserialize the XML into the Test class object.

string xmlFile = String.Concat(HttpContext.Current.Request.PhysicalApplicationPath, "test.xml"); System.IO.StreamReader reader = System.IO.File.OpenText(xmlFile);
XmlSerializer xs = new XmlSerializer(typeof(ReportTemplate));
Test testData = (ReportTemplate)xs.Deserialize(reader);

The solution was quite simple. The case of the XML tags did not match the case of the class properties. By changing them to match, I resolved the error. Here is the working XML:

<?xml version="1.0" encoding="utf-8" ?>
<Test>
   <Name>stephen</Name>
</Test>

BTW – If the root element case matches, but one of the sub-elements does not, you will see the beloved error “Object reference not set to an instance of an object.

Tuesday, June 28, 2011

Microsoft’s SharePoint, Office 365 and ‘Cloud’ Terminology

With today’s launch of Office 365, I have cloud computing on the brain. It’s no exaggeration to say that “cloud” is the hottest buzz word in IT these days. According to IDC, the cloud market will hit $72.9 billion in 2015. However, there isn’t just one flavour of cloud. From cumulus to Office 365, clouds come in all sorts of varieties. So what does “cloud” actually mean? Here’s a run-down of the terminology currently being used by the SharePoint community and Microsoft in its SharePoint Online (SharePoint in the cloud) messaging.

logo-SharePoint-270_40[1]

SharePoint Online

The term “SharePoint Online” has been used to refer to any hosted versions of SharePoint—but the image above shows that Microsoft has really claimed the name. Office 365, BPOS and SharePoint hosted by a provider (e.g., Rackspace, SharePointHosting.com or Fpweb) all fall under the loose use of this term. I liked the general usage, but I guess I should stick with the fact that SharePoint Online is part of Office 365/BPOS and therefore refers to SharePoint hosted by Microsoft.

Office 365

Office 365 launched today! According to Microsoft, Office 365 is “where Office meets the cloud.” What that actually means is that it’s hosted versions of Exchange Server, SharePoint 2010 Server, and Lync Server. The previous version was called the Business Productivity Online Suite (BPOS). Users will have access to the web versions of Office products and some users will actually get a copy of Office Professional included.

Private Cloud

This is a mildly controversial term. According to Gartner, IT should be planning to move to private clouds. But if cloud computing is applications hosted online, then a private cloud is what exactly? According to a growing number of influences, a private cloud is not necessarily on the Internet at all—it’s any version of SharePoint that’s accessed over a network. A private cloud is usually SharePoint hosted in a private data center.

So what’s controversial about that? Well, cloud computing is meant to free organizations from the IT overhead of running their own systems. If a company is running SharePoint in a private data center then they’re not decreasing their overhead; they’re actually adding a complicated infrastructure.

Public Cloud

If the private cloud is a version of SharePoint that’s available to a restricted group and accessible over a private network, then a public cloud is a SharePoint system that’s accessible publicly across the Internet. Office 365 is an example of a public cloud since all you need is the right URL, username and password, and you’ll be able to access it from anywhere.

Hybrid Cloud

If you needed any proof that Microsoft is walking the walk when it comes to their “all in” cloud messaging. All you need to do is read the four-page Microsoft cloud ad in last month’s edition of Wired magazine. The main focus of that add is the hybrid cloud: part private cloud and part public cloud. Hybrid clouds are being promoted because they allow companies to get their feet wet in the cloud (pardon the mixed metaphor) without jumping all in.

I recently co-presented a SharePoint webinar with Bob Fahey, Senior Director at Avanade, on the subject of migrating to SharePoint online and hybrid clouds.

Business Productivity Online Suite (BPOS)

The Business Productivity Online Suite (BPOS) from Microsoft is a cloud computing subscription offering and the first version of what’s now called Office 365. BPOS includes hosted versions of LiveMeeting, Exchange, SharePoint (it was Microsoft Office SharePoint Server 2007 [MOSS]) and Office Communications Server. BPOS has two flavours: Standard (BPOS-S) and Dedicated (BPOS-D).

I’ve heard it through the grapevine that this was never meant to be a public name. It’s an awful acronym that has already been abandoned, so I wouldn’t be surprised if that little piece of gossip is true. Office 365 is a much better name.

BPOS-S

BPOS-S stands for “Business Productivity Online Suite – Standard Edition.” some people say “Shared Edition” but that’s incorrect.

From www.microsoft.com, “Microsoft Business Productivity Online Standard Suite is a set of messaging and collaboration tools, delivered as a subscription service, that gives your business rich capabilities without the need to deploy and maintain software and hardware on-premise. These online services are designed to help meet your needs for robust security, all-day every-day reliability, and user productivity.”

The difference between dedicated and standard editions is covered in the BPOS – What is it? blog post on TechNet. Basically, the standard edition is a multi-tenant environment with multiple customers sharing the same hardware and dedicated installs are reserved hardware for one account. In order to subscribe to the dedicated version, an organization needs to sign-up 5000 users.

BPOS-D

As mentioned above, the difference between dedicated and standard editions is covered in the BPOS – What is it? blog post on TechNet.

Shared Cloud

This is a general term for any multi-tenant cloud environment. As already mentioned, some people erroneously assumed that BPOS-S stood for BPOS “Shared” edition. BPOS and Office 365 both provide shared offerings. In fact, almost all BPOS and Office 365 customers use the shared cloud version of those offerings.

Standard Cloud

This refers to BPOS-S--Business Productivity Online Standard Suite--which is Microsoft’s shared cloud offering.

Microsoft Online Services

Microsoft Online Services (MOS) offers hosted applications such as Office 365. These services include Dynamics CRM Online, Windows Azure and SQL Azure.

 

Companies generally move to the cloud because they are looking to reduce overhead, so it can be all about saving money, but there are other reasons to move all or part of your applications to the cloud. Many BPOS customers moved to the cloud because they wanted to use Exchange Online. However, there will be plenty of cases where companies will move to Office 365 to use SharePoint online.

Furthermore, many companies will have a hybrid solution of SharePoint on-premises and SharePoint online. In closing, I’ll just mention that Metalogix Migration Manager for SharePoint is the only solution Microsoft has approved for migrating SharePoint content to Office 365 or BPOS dedicated.

Happy Birthday Office 365

Today, Microsoft is launching Office 365, which includes SharePoint 2010 online.

I wrote a SharePoint 2010 birthday post when SharePoint 2010 launched that included the image below of the Metalogix office cake.

Metalogix has announced Office 365 support in Migration Manager for SharePoint.

From the Metalogix website:

“Whether you are using SharePoint on-premises, or SharePoint online in the cloud, Migration Manager for SharePoint (formerly SharePoint Site Migration Manager) is the best-of-breed solution for your needs. You might be moving to Office 365, or upgrading from SharePoint 2003 or 2007 to SharePoint 2010, moving between SharePoint servers, managing a hybrid cloud environment, or re-organizing your SharePoint content--regardless of your use case, Migration Manager for SharePoint is an easy-to-use and convenient way of moving, synchronizing or managing your SharePoint data. With its familiar copy-and-paste-style user interface, you can quickly migrate and manage all SharePoint sites, libraries, lists, web parts and permissions between servers.”

Sunday, June 19, 2011

Azure Blob.FetchAttributes Throws “The specified blob does not exist.”

I was working on a Windows Azure application this weekend and I ran into a strange error. I was trying to access the metadata associated with blobs using (blob.FetchAttributes()) and received an error message. The problem was actually that the metadata wasn’t being associated properly with the blobs, so there was nothing to return. However, the error thrown was, “The specified blob does not exist.” Needless to say, I found this to be strange.

My solution was to check the metadata count before trying to fetch any metadata. This allowed my code to return blank results rather than throw a misleading error.

// Check for the case where attributes haven't been set
if (blob.Attributes.Metadata.Count > 0)
{
     blob.FetchAttributes();
}

Update: Upon further investigation, I found that this didn’t work even when the BLOB metadata was properly set. If you run into this, check that you’re blob container reference isn’t null.

Monday, May 30, 2011

Twitter for Business Part 2: Twitter Usage and Etiquette

Not long ago, I posted a defence of Twitter called Twitter for Business: Beyond what you had for lunch. That post focused on the value and benefits of the Twitter service—emphasising that Twitter is open, democratic and acts as an instant worldwide bulletin board.

In the first post, my goal was to distinguish the legitimate value of Twitter from the widespread misunderstanding that Twitter is just people ranting about their pets and what they last ate. I didn’t cover the nuts and bolts of how to actually use Twitter for business and how to distinguish your marketing efforts from simple automated tweets—the ‘sock puppets’ for hire.

The reason I didn’t cover the ins and outs of using Twitter in the first post is simple that Twitter is not new; it has been around for many years and it should be the case that most people on Twitter understand how to use it. However, that’s not necessarily true. I’ve seen plenty of examples recently in the Microsoft SharePoint community of tweets that demonstrate a lack of understanding of the basics of Twitter. So here’s a quick refresher on using tweets.

Tweeting in All Capitals

Let’s get a quick one out of the way first. Do not tweet with the Caps Lock key. Just like other media—such as e-mail, newsgroups, forums, and texting—the convention on Twitter is that writing in all caps is tantamount to shouting. Don’t do it unless your team just won the Stanley cup or your daughter  just got accepted to med school. In a business context, it’s easier—don’t do it.

(Ironic Note: The Heading 2 tag of this blog changes text to all caps, and the title of this blog template is always in caps. Let’s say that’s the exception that proves the rule.)

# Tags (read: HashTags)

Are hashtags important? Absolutely! (Or should I write, “ABSOLUTELY"!”?). Hashtags (the # symbol) are one of the best ways to get your tweets read and to attract new Twitter followers.

Hashtags started out as a workaround to the fact that there isn’t editable metadata associated with tweets. In other words, you can’t add your own taxonomy tags (like the categories on this blog) and use them to categorize or search. People would follow the @hashtags Twitter account and their tweets would be added to the data store that hashtags.org collects about tweets. Or in their own words, “Hashtags.org is the defacto standard for hashtag information. The # symbol, called a hashtag, is used to mark keyword or topic in a Tweet. Any Twitter user can categorize or follow topics with hashtags.”

This mechanism allows Twitter users to identify ‘trending’ topics or keep track of messages about a certain topic by searching for the hashtag. While it’s true that lots of people only read tweets coming through on the feed from the accounts they follow, it’s also true that many people set up searches on particular topics and read those feeds as well. In fact, if you’re a heavy Twitter user, these may be the only feeds you read.

But you’re saying to yourself, “I can create my own keyword search in my favourite Twitter client, so why do I need hashtags?” Yes, it’s true that you can create you own search using any words and look for tweets about a particular topic. However, let’s say you were interested in Microsoft’s cloud development framework: Windows Azure. If you were to create a Twitter search for “azure,” you would get all sorts of noise that didn’t interest you. For example, messages such as, “I’m putting up new drapes. I think I’ll go with azure.” On the other hand, if you use the hashtag #azure, then you know that you’ll only be reading tweets about Windows Azure. Hashtags are also a convenient shorthand for phrases that would otherwise be too long for convenient Twitter usage. For example, the 2011  Microsoft SharePoint Conference is nicely abbreviated to: SPC11, so I can search for that tag to follow tweets about the event. In many cases, these tags are advertised on websites, but often they are organically spawned by the community.

If you are using Twitter for business then you want to ensure that your tweets are reaching the right audience. In the previous example, any tweets that you put out without the # symbol before the word “azure” would not reach the enthusiastic Azure development community. In other words, you may as well not be tweeting. Note that you only need to use these symbols once for each tweet, so “#SharePoint is cool. I like #SharePoint” is not necessary. Just use the hashtag once. Otherwise you’re wasting characters and demonstrating a lack of understanding of the Twitter medium.

At the beginning of this post, I mentioned that one dimension of Twitter that I’ll be touching on is how to gain more followers. Using hashtags is an excellent example of how to use Twitter tools to increase your followers. If your fascinating tweets consistently show up under a particular topic, the people interested in that topic will follow you.

In the current generation of Twitter clients, hashtags have taken on even more importance because the creative client developers have added some features that make them even more user-friendly. Personally, I use the TweetDeck client and adding search columns for hashtags is ridiculously easy, you literally click on a hashtag and you’re done; TweetDeck will create the search column for you.

Here’s some more information about hashtags from Wikipedia:

“Short messages on services such as Twitter, FriendFeed or identi.ca may be tagged by including one or more hashtags: words or phrases prefixed with a hash symbol (#) … Then, a person can search for … this tagged word will appear in the search engine results. These hashtags also show up in a number of trending topics websites, including Twitter's own front page. … The feature has been added to other, non-short-message-oriented services, such as the user comment systems on YouTube and Gawker Media … Real-time search aggregators such as Google Real-Time Search also support hashtags in syndicated posts, meaning that hashtags inserted into Twitter posts can be hyperlinked to incoming posts falling under that same hashtag.”

@ Tags(read: account tags)

Just like hash tags, the @ tag is a fundamental tool in the Twitter toolbox. Instead of writing, “I like Windows Azure,” you should tweet, “I like @WindowsAzure.” The difference may seem minimal, but it is key. The former is just text, the latter is the Twitter account name. Most Twitter users will monitor their ‘mentions.’ By using the account name instead of just a string of text, you’re alerting the user that someone has tweeted about them specifically—not just the subject in general. These mentions are often reciprocated by ’retweets’ (the next topic) and follows. Of course, this example applies when there is actually an official account. It would be harder to do this if your tweet was about wood or milk—although I’ve seen TV ads for both, so maybe not.

If you want people to notice you on Twitter, one of the best ways is to mention their personal account or their organization’s account in your tweets—it’s all about building a buzz and people won’t build you up if you don’t reciprocate. Furthermore, if you’re tweeting about your own organization, you should use your account name—with the @ symbol—so that any retweets show up in your twitter mentions. Mentions are another example of a feature that Twitter clients leverage. By tracking your mentions, it makes it simpler to keep track of who is tweeting about you.

“RT” (read: Retweet Tags)

A ‘retweet’ is the real power of Twitter; it’s like the old shampoo commercial, when someone retweets, you’ll tell two friends and they’ll tell two friends, etc. More retweets means more people will see your message (generally speaking) and you’ll have a wider audience. When a user retweets a tweet, they use the convention “RT “ and then the original users account name “@account:” to give credit to the person who first tweeted the message. Lack of the “RT “ convention in the same message sent out by multiple accounts is often an effective way to detect sock puppet accounts.

When you retweet, the user’s account will be included in the tweet, so the longer your account name, the shorter your tweets can be—if you want to make them easy to reweet, and you should. I like to call this the ‘Twitter tax’ since it take away characters that you’d be able to use. For example, my Twitter account is @cawood, so my Twitter tax is 10 characters because I also need to add the three characters used by “RT “. Every time I write a tweet that I want others to tweet, I should limit it to 140 – 7 – 3 = 130 characters. I don’t have to do this, but it makes my tweet easier to retweet and therefore reduces friction.

It is considered bad form to retweet someone else’s tweet without giving them credit (i.e., leaving off their account name). In the case where their “twitter tax” is too high to allow you to do a simple retweet, you can edit the message to allow it to work. I often have to edit tweets to retweet them properly. When I do this, I make sure that the spirit of the original tweet is maintained. Misquoting a tweet is a really bad idea.

Messages to People

If you are following an account, and that account is also following you, you will be able to send direct messages back and forth. These “DMs” allow you to have a private conversation over Twitter. For example, if you wanted to share your contact information with one account, but not send it out publicly. DMs are also a good way to send constructive feedback without publicly criticizing someone.

If you don’t want your twitter account to seem like a mindless sock puppet for hire, then make sure you actually engage in some social activity on the social network. Account’s that just send out retweets don’t have a personal feel and aren’t as likely to attract followers—which is conveniently the next topic.

How To Attract Followers

The simplest means to attract twitter followers is to have a focused account about a subject that interests you and then send out a reasonable number of tweets. If you send 20 tweets in a row, many users will find you too chatty and stop following. The appropriate number will vary, but understand that you can send out too many or too few tweets.

- Search for popular accounts that are also focused on your field of interest and follow them. Even if you don’t plan to read your Twitter feed regularly, you should follow these accounts because it will raise your profile. Some accounts will reciprocate your follow as a gesture of good will.

- Set up a search for hashtags relevant to your subject matter. Twitter clients such as TweetDeck are great for this.

- Retweet interesting tweets to get noticed by more accounts.

- Send messages to users answering questions or commenting on their tweets. In other words, engage.

There are services out that that advertise the ability to increase your Twitter followership. I haven’t looked into that option, because it seems like you’d just get a bunch of phony accounts building up your now meaningless follower number. However, it’s possible that I’m wrong about this, so I’ll just say that you can check out that option if it interests you.

Follow me on Twitter: @cawood

To read more about Twitter, you can read the Twitter usage Wikipedia article.

Saturday, May 21, 2011

Microsoft Online Services Client Sign-in Issue

I ran into an interesting error last week. I’ve rarely had issues with computers clocks, but for some inexplicable reason, two of my machines were on the wrong time last week. One of the consequences of this fact was that the Microsoft Online Service (MOS) sign-in tool for BPOS (now called Office 365) failed to work. This is one of my public service announcement posts—hopefully, this will help the next person quickly resolve the problem.

image

The error didn’t give me any indication that it was an issue with the clock: “The client was unable to establish a secure connection with the server. Please try signing in again.

The solution was simply to set the computer clock correctly and change the server that I was using for online synchronization.

The full error is below. it was also reproducible on the MOS customer portal web page.

image

This issue is discussed on the Microsoft Online: Services Sign In for Windows forums here: http://social.technet.microsoft.com/Forums/en/onlineservicessigninapplication/thread/3a5bd983-935b-4610-8cb4-6e11972cf3ee

Full Error:

The client was unable to establish a secure connection with the server. Please try signing in again. If the problem persists, please contact your system administrator.

The page requires a valid SSL client certificate

Your client certificate has expired or is not yet valid. A Secure Sockets Layer (SSL) client certificate is used for identifying you as a valid user of the resource.


Please try the following:

  • Contact the site administrator to establish client certificate permissions.
  • If you already have a valid client certificate, use your Web browser's security features to ensure that your client certificate is installed properly. (Some Web browsers refer to client certificates as browser or personal certificates.)
  • Change your client certificate and click the Refresh button, if appropriate.

HTTP Error 403.17 - Forbidden: Client certificate has expired or is not yet valid.
Internet Information Services (IIS)


Technical Information (for support personnel)

  • Go to Microsoft Product Support Services and perform a title search for the words HTTP and 403.
  • Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled About Certificates, and About Custom Error Messages.

Tuesday, May 10, 2011

Geeklit Blog Passes 400,000 Page Views

As you can see by the “old school” counter below, geeklit recently passed the 400,000 page views mark. (Yes, that’s views, not hits, so 400,000 people saw one page, or if it was one person—well that person really likes my blog.) This has me feeling a little nostalgic about the path that this blog has taken.

In the early days, it was very much about Halo. (And trying to be an advocate for legitimate Halo modders. Modding isn’t about cheating damn it!) The first post for this blog was written Monday, January 31, 2005 and the majority of the posts at that time were about my Halo books: Black Art of Halo Mods (Sams), Halo 2 Hacks (O'Reilly) and Halo 2 Battle Guide (Thompson). There was also some content about Microsoft Content Management Server (MCMS) and the book I co-authored about that software: MCMS: A Complete Guide (AW). I don’t feel bad ‘plugging’ these titles because they’re so old now that I don’t think anyone is interested in paying for them anymore.

- this image was in the first post with the caption “I don't recall whether this was staged or not”

Of course, after leaving Microsoft, I eventually made it back into the fold (although writing books about Halo and XNA—how far did I really roam?) when I joined metalogix and started blogging and writing books about content management again—of course, Microsoft had consolidated on SharePoint by that point.

I’ve had people tell me over the years that my blog is eclectic, and I’ve always agreed with that assessment. Whether it was chronicling a drive across Canada, or writing about some development topic such as adding Growl/Prowl push notifications to SharePoint applications, I have jumped around a bit.

There is a common thread though, whether it’s Halo, MCMS, SharePoint, coding for XNA, or even highlighting the no left turn to Tim Hortons sign in Fredericton, it’s all pretty geeky.

Sunday, May 08, 2011

Azure Debugging Database Error

To set up the ability to debug Windows Azure projects in Visual Studio, you need to first run the “dsinit” command line utility (C:\Program Files\Windows Azure SDK\v1.2\bin\devstore>dsinit) which comes with the Windows Azure tools for Visual Studio. I recently ran into an issue where dsinit would not create the SQL Server Express database that would be used for debugging Azure projects.

dsinit

The error is “Failed to create database ‘DevelopmentStorageDb20090919’: User does not have permission to perform this action. One or more initialization actions failed. The development storage cannot be used without resolving these errors.”

The issue was that the user logged into Windows did not have the “dbowner” right in SQL Express. It was also necessary to add the “sysadmin” right so that the user could set permissions once the database was created.

dsinit2

After adding sufficient rights in SQL Server Management Studio to the SQL Express database, dsinit successfully completed.

dsinit3

Sunday, May 01, 2011

Windows Azure Debugging Issue with SQL Server

I was working on a Windows Azure application today and when I tried to debug, I found that I was being stopped by the error below. I happen to have the full version of SQL Server on the machine in question, so my haughty first response was that I wasn’t going to install something else, but after trying the recommended approach, the simplest solution was to just install SQL Server Express.

Windows Azure Tools: Failed to initialize Development Storage service. Unable to start Development Storage. Failed to start Development Storage: the SQL Server instance ‘machinename\SQLExpress’ could not be found. Please configure the SQL Server instance for Development Storage using the ‘DSInit’ utility in the Windows Azure SDK.

I found this blog post that gives a lot of helpful info about the issue: http://blogs.msdn.com/b/sql_protocols/archive/2007/05/13/sql-network-interfaces-error-26-error-locating-server-instance-specified.aspx. I first checked the firewall and that wasn’t the issue. Then I used the utility referenced on this page to check SQL connectivity.


image

Sure enough, the SQL Browser service was disabled (it showed NOT LISTENING). I started the service and was able to get past the original error message. I then ran DSInit to specify my SQL instance.


image

However, after running DSInit and specifying my SQL instance, I got the error below which advised me to install SQL Server Express. Fine. I did and it worked.

Server Error in '/' Application.



A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

SQLExpress database file auto-creation error:

The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory. The provider attempted to automatically create the application services database because the provider determined that the database does not exist. The following configuration requirements are necessary to successfully check for existence of the application services database and automatically create the application services database:

3. Sql Server Express must be installed on the machine.

image

Update: I haven't tried it, but I hear I'm supposed to use "/sqlserverinstance." to use the full version of SQL Server.

Friday, April 01, 2011

Panacea: The Language for Everything and Everyone

In my vast spare time, I’ve been working on my own language project. I’m calling it the Panacea Coding Language. The goal is to provide an easy framework for everything and everyone.

Here’s a sample code block:

START
DO something
STOP

But it’s even better. You don't even need to include the start command:

DO some SharePoint stuff
IF something bad happens
THEN fix it before my manager finds out
STOP when done

Unlike other programming languages, Panacea also responds to begging:

PLEASE write this code for me so that I can go home

Panacea V2 will also allow colloquial coding:

DO some stuff LIKE FAST
SPARE ME the hassle of errors
JUST LIKE get it done
EOF SC

Installing SharePoint Custom Templates

Just by virtue of the fact that it’s about MOSS 2007, this is a seriously retro post, but I had to do this just last week, so I figured I’d share it. Also, there’s always been talk about the idea of the Fab 40 templates being released for SharePoint 2010.

Of course, in 2010, there are other ways to deploy templates. For example, you can go to the Solutions Gallery and click Upload Solution. But for those of you lucky enough to have only done it that way, here’s a look back in time.

The Windows SharePoint Services 3.0 Application Templates (the “Fab 40) are free templates available from Microsoft. To install one of the template, you must first install the “Template Core.” So, for example, to install the Bug Database template, you download these two:

Windows SharePoint Services 3.0 Application Template: Application Template Core http://www.microsoft.com/downloads/en/details.aspx?FamilyID=C1039E13-94DA-4D7D-8CAE-3B96FA5A4045

Windows SharePoint Services 3.0 Application Template: Bug Database
http://www.microsoft.com/downloads/en/details.aspx?FamilyId=C72D23AF-F556-47AA-A6F2-0027246A9928&displaylang=en

First install Windows SharePoint Services 3.0 Application Template: Application Template Core. To do this, use the stsadm command line addsolution. Then follow the same steps for the Bug Database solution.

stsadm -o addsolution -filename <file_path>\ApplicationTemplateCore.wsp

clip_image002

After the solution is added, you need to use the deploysolution command to deploy it. The –immediate flag is used to deploy it right away.

stsadm -o deploysolution -name ApplicationTemplateCore.wsp -allowgacdeployment -immediate

stsadm -o copyappbincontent

clip_image004

To check the deployment status, browse to the SharePoint Central Administration site. Click the Operations tab, and then click Solution management under global configuration.

image

- SharePoint Central Administration showing the custom template not deployed

clip_image010

After all the solutions are marked Globally Deployed, run iisreset from the command line and you’re done!

image

- SharePoint Central Administration showing the deployed custom template

Tuesday, March 29, 2011

Moving to Marketing

I’m changing job titles at Metalogix and that change was made official today. My new position is Director of Product Marketing and Chief SharePoint Evangelist.


The best message I’ve received so far in response to the news, “Welcome to the dark side.. ;).”


image

Supplement to SharePoint Taxonomy Series

Ken Efta, writing for http://blog.allyis.com, has kindly mentioned my SharePoint Enterprise Metadata Management (SharePoint Taxonomy, Managed Metadata Service [MMS]) blog series in his post on the topic.

Also, Ken has touched on some aspects that I didn’t cover, so I’d like to return the favour. In his post, Managed Metadata Services and Term Sets in SharePoint 2010, Ken covers topics such as Localized Term Sets, Term Synonyms, and Using Terms Sets as part of Content Types (via the Managed Metadata Column).

Here are the links to my series:

SharePoint Taxonomy Part One – Introduction to SharePoint Managed Metadata
SharePoint Taxonomy Part Two – End-User Experience
SharePoint Taxonomy Part Three – Administrator Experience
(including Using SharePoint Term Stores and SharePoint Taxonomy Hierarchy)
SharePoint Taxonomy Part Four – Developer Experience
(including SharePoint 2010 Visual Web Parts and SharePoint 2010 Taxonomy Reference Issues)

Thursday, March 24, 2011

Featured in MVP Summit Video on TechNet

During the Microsoft MVP Summit Earlier this month, I participated in a video question session where Microsoft MVPs talked about how they currently use online resources.

If you blink, you’ll miss me, but you can see the video on TechNet.com. I’ll have to work on my showmanship—although, in my defense, I was sick as a dog during the conference and trying to keep that fact to myself.

image

 

Question 2 in the same series.

Thursday, March 17, 2011

HTDE SharePoint Book Supplement–History of MCMS and SharePoint

Last year, my SharePoint 2010 end-user book came out: How to Do Everything: Microsoft SharePoint 2010. To keep the momentum going, I’ve decided to write some short supplements. My goal is to add in things that I either didn’t have the time or the pages to do it in the printed book. After all, the express goal of the book was to not overwhelm end-users with too much information—as used to be common in the SharePoint world. The added topics might include background information, more examples, or maybe just colourful anecdotes about working on the Microsoft Content Management Server (MCMS) and SharePoint teams at Microsoft. I’ll try and follow the chapter order, but if something compelling comes along that’s out of order, I won’t hold back the content just to keep the posts in sequence.

The first chapter of the book is an introduction to SharePoint and a history of the evolution of the platform (written by former Director of Marketing for SharePoint, Arpan Shah). It’s also one of my versions of answering the question, “what’s SharePoint?”—although you don’t hear that so much anymore. In this first supplement, I’ve decided to add a history of MCMS and talk about how publishing features from MCMS were added to SharePoint.

First off, if you look to the right-hand side of this page, you’ll see a logo that looks like the one below. (My apologies to those of you in the future who are reading this after I’ve changed my blog template or migrated to some sort of solar-powered blogging platform.) This logo was created for NCompass Resolution 3.0 and also used for v. 3.1—the last major release before Resolution became MCMS.

 

Prior to the Microsoft acquisition, NCompass Labs was a small company based in Vancouver, Canada. We worked in an old Hudson’s Bay Company  fur warehouse in Gastown; it was the classic '”bricks and sticks” style that was popular during the .com boom. The office was on Water St. (so near the famous steam-powered clock that we could hear it form our desks) and boasted a view of the mountains and Burrard Inlet. I spent most of my time there facing Water St., but for a short time, I did enjoy that mountain view.

After Microsoft acquired NCompass Labs, Resolution 3.1 became MCMS 2001. The .NET initiative was on every dev manager’s mind at Microsoft and MCMS 2002 was released to add support for .NET. One of my tasks with the MCMS team was to port the Woodgrove Bank sample site to Woodgrove.NET. As you may have guessed, SharePoint 2003 was released the next year.

I’ve heard some revisionist history accounts of what happened during this period. So here’s my take. Since SharePoint and MCMS were both used to create websites, people often chose to do this using the erroneous distinction that SharePoint was for internal sites and MCMS was for public facing sites. In truth, SharePoint was focused on team collaboration and the fact that it wasn’t being used for public facing sites had a lot to do with the licensing model. MCMS could be used for any website but it didn’t ship with templates out of the box the way SharePoint did. However, MCMS was built from day one with public facing sites in mind and later versions had been tuned extensively for optimal performance on heavily trafficked sites.

- In honour of it’s Canadian roots, the MCMS box and screens featured images of the Vancouver library.

The two products weren’t even in the same business unit. SharePoint was in the Office Server Group and MCMS was in the now defunct E-Business servers group that was working on an e-business suite codenamed “Jupiter.” Jupiter was meant to include BizTalk, Host Integration Server, Commerce Server and MCMS. However, as time went on Jupiter remained a far-out idea and the confusion around which Microsoft product customers should use for building their site still remained. Microsoft knew that a change was in order. The resolution (pardon the pun) came when MCMS was retired and the MCMS team was folded in the Office Server Group. We were quickly set out to add more publishing features to SharePoint. Before I left Microsoft, I was working on SharePoint 2007 (MOSS) navigation, but I moved back to Canada before the release.

SharePoint today is a popular and rich platform for building websites. If someone asks, “what’s SharePoint?” feel free to use that line.