<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Kirk Evans Blog</title><link>http://blogs.msdn.com/kaevans/default.aspx</link><description>.NET From a Markup Perspective</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SharePoint Social Computing – NewsGator Social Sites</title><link>http://blogs.msdn.com/kaevans/archive/2009/07/01/sharepoint-social-computing-newsgator-social-sites.aspx</link><pubDate>Wed, 01 Jul 2009 23:05:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9812191</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9812191.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9812191</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9812191</wfw:comment><description>&lt;p&gt;&lt;a href="http://channel9.msdn.com/posts/kirke/SharePoint-and-Enterprise-Social-Computing-NewsGator-Social-Sites/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="NewsGatorSocialSites_large_ch9[1]" border="0" alt="NewsGatorSocialSites_large_ch9[1]" align="left" src="http://blogs.msdn.com/blogfiles/kaevans/WindowsLiveWriter/SharePointSocialComputingNewsGatorSocial_FE4C/NewsGatorSocialSites_large_ch9%5B1%5D_3.png" width="241" height="188" /&gt;&lt;/a&gt;I just posted a new &lt;a href="http://channel9.msdn.com/posts/kirke/SharePoint-and-Enterprise-Social-Computing-NewsGator-Social-Sites/"&gt;Channel9 interview about NewsGator Social Sites.&lt;/a&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;I had the pleasure of talking with Brian Kellner, VP of Products for &lt;a href="http://www.newsgator.com"&gt;NewsGator Technologies&lt;/a&gt;, about the capabilities of &lt;a href="http://www.newsgator.com/business/socialsites"&gt;NewsGator Social Sites&lt;/a&gt;.&amp;#160; Social Sites is an enterprise social computing platform built upon SharePoint 2007.&amp;#160; Laura Kellner, VP of Marketing for NewsGator, walks us through a detailed look at many of the features of Social Sites.&lt;/p&gt;  &lt;p&gt;Social Sites is a fantastic product with a lot of exciting capabilities.&amp;#160; I have several large customers that are using Social Sites in their enterprise, and every time I talk to a customer that is using it they rave about what a transformation Social Sites provided with their intranet.&amp;#160; See for yourself what Social Sites can do in my &lt;a href="http://channel9.msdn.com/posts/kirke/SharePoint-and-Enterprise-Social-Computing-NewsGator-Social-Sites/"&gt;interview with Brian Kellner and Laura Farrelly of NewsGator&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9812191" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Communicating/default.aspx">Communicating</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Enterprise+Social+Computing/default.aspx">Enterprise Social Computing</category></item><item><title>CriticalPath SharePoint Administrators Survival Camp Training – Day 3 and 4</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/19/criticalpath-sharepoint-administrators-survival-camp-training-day-3-and-4.aspx</link><pubDate>Fri, 19 Jun 2009 13:33:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9787451</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9787451.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9787451</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9787451</wfw:comment><description>&lt;p&gt;This is a wrap-up of days 3 and 4 of the &lt;a href="http://criticalpathtraining.com/Schedule/Pages/20090615-SSC401-Dallas.aspx"&gt;SharePoint Administrators Survival Camp&lt;/a&gt; training class by &lt;a href="http://criticalpathtraining.com"&gt;CriticalPath Training&lt;/a&gt; that I am attending this week, presented by &lt;a href="http://sharepoint911.com"&gt;Shane Young of SharePoint911&lt;/a&gt;. You can see recaps of &lt;a href="http://blogs.msdn.com/kaevans/archive/2009/06/15/criticalpath-sharepoint-administrators-survival-camp-training-day-1.aspx"&gt;Day 1&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/kaevans/archive/2009/06/17/criticalpath-sharepoint-administrators-survival-camp-training-day-2.aspx"&gt;Day 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I’ll admit, I missed most of day 3.&amp;#160; I had an important call with a customer that I couldn’t miss, one of those calls that comes along quite infrequently in your career.&amp;#160; Yet I hesitated, should I cut the call short so that I can get back to training class?&amp;#160; It’s quite rare that I have the attention span to sit through training, let alone 5 days of it.&amp;#160; However, I am finding this material so intriguing that I really don’t want to miss any of the material.&lt;/p&gt;  &lt;p&gt;The second half of Day 3 covered many topics that I am already pretty familiar with.&amp;#160; We installed solution packages, activated and deactivated features, and talked about feature scope.&amp;#160; Shane had some great insight and recommendations, particularly around deployment of customizations.&amp;#160; Of course, do not simply elevate your trust level to Full, especially when the developer insists.&amp;#160; Instead, use WSS_Medium or, preferably, WSS_Minimal trust and force the developer to leverage &lt;a href="http://msdn.microsoft.com/en-us/library/dd583158.aspx"&gt;private bin deployment with a CAS policy&lt;/a&gt;.&amp;#160; Shane goes so far as to saw that ops should not deploy solutions that deploy to the GAC without having an in-depth discussion with the developer.&amp;#160; His point is that code deployed to the GAC has full trust.&amp;#160; The challenge there is that some development tasks in SharePoint cannot be performed with a private bin deployment (such as development of list and feature receivers), instead requiring GAC deployment.&amp;#160; While this can’t be a blanket policy, it’s a good rule of thumb to start with.&amp;#160; As developers, we should be prepared to answer why we need to deploy to the GAC, and should deploy to the private bin when possible.&amp;#160; &lt;a href="http://blogs.msdn.com/kaevans/archive/2009/03/13/sharepoint-developer-series-part-1-introducing-vsewss-1-3.aspx"&gt;VSeWSS 1.3 enables private bin deployment of web parts&lt;/a&gt; (the most common deployment scenario), as do other tools, and an understanding of CAS, GAC, and assembly resolution should be required for any .NET developer.&lt;/p&gt;  &lt;p&gt;Day 4 was awesome.&amp;#160; As a developer, I have focused on things like packaging into solution packages, features, content types, workflows, web parts, and using the SharePoint object model and web services APIs.&amp;#160; That’s a lot of ground.&amp;#160; I’ve also had to ignore certain areas such as Excel Services, Forms Services, BDC, and Search while I ramp up on development tasks.&amp;#160; I kind of took search for granted, it returns results.&amp;#160; I had no idea what search can really do, such as crawling file shares and security trimming results.&amp;#160; For the first time, I not only saw security trimming in search work, but configured it to work myself!&amp;#160; I created a content source to a restricted subsite, logged in as a user that does not possess credentials to see that information, and searched… the secure material was not shown, but was shown when I logged in as someone with credentials to see the material.&amp;#160; I always thought that SharePoint provided security trimming for search, but it’s really cool when you not only see it work but walk through the steps to make it work and prove to yourself how it works.&amp;#160; We also saw what happens when the search service doesn’t have access to a resource (such as an external share) and how to configure that.&amp;#160; We even deployed a PDF IFilter and updated docicon.xml to show the PDF icon next to search results.&lt;/p&gt;  &lt;p&gt;I know, many of you SharePoint experts are probably thinking, “I’ve known how to do that for a long time.”&amp;#160; Probably, but it’s not something that developers would delve into unless they are customizing search or developing components for search.&amp;#160; I haven’t done that, it was nice to see how to configure these things.&lt;/p&gt;  &lt;p&gt;We spent a lot of time on search, looking at how to provide a list of noise words (a, of, the, and, etc).&amp;#160; Shane pointed out that most customers don’t use noise words (I think he actually said he’s talked to thousands of customers and nobody uses this).&amp;#160; Just then, 3 different people in our class said they use it.&amp;#160; One works for the Supreme Court, providing noise words for legal terms that show up often such as “writ”.&amp;#160; Pretty cool.&amp;#160; &lt;/p&gt;  &lt;h4&gt;Thesaurus Files in Search&lt;/h4&gt;  &lt;p&gt;Slightly more often used is the concept of a thesaurus, enabling you to expand search terms.&amp;#160; For instance, internally at Microsoft, the really great discussions and presentations about new technologies are typically produced when the product is still in beta and people are just starting to learn how to apply it.&amp;#160; If I am giving a presentation to a group of Java developers to introduce them to ASP.NET for the first time, the more recent hits for ASP.NET near Java will produce marketing stuff and v.Next information.&amp;#160; However, if I search “Whidbey”, which was the code name for Visual Studio 2005 and .NET 2.0, then a ton of information surfaces.&amp;#160; As an admin, I can provide a thesaurus to expand search terms so that when someone searches for PowerPoint decks on ASP.NET, it includes the search term “Whidbey” as well.&amp;#160; When I search for WCF, it should include “Windows Communication Foundation” as well as “Indigo”, similarly “WPF” should include “Windows Presentation Foundation” and “Avalon”.&amp;#160; For my use, this would be a HUGE feature to implement as it would help make the mass of PowerPoint docs that our field produces much more easily discoverable.&lt;/p&gt;  &lt;h4&gt;Creating Internet Sites&lt;/h4&gt;  &lt;p&gt;We spent a lot of time creating internet sites as well.&amp;#160; We created a new site, extended it, provided alternate access mappings, applied SSL certs, even applied Forms Based Authentication for the site.&amp;#160; We leveraged &lt;a href="http://www.codeplex.com/fba"&gt;a CodePlex project to manage FBA users&lt;/a&gt; that was quite slick.&amp;#160; I’ve gone through this pain several times, creating an FBA site from scratch.&amp;#160; Remembering that this is an Administrators class, the class labs didn’t create the ASPNET_DB database from scratch, but rather had the admin import the database.&amp;#160; However, we did have to edit the web.config for the application and Central Administration by hand, something that just plain sucks no matter how you slice it.&amp;#160; Once you get everything done, it works like a champ, but getting it to a working stage requires many confusing moving parts.&amp;#160; &lt;/p&gt;  &lt;p&gt;We also focused a lot on Alternate Access Mappings and providing internal URLs.&amp;#160; I have worked with one customer who complained that there are only 5 zones for AAMs, they needed many more than that.&amp;#160; Once I learned about internal URLs, I realize that’s what the customer was asking for… a way to map internal URLs onto an AAM zone.&amp;#160; Shane also pointed out that the 5 zones for Alternate Access Mappings are deceptively named (Default, Intranet, Internet, Extranet, Custom).&amp;#160; They should instead be named Default, Zone 1, Zone 2, Zone 3, and Zone 4, because the names do not imply any functionality (other than default of course).&amp;#160; The point is that you could have multiple Intranet AAMs configured, but leveraging the Internet and Extranet zones.&amp;#160; Nothing wrong with that, it’s just a name.&lt;/p&gt;  &lt;p&gt;I really loved day 4 as it focused on several topics that I struggle with (search and creating internet facing sites).&amp;#160; Looking forward to the final day, some great information packed into this last day.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9787451" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>CriticalPath SharePoint Administrators Survival Camp Training – Day 2</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/17/criticalpath-sharepoint-administrators-survival-camp-training-day-2.aspx</link><pubDate>Wed, 17 Jun 2009 11:45:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9769173</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9769173.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9769173</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9769173</wfw:comment><description>&lt;p&gt;Today was day 2 of the &lt;a href="http://criticalpathtraining.com/Schedule/Pages/20090615-SSC401-Dallas.aspx"&gt;SharePoint Administrators Survival Camp&lt;/a&gt; training class that I am attending by &lt;a href="http://criticalpathtraining.com/"&gt;CriticalPath Training&lt;/a&gt;, led by instructor &lt;a href="http://sharepoint911.com/"&gt;Shane Young of SharePoint911&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In a word… wow.&lt;/p&gt;  &lt;p&gt;Seriously, I work at Microsoft.&amp;#160; I have access to tons and tons of information on SharePoint.&amp;#160; I use SharePoint day in and out, our Microsoft intranet is one huge SharePoint explosion.&amp;#160; I am on peer email distribution lists where we can bounce questions off each other and learn from MCS Consultants in the field, from product support escalation engineers to enthusiasts in multiple areas from development to operations, and I am able to attend an occasional internal webcast showing a specific feature or solution to a problem.&amp;#160; There are many internal training resources available (provided you can find them and make time to work through them).&amp;#160; I read a LOT of blogs, books, whitepapers, support articles, etc, the same stuff as you on MSDN, TechNet, and other sites.&amp;#160; I have even produced some content on developing for SharePoint (some of which I want to now go back and revise).&amp;#160; For the past year, I have tried to focus on self-education through online resources because I did not have a training budget.&amp;#160; &lt;/p&gt;  &lt;p&gt;In short, I now realize that I could have saved myself a ton of time and made my self-education program so much more successful just by attending this class earlier this year.&amp;#160; I could have easily justified the early investment in SharePoint training had I compared one week of in-depth training to a year of self-education that missed many of the points brought up in a 5-day class.&lt;/p&gt;  &lt;p&gt;You might have heard people say that SharePoint is huge, and nobody can master all facets of it.&amp;#160; That’s because it’s not just SharePoint, there’s also Active Directory, DNS, SQL Server, and the interactions between those.&amp;#160; For the past year, I’ve focused on the dev side of things, conveniently downloading pre-built VPCs without understanding how to set up or operate a SharePoint environment.&amp;#160; I have always had a deep appreciation for operations folks, it’s just not something I have had to do in my career.&amp;#160; I am DNS illiterate, and have to go read articles and blogs to try to set up an Active Directory instance from scratch.&amp;#160; I am not an operations person by any stretch of the imagination, but I sure know how to sling code around.&amp;#160; &lt;/p&gt;  &lt;p&gt;Developers should study the operations side of things.&lt;/p&gt;  &lt;p&gt;Seriously, holy smokes.&amp;#160; I learned so much today that it’s hard to enumerate the lessons learned and quantify where I was yesterday versus today.&amp;#160; I have a much deeper appreciation of the term “information architecture” and why site collections are both a security and a storage boundary.&amp;#160; I learned why, when creating extranets with SharePoint, you should create individual site collections per customer and limit the database size per site collection to 100 GB or less, ideally around 50 GB (this prevents table locking).&amp;#160; I fought through an issue with Alternate Access Mappings, and finally understand managed paths (I know, experienced SharePoint admindevs are giggling right now).&amp;#160; I did more with security permissions than I previously had done and have a much better understanding of how to structure security groups, witnessed security trimming working like it should (as opposed to my misunderstanding of how it should work), and talked through many scenarios with an instructor who has been there and done that.&amp;#160; I set up SharePoint using Kerberos, managed permissions to Excel Services, and can honestly explain exactly what is going on, not just regurgitate “I read it in this whitepaper that someone else wrote.”&amp;#160; I can actually explain the various service accounts being used, their purpose, what they access, when you interact with them, and when you need to include various accounts as farm admins, SSP admins, and site collection admins.&lt;/p&gt;  &lt;p&gt;Today was mostly labs, getting our hands dirty with permissions.&amp;#160; There was lecture time, but there was far less today.&amp;#160; &lt;/p&gt;  &lt;p&gt;For someone with no admin background, this class is a huge eye opener.&amp;#160; Talking with others in the class who are experienced admins and currently &lt;strike&gt;fighting&lt;/strike&gt; managing SharePoint installations, they are realizing a huge amount of value from the class as well.&amp;#160; Shane has a dry sense of humor (he told a cow joke today that was pretty awful, but funny in its awfulness), and a passion and real understanding of SharePoint.&amp;#160; My favorite part of the class is that he has absolutely zero pre-prepared or scripted demos available.&amp;#160; When he feels there’s something he needs to demo, he uses Remote Desktop to go to one of his live sites (ShanesCows.com, SharePoint911.com) and demonstrates on the live server.&amp;#160; The guy really knows what he’s talking about, has written multiple training classes and books on SharePoint administration, has a successful company based on SharePoint, and is a successful trainer to boot.&amp;#160; There’s no reading of PowerPoint here, his lectures are largely unscripted.&amp;#160; I really enjoy that… he knows the topic so well that he sees a slide, talks about the topics, shares personal experiences, then tinkers with a live production server that actually makes him money to get his point across.&amp;#160; &lt;/p&gt;  &lt;p&gt;Oops, I don’t think I was supposed to write that last part, as Shane pointed out multiple times not to tell his wife that he was screwing with the production server.&amp;#160; Hope she doesn’t end up reading this.&lt;/p&gt;  &lt;p&gt;I now realize that I would have been leaps and bounds past where I am today had I started out with this class.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you are a developer, you need this class to understand why a SharePoint solution architect separated things into various site collections.&amp;#160; That isn’t done to make your life harder, there are security considerations.&amp;#160; If you are an architect, you need this class to understand how to design your solution for high availability and the storage implications (did you know that you probably shouldn’t use a SAN, but instead use Direct Access Storage, limiting individual databases to less than 100 GB, and why you should separate the index server from the WFEs?&amp;#160; I sure didn’t).&lt;/p&gt;  &lt;p&gt;Absolutely recommended, and it’s only day 2 of 5.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9769173" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Announcing SharePoint Saturday Dallas, July 25th 2009</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/16/announcing-sharepoint-saturday-dallas-july-25th-2009.aspx</link><pubDate>Tue, 16 Jun 2009 15:06:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9762485</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9762485.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9762485</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9762485</wfw:comment><description>&lt;p&gt;&lt;span style="color:#4c4c4c"&gt;Eric Shupps did such a great job with the first SharePoint Saturday Dallas announcement that I am going to borrow &lt;a href="http://www.binarywave.com/blogs/eshupps/Lists/Posts/Post.aspx?ID=206"/&gt;&lt;/span&gt;his text&lt;span style="color:#4c4c4c"&gt;…
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#4c4c4c"&gt;Today we are officially announcing the first ever &lt;a href="http://www.sharepointsaturday.org/dallas"/&gt;&lt;/span&gt;&lt;span style="color:#0000cc; font-size:9pt"&gt;SharePoint Saturday&lt;/span&gt;&lt;span style="color:#4c4c4c"&gt; event to be held in Dallas on July 25th, 2009. SharePoint Saturday is a free community-focused SharePoint event dedicated to educating and engaging members of the local technical community. Much like user groups and other community oriented events, SharePoint Saturday draws upon the expertise of local SharePoint IT professionals, developers and solutions architects who come together to share their real-world experiences, lessons learned, best practices, and general knowledge with other like-minded individuals.&lt;span style="font-family:Verdana; font-size:8pt"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#4c4c4c"&gt;SharePoint Saturday will be hosted at the Microsoft campus in Las Colinas and is &lt;span style="text-decoration:underline"&gt;&lt;strong&gt;free&lt;/strong&gt;&lt;/span&gt; to anyone who wants to attend. The day starts at 9:00 AM with a short introductory keynote and ends at 4:30 PM. Lunch will be provided and there will be numerous giveaways throughout the day. There will be three primary content tracks – IT Professional, Developer, and Architect – from which attendees may select the topics which most closely align with their job function or area of interest. Each track will consist of five presentations lasting approximately an hour and ranging from introductory, 100-level content to highly-technical, 400-level "expert" sessions.   Speakers will represent a broad cross section of the community and offer a variety of different perspectives and points of view.&lt;span style="font-family:Verdana; font-size:8pt"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#4c4c4c"&gt;&lt;span style="font-size:11pt"&gt;SharePoint Saturday is a great opportunity to learn, share and network. Please join us on Saturday, July 25th for a full day of education and excitement. A full session schedule will be posted soon. We look forward to seeing you there!&lt;/span&gt;&lt;span style="font-family:Verdana; font-size:8pt"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#4c4c4c"&gt;&lt;span style="font-size:11pt"&gt;For more information, please visit the following site:&lt;/span&gt;&lt;span style="font-family:Verdana; font-size:8pt"&gt;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sharepointsaturday.org/dallas"&gt;&lt;span style="color:#0000cc; font-size:9pt"&gt;http://www.sharepointsaturday.org/dallas&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#4c4c4c; font-size:11pt"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9762485" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Dallas+Microsoft+Events/default.aspx">Dallas Microsoft Events</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Microsoft+Office/default.aspx">Microsoft Office</category></item><item><title>CriticalPath SharePoint Administrators Survival Camp Training – Day 1</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/15/criticalpath-sharepoint-administrators-survival-camp-training-day-1.aspx</link><pubDate>Tue, 16 Jun 2009 01:30:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9757538</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9757538.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9757538</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9757538</wfw:comment><description>&lt;p&gt;I am fortunate to be attending the &lt;a href="http://criticalpathtraining.com/Schedule/Pages/20090615-SSC401-Dallas.aspx"&gt;SharePoint Administrators Survival Camp&lt;/a&gt; training class by &lt;a href="http://criticalpathtraining.com"&gt;CriticalPath Training&lt;/a&gt; this week, presented by &lt;a href="http://sharepoint911.com"&gt;Shane Young of SharePoint911&lt;/a&gt;.&amp;#160; The class is being taught at the Microsoft Las Colinas MTC.&amp;#160; Although I have a cube at the Las Colinas office, this is the second time I’ve ever been in the Las Colinas MTC and first time I found there are training rooms in the MTC section of LC1.&amp;#160; I got there a bit early this morning, so it’s also the first time I played with the toys in the MTC: I was able to play with a Surface table, an XBox 260 with Guitar Hero 3 World Tour (which I now want to buy), and a giant touch screen monitor where I was able to play with Virtual Earth.&amp;#160; &lt;/p&gt;  &lt;p&gt;The class started at 9:00 am, and Shane dispensed with the necessary logistics and agenda stuff quickly and moved to the goods.&amp;#160; He moved to farm topologies, and for the first time I understand (and can even create) a medium farm.&amp;#160; I’ve been focusing on SharePoint for almost a year now, but focusing on the developer side of things.&amp;#160; If I needed a particular configuration, I’d just download a VPC image that was already configured like I needed.&amp;#160; Most of the time, I would just install SharePoint using a basic install.&amp;#160; Now I understand why the basic installation is a good thing to forget and why you should use the Advanced option in SharePoint’s setup program, choosing a Complete install.&lt;/p&gt;  &lt;p&gt;I’ve had the fortune of attending several training classes by CriticalPath Training (previously Ted Pattison Group), including &lt;a href="http://criticalpathtraining.com/Courses/Pages/TheGreatSharePointAdventure.aspx"&gt;The Great SharePoint Adventure&lt;/a&gt; class (really a deep dive for developers) taught by Ted Pattison and AC’s &lt;a href="http://criticalpathtraining.com/Courses/Pages/DevelopingPublishingSiteswithSharePointServer2007WebContentManagement.aspx"&gt;WCM 401&lt;/a&gt; class (which I still hold as one of the best training classes I have ever attended).&amp;#160; So far, Shane’s teaching style is consistent with the high quality bar that Ted and AC set, injecting humor and personal anecdotes to liven up the content and maintain the audience’s attention.&lt;/p&gt;  &lt;p&gt;The first day was mostly lecture, concentrating on the physical architecture of a SharePoint medium farm.&amp;#160; Shane introduced many concepts, including why you want to separate your database and WFE from the start (because it’s much harder to separate them later), and how you can structure 2 WFE’s with query and Excel services, a separate WFE and index server, all separated from the SQL Server cluster.&amp;#160; More importantly, he focused on &lt;em&gt;why&lt;/em&gt; you want to do this.&amp;#160; We also talked about information architecture, where the site collection is both a security and storage boundary.&amp;#160; He showed why a SAN could be a very poor choice for storage (favoring DAS and noting a Microsoft site that realized 4x performance gains moving from SAN to DAS), and discussed why you should not put all assemblies in the GAC (I see his point on this, but still think the GAC is a more practical place for in-house developed customizations while private bin deployments with CAS policy should be the norm for 3rd party customizations).&amp;#160; &lt;/p&gt;  &lt;p&gt;At the end of the 1st day, we worked through a lab where we had to slipstream SP1 into the MOSS installation (never had to do this, I always downloaded VPCs where someone else did this for me), worked through a Complete installation (again, never did this, just downloaded multiple VPCs to mimic a farm), and configured the environment for Kerberos (I’ll admit I’ve done this one a few times on my own, but never for a production environment, and never with a least privileged install like I worked through today).&amp;#160; This was a real eye-opener, to work with a “real” installation scenario where I wasn’t using a local administrator account for everything.&lt;/p&gt;  &lt;p&gt;So far, the course is highly recommended.&amp;#160; I am looking forward to the rest of the week as the material continues to get more challenging.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9757538" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Democratization of IT: Creating WebParts for SharePoint Without IT Operations</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/15/democratization-of-it-creating-webparts-for-sharepoint-without-it-operations.aspx</link><pubDate>Mon, 15 Jun 2009 14:46:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9753420</guid><dc:creator>kaevans</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9753420.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9753420</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9753420</wfw:comment><description>&lt;p&gt;&lt;img align="left" src="http://blogs.msdn.com/blogfiles/kaevans/061509_1446_Democratiza1.jpg" alt=""/&gt;&lt;span style="font-family:Arial; font-size:10pt"&gt;I've had several conversations with customers lately about creating some type of gadget gallery for their intranet, something that will allow users to create their own widgets that can be reused by others within the organization.  Folks are familiar with creating web parts using C#, but that requires you to write code and install it via a solution package.  What they typically are asking for is something that an end user can create and upload without requiring IT support.  It turns out that SharePoint provides this concept out of the box simply by creating a .webpart file and uploading it to the gallery.  
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Arial; font-size:10pt"&gt;This is done by customizing an existing web part, such as the Data View Web Part.  For instance, there's a cool post that shows &lt;a href="http://cakriwut.wordpress.com/2008/09/06/creating-weather-webpart-using-sharepoint-designer/"&gt;how to create a weather web part by customizing the Data View Web Part&lt;/a&gt;.  The web part in that post is created using SharePoint Designer 2007, obtaining XML data from a remote data source and customizing the view of a Data View Web Part.  There's another great example of creating a &lt;a href="http://www.iwkid.com/blog/Lists/Posts/Post.aspx?ID=39"&gt;&lt;span style="color:blue; text-decoration:underline"&gt;Tag Cloud for SharePoint Blog Sites&lt;/span&gt;&lt;/a&gt;.  Again, a very cool example of customizing the Data View Web Part that is reusable simply by exporting the web part to a .webpart file and uploading it back to the gallery.  
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Besides the Data View Web Part, you can also leverage the Content Query Web Part.  Heather Solomon has a great post that shows how to &lt;a href="http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx"&gt;customize the Content Query Web Part and control the display of data&lt;/a&gt;.  The Enterprise Content Management team also wrote a great blog post on &lt;a href="http://blogs.msdn.com/ecm/archive/2006/10/25/configuring-and-customizing-the-content-query-web-part.aspx"&gt;customizing the CQWP&lt;/a&gt;.   
&lt;/p&gt;&lt;p&gt;The point is that there is a great "widget" framework in SharePoint already.  You can do some pretty amazing things with SharePoint as an end user without requiring IT operations to deploy code.  See &lt;a href="http://www.endusersharepoint.com/"&gt;EndUserSharePoint.com&lt;/a&gt; for more examples of the great stuff that you can do with SharePoint without IT intervention.
&lt;/p&gt;&lt;p&gt;This is the amazing thing about SharePoint… you can do so much without requiring IT admins or even developers.  Of course, having a development background is extremely beneficial since you are going to work with JavaScript and XSLT, and tools like Visual Studio 2008 can make this much easier, but as you can see from all the posts listed here you can do all of this with the freely available SharePoint Designer 2007.  This is the Democratization of IT concept… enabling end users to get stuff done without going through the rigors of working with the IT department.
&lt;/p&gt;&lt;p&gt;I know that most of my audience is developers, so it is uncomfortable to hear this.  "But Kirk, people are going to build lots of junk that we're going to have to end up supporting anyway."  Yep, that's right!  People are going to be able to get their jobs done, and probably are going to do things that aren't best practices by IT standards.  But think of the value here… this frees you up to create the higher-value stuff (workflows, site templates, lots of stuff) without boring you with creating yet another CRUD data entry application.  And if the application outgrows the end user capabilities and requires developer intervention, then you already have their requirements in the form of a working example sitting in front of you!
&lt;/p&gt;&lt;p&gt;The point is that SharePoint is a fantastic platform for end users as well as developers.  The more that developers and IT operations can enable the end users to be self-sufficient, the more value that the business will see in IT. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9753420" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Trying and Buying BPOS - It couldn't be easier!</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/12/trying-and-buying-bpos-it-couldn-t-be-easier.aspx</link><pubDate>Sat, 13 Jun 2009 01:57:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9741180</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9741180.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9741180</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9741180</wfw:comment><description>&lt;p&gt;There’s a very cool blog post over at &lt;a href="http://blogs.technet.com/tara/archive/2009/05/26/trying-and-buying-bpos-it-couldn-t-be-easier.aspx"&gt;The Amazing Adventures of Geek Girl : Trying and Buying BPOS - It couldn't be easier!&lt;/a&gt;&amp;#160; This post shows you how to sign up for the Microsoft Business Productivity Online Standard Suite (BPOS).&amp;#160; BPOS delivers hosted communication and collaboration tools that feature: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;High availability &lt;/li&gt;    &lt;li&gt;Comprehensive security &lt;/li&gt;    &lt;li&gt;Simplified IT management &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This includes &lt;a href="http://www.microsoft.com/online/exchange-online.mspx"&gt;Exchange Online&lt;/a&gt;, &lt;a href="http://www.microsoft.com/online/sharepoint-online.mspx"&gt;SharePoint Online&lt;/a&gt;, &lt;a href="http://www.microsoft.com/online/office-communications-online.mspx"&gt;Office Communications Online&lt;/a&gt;, and &lt;a href="http://www.microsoft.com/online/office-live-meeting.mspx"&gt;Office Live Meeting&lt;/a&gt;.&amp;#160; BPOS combines these 4 products into a single suite of products, purchased together.&amp;#160; You are charged per user, per month, which can provide significant savings, especially when compared to the cost of self-hosting.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can sign up for a free 30 day trial, or purchase BPOS right from your browser.&amp;#160; To find out more, go sign up for your free trial, it’s quite easy to get started by setting up a free SharePoint Online account by following the steps outlined in the post, “&lt;a href="http://blogs.technet.com/tara/archive/2009/05/26/trying-and-buying-bpos-it-couldn-t-be-easier.aspx"&gt;Trying and Buying BPOS – It couldn’t be easier!&lt;/a&gt;”&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9741180" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Cloud+Services/default.aspx">Cloud Services</category></item><item><title>Bytes by MSDN</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/12/bytes-by-msdn.aspx</link><pubDate>Fri, 12 Jun 2009 14:17:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9734867</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9734867.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9734867</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9734867</wfw:comment><description>&lt;p&gt;Looks like there is a really cool interview series called &lt;a href="http://msdn.microsoft.com/en-us/bytes.aspx"&gt;Bytes by MSDN&lt;/a&gt; where interviews with community influentials were taped at TechEd, each will talk about their recommended must-have resources.&amp;#160; The interviews will be posted between now and Labor Day.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Bytes by MSDN Schedule&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;   &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="80"&gt;           &lt;p&gt;June 11 &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/dd772292.aspx"&gt;Scott Hanselman&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;June 18&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Billy Hollis&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;June 25&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Kate Gregory&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;July 2&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Richard Campbell&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;July 9&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Stephen Forte &amp;amp; Clemens Vasters&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;July 16&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Tim Huckaby &amp;amp; Michele Leroux Bustamente&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;July 23&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Jim Wilt &amp;amp; Brian Noyes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;July 30 &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Loke Uei Tan&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;Aug 6&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Matt Hessinger&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;Aug 13&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Don Box&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;Aug 20&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Juval Lowy&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;Aug 27 &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Jeffrey Palermo&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top"&gt;           &lt;p&gt;Sept 3 &lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top" width="268"&gt;           &lt;p&gt;Tim Heuer &amp;amp; Out Takes&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Very cool!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9734867" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item><item><title>Bing Maps World Tour</title><link>http://blogs.msdn.com/kaevans/archive/2009/06/05/bing-maps-world-tour.aspx</link><pubDate>Fri, 05 Jun 2009 19:48:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9701880</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9701880.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9701880</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9701880</wfw:comment><description>&lt;p&gt;This is really cool.&amp;#160; Just got an email about an app that lets you see the updates to Bing Maps.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://bingmapsupdates.cloudapp.net/" href="http://bingmapsupdates.cloudapp.net/"&gt;http://bingmapsupdates.cloudapp.net/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Bing Maps platform gets a makeover just about every month.&amp;#160; We add new places, even better imagery and fresher views on locations near and far – to the tune of tens of terabytes of new content.&lt;/p&gt;  &lt;p&gt;To bring the new Bing Maps additions to life, we’ve built an app - with a little bit of help from Silverlight and Azure - that shows what’s new this month and in months gone by.&amp;#160; You can sit back and watch us take you on a tour of the new hotspots or explore for yourself &lt;a href="http://bingmapsupdates.cloudapp.net/"&gt;here&lt;/a&gt; or at &lt;a href="http://www.microsoft.com/maps"&gt;www.microsoft.com/maps&lt;/a&gt;. There’s also a short video intro to it &lt;a href="http://www.youtube.com/watch?v=hXbWtzNa66g"&gt;here&lt;/a&gt; and more info on Chris Pendleton’s &lt;a href="http://www.bing.com/community/blogs/maps/default.aspx"&gt;blog&lt;/a&gt;.&amp;#160; Make sure you check back each month to see what’s new.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9701880" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/Cloud+Services/default.aspx">Cloud Services</category></item><item><title>Intro to Data View Web Part by Laura Rogers</title><link>http://blogs.msdn.com/kaevans/archive/2009/05/28/intro-to-data-view-web-part-by-laura-rogers.aspx</link><pubDate>Thu, 28 May 2009 13:43:45 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9647199</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9647199.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9647199</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9647199</wfw:comment><description>&lt;p&gt;Laura Rogers has posted some great &lt;a href="http://www.endusersharepoint.com/?p=1700"&gt;screencasts to introduce you to the Data View Web Part&lt;/a&gt;, showing how easy it is use SharePoint Designer to consume data from a data source and provide a UI to insert, update, and delete items… all with no code.&amp;#160; Check out the bottom section of her article that points to more articles in this series.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve got to admit, I am a developer who approaches SharePoint by looking for the things that I can extend using Visual Studio.&amp;#160; What I have found is that many of the things that I want to build I could instead create using tools like Access, Excel, SharePoint Designer, and InfoPath.&amp;#160; The lesson here is to spend the time researching what SharePoint provides out of the box (it’s quite a large surface area) to see if that is already implemented for you. &lt;/p&gt;  &lt;p&gt;A great example of this is building custom web parts.&amp;#160; I can’t tell you how many times I have created a web part with an SPGridView in it that does exactly what Laura shows in her screencast.&amp;#160; Using the out of box functionality not only empowers end users, but also greatly reduces the amount of code that you need to maintain.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9647199" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>Excel 2007 Productivity Secrets</title><link>http://blogs.msdn.com/kaevans/archive/2009/05/27/excel-2007-productivity-secrets.aspx</link><pubDate>Wed, 27 May 2009 12:33:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9644363</guid><dc:creator>kaevans</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9644363.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9644363</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9644363</wfw:comment><description>&lt;p&gt;I love blog posts that show features of a product that I use frequently that I didn’t know existed.&amp;#160; &lt;a href="http://chandoo.org/wp/2009/05/26/excel-2007-productivity-tips/"&gt;Excel@Work&lt;/a&gt; has a great blog post “&lt;a href="http://chandoo.org/wp/2009/05/26/excel-2007-productivity-tips/"&gt;Do you know these Excel 2007 Productivity Secrets (Hint: Coffee is not one of them)&lt;/a&gt;”.&amp;#160; In that post, I found out how to see the items on the clipboard (knew this was there somewhere, never knew how to get to it), and how to lock a feature that you might use many times in a row and don’t want to have to keep clicking the button (like format painting).&amp;#160; &lt;/p&gt;  &lt;p&gt;Great post, &lt;a href="http://chandoo.org/wp/2009/05/26/excel-2007-productivity-tips/"&gt;check it out&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9644363" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/Microsoft+Office/default.aspx">Microsoft Office</category></item><item><title>WS-Discovery in WCF - .NET 4.0</title><link>http://blogs.msdn.com/kaevans/archive/2009/05/14/ws-discovery-in-wcf-net-4-0.aspx</link><pubDate>Thu, 14 May 2009 17:44:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9616666</guid><dc:creator>kaevans</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9616666.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9616666</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9616666</wfw:comment><description>&lt;p&gt;Back in the early beta days of “Indigo”, before WCF, I saw an early demo using WS-Discovery.&amp;#160; The feature obviously was not included in .NET 3.0 or .NET 3.5, but looks like it is in the list of features targeted for .NET 4.0.&amp;#160; Very cool.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://specs.xmlsoap.org/ws/2005/04/discovery/ws-discovery.pdf"&gt;WS-Discovery&lt;/a&gt; fills a needed gap, providing a standard way to discover services in a network.&amp;#160; The spec is surprisingly short, sine there are only 4 operations:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Hello – sent by the service to announce it has joined the network.&lt;/li&gt;    &lt;li&gt;Bye – sent by the service to announce that it is leaving the network.&amp;#160; &lt;/li&gt;    &lt;li&gt;Probe – sent by the client to search for a service by type or scope.&lt;/li&gt;    &lt;li&gt;Resolve – sent by the client to search for a service by name.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A simple way to think of this is a printer.&amp;#160; You install a new printer to the network, and it sends a one-way Hello message to all the nodes on the network.&amp;#160; A new client joins the network and can issue a Probe request asking for all printers in the marketing department’s subnet.&amp;#160; The client can also send a Resolve request asking for a specific printer by name (think of DNS resolution here).&amp;#160; Finally, we decommission the printer and take it off the network, causing the printer to try to send a Bye one-way notification telling everyone that it is being taken off the network.&amp;#160; &lt;/p&gt;  &lt;p&gt;How this is done is typically over UDP.&amp;#160; This makes sense… you want an easy way to blast notifications in the Hello and Bye cases, doing so in a multicast fashion without bottlenecking an intermediary service.&amp;#160; UDP is a great protocol for this.&lt;/p&gt;  &lt;p&gt;You can learn more about WS-Discovery and the WCF implementation in .NET 4.0 via the &lt;a href="http://channel9.msdn.com/shows/10-4/"&gt;10-4 show on Channel9.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-episode-19-Service-Discovery-with-WCF/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" align="left" src="http://blogs.msdn.com/blogfiles/kaevans/WindowsLiveWriter/WSDiscoveryinWCF.NET4.0_B2F3/clip_image002_3.jpg" width="244" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-episode-19-Service-Discovery-with-WCF/"&gt;Episode 19: Service Discovery with WCF&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;WCF in .NET 4 includes an implementation of the WS-Discovery protocol.&amp;#160; Sounds exciting right?&amp;#160; Actually it is very cool because it allows you to build applications and services that can discover other services using UDP multicast messages or via a discovery proxy.&amp;#160; In this episode I'll walk through the Service Discovery lab where we build a messenger style application I call &amp;quot;ChatWOW&amp;quot;.&amp;#160; In this lab you will see how to make your service discoverable and how you can discover other services.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://channel9.msdn.com/shows/10-4/10-4-episode-19-Service-Discovery-with-WCF/"&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9616666" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/XML+Web+Services/default.aspx">XML Web Services</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/WCF/default.aspx">WCF</category></item><item><title>What’s In Windows Server 2008 R2?</title><link>http://blogs.msdn.com/kaevans/archive/2009/05/09/what-s-in-windows-server-2008-r2.aspx</link><pubDate>Sat, 09 May 2009 13:51:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9599172</guid><dc:creator>kaevans</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9599172.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9599172</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9599172</wfw:comment><description>&lt;p&gt;Don’t let the “R2” name fool you, there’s a lot packed into Windows Server 2008 R2.&amp;#160; Head over to the ISV team blog to see &lt;a href="http://blogs.msdn.com/usisvde/archive/2009/05/08/how-to-get-started-leveraging-windows-server-2008-r2-features.aspx"&gt;how to get started leveraging Windows Server 2008 R2 features&lt;/a&gt;.&amp;#160; For instance, I found out that you can you use the Windows 7 SDK on Windows Server 2008 R2 because they’re both based on the same kernel.&amp;#160; You can also use the SDK with Visual Studio 2008, including the Express editions.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9599172" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Getting XML Data From a SharePoint List – The Easy Way</title><link>http://blogs.msdn.com/kaevans/archive/2009/05/01/getting-xml-data-from-a-sharepoint-list-the-easy-way.aspx</link><pubDate>Fri, 01 May 2009 13:58:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9582382</guid><dc:creator>kaevans</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9582382.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9582382</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9582382</wfw:comment><description>&lt;p&gt;Steve Pietrek has a great link blog (&lt;a href="http://stevepietrek.com/"&gt;Steve Pietrek - Everything SharePoint and Office&lt;/a&gt;) that aggregates blog postings on SharePoint and Office.&amp;#160; If you are at all interested in seeing what’s possible with SharePoint, I highly recommend you subscribe to this great resource.&amp;#160; &lt;/p&gt;  &lt;p&gt;In his &lt;a href="http://stevepietrek.com/2009/04/30/links-4302009/"&gt;April 30th link posting&lt;/a&gt;, there was a gem of a post that, frankly, rocks.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sharepointsolutions.blogspot.com/2009/04/silverlight-easiest-method-to-get.html"&gt;Silverlight: The easiest method to get SharePoint list data&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tony Bierman (MVP for WSS) shows what he considers to be (and I think I agree!) the &lt;a href="http://sharepointsolutions.blogspot.com/2009/04/silverlight-easiest-method-to-get.html"&gt;easiest method to get SharePoint List data&lt;/a&gt;.&amp;#160; Here’s how it works.&amp;#160; Simply format the following string to form the request URL.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;http://{0}/_vti_bin/owssvr.dll?Cmd=Display&amp;amp;List={1}&amp;amp;XMLDATA=TRUE&lt;/pre&gt;

