Archive for the ‘SharePoint’ Category

WSS 1, Perry 0

Friday, February 22nd, 2008

I like writing posts that end with "Here's my solution". This is not one of them. I'm just documenting this fight so that I can come back to it if I ever find a solution.

I have completed the HTML/CSS/Javascript on the Ken Burns effect. It looks pretty good. I even eliminated the flicker that I talked about previously. Now I'm trying to add this new view to my office SharePoint server.

I opened up SharePoint Designer to create my new view. I selected "File: New: Page: List View Pages: Document Library View Page Wizard". I selected the picture library to which I wanted to add the new view, and named it "kenburns.aspx".

Once my new view came up, I opened the drop-down from the top-left corner of the list view and changed the columns. I removed all of the columns and added Preview. These were the same steps I went through on my local VM. The idea being that I would add the Javascript to turn the table full of images into a slide show. Sure, a web part would be better, but I haven't taken the time to build it yet.

It starts to go wrong
Here is where the experience deviated from development. When I hit OK on this dialog, it went back to the designer and spun for a while. After a long timeout, it came back with the message "You do not have permission to do this operation." I checked my permissions and confirmed that, yes, I have full control of the entire site.

Going back and forth, I discovered that any change I make to the page causes this error. I can create pages, I just can't edit them afterward.

I started up Wireshark and inspected the traffic. I noticed that there were several duplicate ACKs followed by retries. So packets were getting dropped on the way back to the server. This is probably related to the VPN. I wanted to get this change up tonight, so I didn't have time to fight with the VPN.

So I got clever
I made small incremental changes to the page, but instead of saving it, I copied the contents into a local file, deleted the one I was working on, and then uploaded the copy. After each incremental change and upload, I verified with a browser that the change worked. Tedious, yes, but it worked around the problem.

At least it worked for a while. After a few iterations of this, I could no longer upload the file. Within SharePoint designer, I received the same "You do not have permission to do this operation" message as before. Based on the range of problems that I saw when Googling this phrase, I figured this is SharePoint Designer's way of throwing up it's hands. I even discovered that this error message is a hold over from FrontPage. It's been there a while.

I also tried uploading the file through Explorer. SharePoint does some WebDav magic that makes it possible to connect to a site using "My Network Places: Add Network Place." I navigated to the proper folder and dropped the local copy into it. After a long timeout, I was greeted with "Connection closed by remote server." This is more accurate based on what Wireshark was telling me, but no more helpful. I'm still back in VPN land.

Then I got desperate
I logged into the server via Remote Desktop, opened a command prompt, and executed "iisreset". No help. Then I restarted the box.

Let me pause right here and tell you that I knew at the time that this was a bad idea. I've felt that disconnected, sinking feeling many times before when the machine I'm working on is miles away, I have only a tenuous connection, and decide to let even that connection go. It's like being in a Spielberg movie when the background falls away while the main character is suspended mid-frame.

So I hit "Start: Shut down" (scary enough already) and "Restart". This being Windows Server 2003, I selected an excuse. The remote session was wrenched away from me. And then I waited. And waited.

(fall away and queue eerie violins)

The server still hasn't come back up. I've sent emails asking the next person to go to the office to restart the machine. I'll be in the office tomorrow afternoon, so you can bet I'm installing SharePoint Designer on the server!

AiS 40: Microsoft Office Developers Conference

Monday, February 18th, 2008

Listen now!

Derek, Ricky, and I attended the Office Developers Conference in San Jose, CA. There we competed in the national Infusion Sleepless SharePoint Developer's Competition. After the all-night coding competition, we enjoyed the ODC.

At the Bill Gates keynote, I had the opportunity to ask "What is the next killer app?" The answer was that it is not one app as it has been in the past, but the ability to quickly develop custom applications. I agree completely.

We presented our solution during the ODC, with Rock Band playing in the background. Even though we didn't have all the pieces working perfectly, our story really came together. We presented our solution with confidence, and the judges seemed genuinely impressed.

During the keynotes of the second day, they announced the winners. Apparently the judges were impressed, because team Strongbad took the grand prize! We had the rest of the ODC to celebrate our victory, learn even more about SharePoint, and play some Rock Band.

If I ever have the opportunity to compete in this kind of event again, I'll jump at it. The skills I learned and the peopleĀ I met will stay with me for a long time. Winning is just icing.

