October 2005 - Posts
Wouldn't it be great if you could launch a web server on any folder just by right-clicking? Robert McLaws built a utility that does just that. This will be one of those "how'd I live without it" tools for ASP.NET v2 (Whidbey) development and testing. Thanks Robert!
[The description and screenshot]
[An update and its description]
All sessions presented at PDC 2005:
SharePoint 2006 presented at PDC 2005:
(the links retrieve the Powerpoint .ppt files from the above site)
COML01 Case Study: Revolutionizing Microsoft Axapta—Harnessing Web Services, Workflow and SharePoint
OFF307 "Access 12": Developing Collaboration Solutions with "Access 12" and Windows SharePoint Services "v3"
OFF308 Windows SharePoint Services 'v3': Creating and Defining Custom Templates, Sites, Features, and Solutions
OFF310 Windows SharePoint Services: Developing Collaboration and Tracking Applications
OFF311 ''Project Server 12'': Developing Project Management Solutions
OFF313 Web Content Management Application Development and Engine Extensibility
OFF314 Developing Enterprise Document Solutions Using Office Client and Server Technologies
OFF318 Developing Document Archiving, Records Management, and Policy Enforcement Extensions to the Microsoft Office System
OFF319 ''InfoPath 12'': Developing Forms for the Smart Client and the Browser
OFF321 Surfacing Your Application's Line-of-Business Data and Actions within Enterprise Portals
OFF322 Building a Solution Using a Spreadsheet in Server-Based Scenarios
OFF405 Windows SharePoint Services: Using ASP.NET 2.0 Technology to Extend Pages, Sites, and Server Farms
OFF409 Windows SharePoint Services: Advancements in Document, Content, and Data Storage
OFF415 Windows SharePoint Services: Developing Custom Workflows
Thanks again to Graham for asking us to present, the audience for showing up, and to Ali for co-presenting with me at the Metro Toronto .Net User Group last night.
It was a lot of fun to put together, as it's probably the first time that the instances of Web Part technology have been studied together as a real evolution. Now that the background is public knowledge (via the upcoming Whidbey RTM and SharePoint 2006 components announced at PDC), I was able to draw on presentations from both the ASP.NET PMs who baked the Web Part Framework into the web dev framework, and the SharePoint PMs who in turn made that work dance in SharePoint v3.
[Download the slide deck]
I'm back at the Metro Toronto .NET User Group tomorrow night where I'll be co-presenting with Ali Kheradvar.
Writing web parts in SharePoint v2, ASP.NET v2 (aka Whidbey), and SharePoint v3.
When: 6:30-8:30pm, October 19, 2005
Where: 200 Bloor Street East Toronto (Manulife Financial) - International A
More information and registration: http://www.metrotorontoug.com/User+Group+Events/208.aspx
What are web parts? There's a great explanation by Mike Fitzmaurice, SharePoint Product Manager and all-around good guy. Mike's blog is here: http://blogs.msdn.com/mikefitz/
Why should you come down? If you're an ASP.NET developer, you will learn how to take advantage of the Web Part Framework coming in Whidbey. By attending this presentation you will also understand where Whidbey Web Parts came from, and how to re-use your new Web Part skills to develop SharePoint web parts, both now and when SharePoint 2006 is released next year.
The other day I read this: "Now, they make a big deal out of the "interactive menus," but I was working under the impression that all menus were interactive, like when you go into a restaurant and point to where it says "steak," it shows up a little later and then you eat it. Now that's interactive." [Red Green, Ardmoreite.com article, may require free registration]
That led to my recent thoughts on Clippy. There were two problems with Clippy: the experience provided an expectation of interactivity but faked the delivery; and the ensuing lack of use (and therefore feedback) ensured Clippy would never improve.
It doesn't matter whether we're discussing Clippy or (the vast majority of) automated phone switchboards. People rightfully don't like either. Any time you put a pseudo-solution that promises interactivity in place of a real solution that delivers it, there will not only be disappointment, but disappointment compounded by frustration.
Clippy was ot good at understanding my context, and it's frustrating not to be understood. I couldn't talk to Clippy. And once frustrated, I didn't have any tools or weapons to destroy Clippy. Unchecking a box on a menu does not deliver the satisfation promised by interactivity. There were other ways the experience was unsatisfying, perhaps we'll read of a few in feedback.
The second problem was that when you release something that no one uses, it can never improve. The golden rule of the ASP.NET team is (paraphrased) "in time, people won't remember whether you released on time, but they will always remember if you release a bad product." If a bad product fails to deliver on a core promise like interactivity, you can cripple the potential for success completely. Delivery must meet the expectations you set.
If delivery meets expectations (and also meets a need, but that's another topic), people will use the product. When people use a product, a feedback loop becomes possible, and the product will improve. If that doesn't happen, or you prevent it from happening by failing to meet expectations, then you've poisoned the brand and need to re-build from scratch. Therefore Clippy and MS Bob should never be reincarnated.
If I could have easily configured my own commands for Clippy, it wouldn't have been a closed, frustrating experience. It would have enabled me to implement use cases not anticipated by the team that created Clippy. And that's a shame, it's an obscure fact that that there was a simple API for Clippy and its brethern, but no one really touched it, because the out-of-box experience poisoned the acceptance of anything with origins in that technology. The lesson? Understand the expectations you're setting. If you're promising interactive, make sure you can invoke a service that delivers steak.
If saying "F*** off Clippy" actually closed Clippy, would you have kept Clippy enabled?
Respond in feedback...
Tonight's TSPUG meeting brings us the long-awaited SharePoint Backup, Restore, and Disaster Recovery presentation by Radu Vaduva. As usual we'll spend some time before the presentation talking about what's new and answering questions.
And what's new? Lots. The Windows SharePoint Services (WSS) Service Pack 2 for starters. This is a roll-up of WSS SP1 and subsequent fixes (i.e. it's the only update you need to add to a fresh installation). The improvements are significant - WSS now runs under ASP.NET v2 (note: not SPS yet!) and supports SQL Server 2005. For those using the language template packs, a separate download is available to update the templates. What else? You can now use SSL on more than one virtual server with WSS now, and Kerberos support is now an option. You can read all about the changes in the overview.
What else? How about two new Recycle Bins that blow away previous solutions. Check out this great Recycle Bin for SharePoint by Andreh, Naveen, and Joel (of Microsoft IT), which intercepts the request to delete with an ISAPI filter and sends the file to a network share where your help desk can easily restore it. [Read Joel's original Recycle Bin announcement] There's also a new Recycle Bin by Todd Bleeker at MindSharp, which allows users to restore their own deleted files and throws in a bonus of allowing more than one document template in a DocLib. Todd's post contains plenty of screenshots, this is cool stuff.
MS IT also posted a Cross-forest People Picker for setting site membership, which pulls eligible users directly from the SPS Profile datastore. Say goodbye to the Outlook pop-up!
And last but not least, another answer to a chronic question: check out this simple solution for synchronizing offline files with SharePoint, a nice concise answer for those who live by laptop.
If you've knocked your head against the wall to come up with ways to deploy multiple web.config files for Dev, Testing, Staging, and Production servers, the answer is on the way. It takes the the form of an add-in for Visual Studio 2005 -- a Build Project Manager.
Load your solution in VS, right-click the solution title in the tree, add a new Build Project, and from there you have a GUI into a wealth of new options for the build. The last tab is my favourite, it allows you to specify a src file for the build, the contents of which will be copied into your web.config. So now you can have src files for each deployment environment, each containing connection strings and other settings specific to that environment. While it's still a bit of XML coding to use additional MSBuild features like excluding files and folders specific to a deployment, all the basic MSBuild switches are baked into the Build Manager GUI.
The plan is for this tool to be released in November 7th with Visual Studio 2005. It will be a separate download, so stop back for a link. Why not baked into VS2005? Well, this is a recent development, but the team wants it to be available as soon as possible. Since the VS2005 itself hit Visual Freeze some time ago, it wouldn't be right to disturb the bits. I don't mind how I get it, I just can't wait to start using it!
(and no, this ain't spang baby)
No, not that Redmond. I'm in beautiful Redmond, Oregon with the scent of pine in the air, mountains on the horizon, and some great fishing just a short ride away. But yeah, I was planning to be in Redmond, WA. I suppose this is divine justice for making my latest catch-phrase, "unless something goes horribly wrong."
So the people in my office are pretty great, but someone waited until last-minute to book the flight to the most important event of the year -- the ASPInsiders DevLab at Microsoft HQ. I volunteered to fly out of Buffalo (hey I like the two-hour drive), and that's where the adventure began. Note to self: always read the itinerary twice if you don't book it yourself.
I left three hours before the flight, and was promptly stuck in traffic -- still inside Toronto -- for an hour. They picked a great day to close the second largest highway leading out of the city. Luckily the car still has a time-lapse gear, and I was able to speed through customs, into long-term parking, and to the gate with five minutes to spare.
Buffalo to Chicago. We circle for an hour due to thunderstorms. We land. All flights are delayed, the domino effect will help me make the connection. I stand in line for an hour with the other passengers who haven't been assigned seats to Portland, while the gate packs a plane heading to Seattle. Ah, the irony.
Two hours late we board for Portland. We sit on the runway for another hour to add fuel and wait for a clear runway. The flight is otherwise fine. I have five chapters to edit for tomorrow, and Batman Begins is on the small screen.
We land in Portland. The airport is deserted. The pilot tells me I'll be able to find a rep at the baggage claim. Sure enough, I'll have to take a morning flight and stay at La Quinta tonight. There's a free shuttle. Rather than retrieve and then have to check my bags in the morning I take the free overnight kit and hop on a shuttle. My return flight on Wednesday is upgraded to first class for the trouble. I set wake-up call for a four-hour sleep.
The flight is brief -- just a half hour! I note that you can't see the coastline from this side of the plane, but the mountains and rivers look fantastic. We land. I retrieve my bag from the conveyor belt. I walk outside and step into a taxi. I ask for Microsoft Campus, Building 20. The kind lady cabbie turns and says, "I'm not sure how to tell you this."
I'm in the wrong state. Over MSN Messenger I've been getting a lot of "wow, I didn't even know there was a Redmond, Oregon." So I get on the phone back to the office, and twenty minutes later new flights are booked to Seattle, and then back from Seattle to Buffalo. Will the airline still feel bad about the missed connection from Portland and upgrade that return to first class? I'm not holding my breath. Plus the air's just too damned good here in Redmond.
There's the announcement to head through security. With any luck, in a half hour I'll be off to Seattle, and as we glide in I'll see the coastline where it ought to be. From the airport I will take the usual green and white taxi up to Redmond, Washington. If not, well, at some point you have to say, "screw it, at least it's a story." Wish me luck.
Read more: Notes on the adventure courtesy of James Shaw.