&lt;ul&gt;
  &lt;li&gt;{0} – The URL to your site.&amp;#160; This could be the root web or a child site.&lt;/li&gt;

  &lt;li&gt;{1} – The GUID for your list.&amp;#160; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To find the GUID for a list, just go to the Settings page for the list and copy it from the URL.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/kaevans/WindowsLiveWriter/GettingXMLDataFromaSharePointListTheEasy_7E02/annotations_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="annotations" border="0" alt="annotations" src="http://blogs.msdn.com/blogfiles/kaevans/WindowsLiveWriter/GettingXMLDataFromaSharePointListTheEasy_7E02/annotations_thumb.jpg" width="244" height="121" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I formed the URL as described above and pointed it to my custom list called Annotations.&amp;#160; Whammo, here’s the return.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;xmlns:s&lt;/span&gt;&lt;span class="kwrd"&gt;='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:dt&lt;/span&gt;&lt;span class="kwrd"&gt;='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:rs&lt;/span&gt;&lt;span class="kwrd"&gt;='urn:schemas-microsoft-com:rowset'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:z&lt;/span&gt;&lt;span class="kwrd"&gt;='#RowsetSchema'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:Schema&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='RowsetSchema'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:ElementType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='row'&lt;/span&gt;
                   &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;='eltOnly'&lt;/span&gt;
                   &lt;span class="attr"&gt;rs:CommandTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;='30'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_Attachments'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Attachments'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='1'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='boolean'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='1'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_LinkTitle'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Title'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='2'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_AnnotationID'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Annotation ID'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='3'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_MediaPath'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Media Path'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='4'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_TimeCode'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Time Code'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='5'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:ElementType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:Schema&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;rs:data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;z:row&lt;/span&gt; &lt;span class="attr"&gt;ows_Attachments&lt;/span&gt;&lt;span class="kwrd"&gt;='0'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_LinkTitle&lt;/span&gt;&lt;span class="kwrd"&gt;='my first test item'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_AnnotationID&lt;/span&gt;&lt;span class="kwrd"&gt;='b3cd9a8c-e7d1-439e-b910-a94e1d91f406'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_MediaPath&lt;/span&gt;&lt;span class="kwrd"&gt;='http://localhost, &lt;a href="http://localhost/media1.wmv'"&gt;http://localhost/media1.wmv'&lt;/span&gt;