Update from the ODC

Tuesday, February 12th, 2008

I am currently at the Microsoft Office Developer's Conference in San Jose. My team won admission to the conference and the chance to compete in the national Infusion Sleepless SharePoint competition.

We coded all night Saturday into Sunday, then took a bus to San Jose for the ODC. We presented our solution last night in front of a crowd of attendees. We learn the results of the judging this morning at the keynote. I feel our team did very well.

I am learning tons of useful information about the SharePoint product and the ecosystem. The main thing that I was looking for was how to make SharePoint development a repeatable process. I found a breakout session by Andrew Connell that demonstrated exactly that.

Microsoft hasn’t had time to get their tools and documentation in order around SharePoint development, because the explosion of the platform caught them by surprise. But Andrew showed us how Microsoft does SharePoint development internally without strong tool support. Now I believe I can replicate the process.

The highlight of the trip was the Bill Gates keynote. I had the opportunity to ask him "What is the next killer app?" You'll hear his response - and the results of the contest - in the upcoming podcast.

AiS 39: Infusion Sleepless Roadshow

Friday, February 1st, 2008

Listen Now

The Infusion Sleepless Roadshow was an intense weekend of SharePoint training and competition. It was a thrill to participate.

I'd like to thank Infusion for presenting the event, and Microsoft for being a fantastic host. In particular, from Infusion:

Sheldon Fernandez
Nadeem Mitha
Devon Jones
Rory Richardson

And from Microsoft:

Zain Naboulsi
Chris Koenig

And special thanks to my teammates:

Derek Sanderson
Ricky Ma

Doing things badly with SharePoint

Monday, January 28th, 2008

I'm currently recovering from the Infusion Sleepless Roadshow, where we collectively hacked SharePoint beyond recognition. I've recorded some interesting conversations, and I'll be bringing those to you very shortly. But in the mean time, let me tell you what I've learned about SharePoint.

You've probably used SharePoint as a document management system. It's a fantastic repository for Word documents. It handles organization, security, and versioning out-of-the-box. But for most organizations (including mine), that is all that SharePoint is used for: a shared folder with benefits.

What I learned this weekend is that Microsoft's vision for SharePoint is so much larger. It has a workflow engine that can track a work item through a long-running business process. It has Office integration beyond the publishing capabilities we've all used, including custom task panes and ribbons. And it has all the customizability that you need to create fantastic looking public-facing sites.

The problem is that not many people know how to do these things with SharePoint. Or, rather, that's the opportunity. This event demonstrates that it is possible to create a brand new web application overnight ... literally. And the people who can do that are in high demand.

Think differently
Before the competition, we had 12 hours of intense training. During this training, one thing became quite clear. SharePoint development is not like your typical application development. You have to approach the problem from a completely different angle.

In typical application development, you'll set up a code-build-deploy cycle from the beginning. Developers will go through several small iterations of this cycle every day. A slightly longer version of the cycle pushes weekly builds to QA. And an even longer cycle promotes releases to production.

In SharePoint, many of the development artifacts are in the site itself. You add custom lists to define new data types. You build workflows directly within the site. You create web part pages in place. And finally, you package all of this up as a template.

So just like a spreadsheet where cells contain either data or functions, code artifacts are intermingled with data. It is common practice to put pages into lists, along side documents and items. Furthermore, there is no apparent difference between the list and the type of data it contains. You add columns to the list in order to define its "type". Finally, you define workflows within a site so that they have access to those columns. It is difficult to separate code from data in order to deploy.

In search of the repeatable process
I like the repeatable process of the code-build-deploy cycle. During the training, there were glimpses of this cycle when they showed Visual Studio projects that produced WSP files. There is an event that you can handle within your code to provision a site upon deployment. If used properly, I'm sure that a repeatable process could be achieved.

During the competition, however, I found that this is not easy. I wasted three hours of our precious time fighting with Visual Studio, IIS, and SharePoint to get this process to work. I finally abandoned this effort in order to help my team.

So if you remember what SharePoint is good at, you can do quite well. Don't look to SharePoint as a typical development platform. It is a place where your application can grow up gradually over time. It can get your site up and running with a very small investment, and then expand it to add more features. Maybe that's not the "right" way to develop software, but it satisfies a business need. As G. K. Chesterton famously wrote: "Anything worth doing is worth doing badly."