&lt;/a&gt;           &lt;span class="attr"&gt;ows_TimeCode&lt;/span&gt;&lt;span class="kwrd"&gt;='00:00:03.1234567'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;z:row&lt;/span&gt; &lt;span class="attr"&gt;ows_Attachments&lt;/span&gt;&lt;span class="kwrd"&gt;='0'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_LinkTitle&lt;/span&gt;&lt;span class="kwrd"&gt;='my second test item'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_AnnotationID&lt;/span&gt;&lt;span class="kwrd"&gt;='7d8cc2f9-f610-46ed-ad86-be08413ff94b'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_MediaPath&lt;/span&gt;&lt;span class="kwrd"&gt;='http://localhost, &lt;a href="http://localhost/media2.wmv'"&gt;http://localhost/media2.wmv'&lt;/span&gt;
&lt;/a&gt;           &lt;span class="attr"&gt;ows_TimeCode&lt;/span&gt;&lt;span class="kwrd"&gt;='00:00:03.1234567'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;rs:data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;I think at one point I remember seeing someone post about owssvr.dll and the fact that you can retrieve list data as XML, but the mental connection never really hit until I followed the link from Steve’s blog to that article.&amp;#160; Couldn’t be simpler.&amp;#160; This shows yet another method for retrieving data from lists.&amp;#160; Since it’s just an HTTP GET request that returns UTF-8 encoded XML, this is a very easy way to get started consuming SharePoint’s data from non-Microsoft consumers like legacy Java applications.&lt;/p&gt;

&lt;h4&gt;Using Views&lt;/h4&gt;

&lt;p&gt;This got me to thinking… can you limit the data returned? There isn’t a way to provide a query or viewfields argument here like you can with the SharePoint Lists.asmx web service.&amp;#160; I went searching, and found Randy WIlliams’ post, &lt;a href="http://www.synergyonline.com/blog/blog-moss/Lists/Posts/Post.aspx?ID=24"&gt;Exploiting the value of OWSSVR.DLL in SharePoint 3.0&lt;/a&gt;.&amp;#160; Randy shows that you can use another querystring parameter, View, and provide a view GUID (retrieved from the URL in the same manner that we retrieved the List GUID).&amp;#160; &lt;/p&gt;

&lt;pre class="csharpcode"&gt;http://{0}/_vti_bin/owssvr.dll?Cmd=Display&amp;amp;List={1}&amp;amp;View={2}&amp;amp;XMLDATA=TRUE&lt;/pre&gt;

&lt;p&gt;I created a view with a filter in it to reduce the number of records returned, put the View’s GUID into the querystring, and whammo!&amp;#160; Only the rows satisfying the view criteria were returned.&amp;#160; I also altered the view to not return the Attachments column, further simplifying the data returned.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;xmlns:s&lt;/span&gt;&lt;span class="kwrd"&gt;='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:dt&lt;/span&gt;&lt;span class="kwrd"&gt;='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:rs&lt;/span&gt;&lt;span class="kwrd"&gt;='urn:schemas-microsoft-com:rowset'&lt;/span&gt;
     &lt;span class="attr"&gt;xmlns:z&lt;/span&gt;&lt;span class="kwrd"&gt;='#RowsetSchema'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:Schema&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;='RowsetSchema'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:ElementType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='row'&lt;/span&gt;
                   &lt;span class="attr"&gt;content&lt;/span&gt;&lt;span class="kwrd"&gt;='eltOnly'&lt;/span&gt;
                   &lt;span class="attr"&gt;rs:CommandTimeout&lt;/span&gt;&lt;span class="kwrd"&gt;='30'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_LinkTitle'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Title'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='2'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_AnnotationID'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Annotation ID'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='3'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_MediaPath'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Media Path'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='4'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;='ows_TimeCode'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:name&lt;/span&gt;&lt;span class="kwrd"&gt;='Time Code'&lt;/span&gt;
                       &lt;span class="attr"&gt;rs:number&lt;/span&gt;&lt;span class="kwrd"&gt;='5'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;s:datatype&lt;/span&gt; &lt;span class="attr"&gt;dt:type&lt;/span&gt;&lt;span class="kwrd"&gt;='string'&lt;/span&gt;
                    &lt;span class="attr"&gt;dt:maxLength&lt;/span&gt;&lt;span class="kwrd"&gt;='512'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:AttributeType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:ElementType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;s:Schema&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;rs:data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;z:row&lt;/span&gt; &lt;span class="attr"&gt;ows_LinkTitle&lt;/span&gt;&lt;span class="kwrd"&gt;='my first test item'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_AnnotationID&lt;/span&gt;&lt;span class="kwrd"&gt;='b3cd9a8c-e7d1-439e-b910-a94e1d91f406'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_MediaPath&lt;/span&gt;&lt;span class="kwrd"&gt;='http://localhost, http://localhost/media1.wmv'&lt;/span&gt;
           &lt;span class="attr"&gt;ows_TimeCode&lt;/span&gt;&lt;span class="kwrd"&gt;='00:00:03.1234567'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;rs:data&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Of course, once I had the aha moment looking at Tony’s post, I thought, “this would be incredibly simple to call from jQuery!”.&amp;#160; Yep, the smart folks at EndUserSharePoint already thought of that, too, and created a nice set of jQuery add-ins to boot!&amp;#160; Check out &lt;a href="http://www.endusersharepoint.com/?p=1533"&gt;JQuery for Everyone: Get XML List Data with OWSSVR.DLL (RPC)&lt;/a&gt;.&amp;#160; &lt;/p&gt;

&lt;h4&gt;Why Use Web Services if This Exists?!?!&lt;/h4&gt;

&lt;p&gt;Yeah, this is really cool, but there are a lot of things you will still need the web services API for.&amp;#160; What this approach lacks is the ability to limit data based on a query.&amp;#160; To the point, I can’t issue a CAML query to the server and have it query the rows on the server, returning only the data I want.&amp;#160; Besides rich querying, there are other functions that you may want to perform like creating a list, deleting a list, deleting a list item, updating a list item, etc that the RPC method obviously can’t handle and is performed via the web services API.&amp;#160; &lt;/p&gt;

&lt;p&gt;To see how it is still completely possible to call SharePoint from JavaScript, Jan Tielens has a great set of posts on using the SharePoint web services API with jQuery (see &lt;a title="Calling the SharePoint Web Services with jQuery" href="http://weblogs.asp.net/jan/archive/2009/04/09/calling-the-sharepoint-web-services-with-jquery.aspx"&gt;Calling the SharePoint Web Services with jQuery&lt;/a&gt;, and &lt;a href="http://weblogs.asp.net/jan/archive/2009/04/10/creating-list-items-with-jquery-and-the-sharepoint-web-services.aspx"&gt;Creating List Items with jQuery and the SharePoint Web Services&lt;/a&gt;).&amp;#160; And if you are consuming the SharePoint web services from Silverlight, check out my blog and accompanying screencast that shows &lt;a href="http://blogs.msdn.com/kaevans/archive/2009/04/28/sharepoint-for-developers-part-4-consuming-sharepoint-web-services-from-silverlight.aspx"&gt;how to call SharePoint web services from Silverlight&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;For More Information&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/kaevans/archive/2009/04/28/sharepoint-for-developers-part-4-consuming-sharepoint-web-services-from-silverlight.aspx"&gt;SharePoint for Developers Part 4 – Consuming SharePoint Web Services from Silverlight&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.synergyonline.com/blog/blog-moss/Lists/Posts/Post.aspx?ID=24"&gt;Exploiting the value of OWSSVR.DLL in SharePoint 3.0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sharepointsolutions.blogspot.com/2009/04/silverlight-easiest-method-to-get.html"&gt;Silverlight: The easiest method to get SharePoint list data&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.endusersharepoint.com/?p=1533"&gt;JQuery for Everyone: Get XML List Data with OWSSVR.DLL (RPC)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/jan/archive/2009/04/10/creating-list-items-with-jquery-and-the-sharepoint-web-services.aspx"&gt;Creating List Items with jQuery and the SharePoint Web Services&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a title="Calling the SharePoint Web Services with jQuery" href="http://weblogs.asp.net/jan/archive/2009/04/09/calling-the-sharepoint-web-services-with-jquery.aspx"&gt;Calling the SharePoint Web Services with jQuery&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9582382" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/XML/default.aspx">XML</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/XML+Web+Services/default.aspx">XML Web Services</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/AJAX/default.aspx">AJAX</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://blogs.msdn.com/kaevans/archive/tags/Interoperability/default.aspx">Interoperability</category></item><item><title>Should Evangelists Be Forced to Unit Test During Their Demos?</title><link>http://blogs.msdn.com/kaevans/archive/2009/04/30/should-evangelists-be-forced-to-unit-test-during-their-demos.aspx</link><pubDate>Thu, 30 Apr 2009 17:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9580831</guid><dc:creator>kaevans</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/kaevans/comments/9580831.aspx</comments><wfw:commentRss>http://blogs.msdn.com/kaevans/commentrss.aspx?PostID=9580831</wfw:commentRss><wfw:comment>http://blogs.msdn.com/kaevans/rsscomments.aspx?PostID=9580831</wfw:comment><description>&lt;P&gt;Last year, my friend DonXML issued a challenge to me:&amp;nbsp; &lt;A href="http://donxml.com/allthingstechie/archive/2008/10/24/Just-Say-No-to-Console-App-Demos.aspx" mce_href="http://donxml.com/allthingstechie/archive/2008/10/24/Just-Say-No-to-Console-App-Demos.aspx"&gt;No more Console.WriteLine demos&lt;/A&gt;, from now on replace those demos with unit tests.&amp;nbsp; Jim Holmes posted about his desire to see &lt;A href="http://frazzleddad.blogspot.com/2009/04/challenge-to-ms-evangelists-real.html" mce_href="http://frazzleddad.blogspot.com/2009/04/challenge-to-ms-evangelists-real.html"&gt;more focus on unit testing from the evangelists&lt;/A&gt; as well.&lt;/P&gt;
&lt;P&gt;Don and Jim: I’ve tried, I really have.&amp;nbsp; I haven’t been successful at it, and haven’t done it consistently.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;During PDC05, watching others present, I realized that I learned much, much more when I watched someone code and explain what they were doing than if they opened a bunch of existing code and tried to explain it.&amp;nbsp; I also found that I learned much, much more when the presenter stayed in Visual Studio and just kept creating than when they showed lots of PowerPoint slides.&amp;nbsp; I decided to say no to pre-baked demos, my demos are almost always coded from scratch.&amp;nbsp; I also try to forego PowerPoint for most presentations, instead firing up Visual Studio and create apps from scratch.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Lately, I am starting to question what people would rather see.&amp;nbsp; Do you really want to see demos start from unit tests, even at the expense of learning new concepts?&lt;/P&gt;
&lt;P&gt;The evals almost always have incredibly high marks with comments praising my deep knowledge of a subject demonstrated by my ability to code it on the fly, even adapt the demo to questions being raised from the audience.&amp;nbsp; This also has the drawback of running out of time or accidentally renaming something I shouldn’t have or missing a configuration switch or simply trying something in front of an audience that I haven’t already practiced.&amp;nbsp;&amp;nbsp;I admit I have also become notorious for trying to pack too much into a short timeframe and trying things that I can’t fully get to work.&amp;nbsp; The guys at Disney joked when one of my demos actually worked the first time (which is why I love screencasts and blogging, because I can make edits that make it look like I was flawless in execution!)&amp;nbsp; The kind of demos I show are how to use Visual Studio to build workflows, create WCF services, develop against SharePoint… none of which can be easily unit tested or even quickly mocked.&amp;nbsp; Admittedly, some of those demos probably could have used unit tests, and probably would have avoided a broken demo or two, but I honestly have a hard time trying to force unit tests into my demos.&lt;/P&gt;
&lt;P&gt;I recently did a talk on Windows Workflow Foundation.&amp;nbsp; I had 90 minutes to try to weave a story of why Windows Workflow Foundation is a valuable technology.&amp;nbsp; It takes time to explain persistence, show it working &lt;EM&gt;in a meaningful way&lt;/EM&gt;, explain tracking, show it working &lt;EM&gt;in a meaningful way&lt;/EM&gt;, explain activities, demo them &lt;EM&gt;in a meaningful way&lt;/EM&gt;.&amp;nbsp; You see, I could just pull up a few samples from the SDK, explain one or two lines of code, and then skip to the next section.&amp;nbsp; Instead, I try to focus on helping attendees understand what they are seeing enough that they can reproduce the demo when they get back to their keyboard.&amp;nbsp; Most of the demos that we give these days focus on things that cause a shift in thought.&amp;nbsp; Cloud services, workflow, identity, Silverlight presentation… It’s difficult to show something that is so fundamentally different from your current way of thinking within the limited time frame, let alone try to pepper in proper coding practices.&amp;nbsp; I showed basic concepts and introduced them to an audience not already familiar with basics, and ended up going way over my allotted time (horrible, horrible, horrible, I do this way too often).&amp;nbsp; If I had mired any further with proper coding techniques, I would barely have introduced the limited amount that I was able to convey.&lt;/P&gt;
&lt;P&gt;I don’t perceive that people come to my talks because I show them how to bullet-proof their code, I perceive that people come to my talks to learn a new concept and be entertained.&amp;nbsp; My wife tells me I am not nearly as funny as I think I am, I think that people come to my talks to learn the concepts more than be entertained :)&amp;nbsp; Am I right?&amp;nbsp; (about learning new concepts, not about the being unfunny part)&lt;/P&gt;
&lt;P&gt;Something I have tried to take to heart is comments that I have seen in evals as well as in blogs that they want evangelists’ demos to &lt;EM&gt;work&lt;/EM&gt;.&amp;nbsp; There’s the balance, because it’s much easier to make a pre-baked demo work because you aren’t doing anything other than highlighting text in the IDE and hitting F5 to compile.&amp;nbsp; I’ve since started practicing my demos and only focusing on things I know how to do really, really well, but some folks have pointed out that they learn a lot by watching me fix things in my demos.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;So the question goes to you, dear readers… what do you expect in a demo?&amp;nbsp; Shiny, flashy graphics?&amp;nbsp; Lots of animation?&amp;nbsp; Deep plumbing?&amp;nbsp; Do you like it when someone pulls up an entire working application and explains a few lines of code, or do you like it when someone codes from scratch but doesn’t achieve nearly as much as a pre-built demo?&amp;nbsp; Do you get disgruntled if the presenter tries something new and can’t get it to work, or do you like exploring new functionality in real time?&amp;nbsp; Do you expect the demo to be polished and flawless, or do you enjoy the rough edges?&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9580831" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/kaevans/archive/tags/Life+at+Microsoft/default.aspx">Life at Microsoft</category></item></channel></rss>