<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Fear and Loathing</title><link>http://weblogs.asp.net/bsimser/default.aspx</link><description>Gonzo blogging from the Annie Leibovitz of the software development world.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bsimser" /><feedburner:info uri="bsimser" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>50.35</geo:lat><geo:long>113.52</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url></image><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fbsimser" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item><title>The Big Dummies Guide for Windows Phone Developer Resources</title><link>http://feedproxy.google.com/~r/bsimser/~3/GZnikjtFsks/the-big-dummies-guide-for-windows-phone-developer-resources.aspx</link><pubDate>Mon, 30 Jan 2012 01:13:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8271678</guid><dc:creator>Bil Simser</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8271678</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8271678</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2012/01/29/the-big-dummies-guide-for-windows-phone-developer-resources.aspx#comments</comments><description>&lt;p&gt;Windows Phone apps are growing in popularity as does the &lt;strike&gt;50,000&lt;/strike&gt; 60,000 apps in the marketplace today. Microsoft has done a great job at putting together &lt;a href="http://create.msdn.com/en-US/education/basics/developer_resources" mce_href="http://create.msdn.com/en-US/education/basics/developer_resources"&gt;some resources&lt;/a&gt; for developers including &lt;a href="http://msdn.microsoft.com/en-us/library/ff402535(VS.92).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff402535(VS.92).aspx"&gt;full documentation&lt;/a&gt;. When you first land on &lt;a href="http://create.msdn.com" mce_href="http://create.msdn.com"&gt;App Hub&lt;/a&gt; there’s all kind of samples, toolkits, and quick starts to get you going.&lt;/p&gt;  &lt;p&gt;This post is to fill in some gaps and direct you to some additional resources that I’ve built up over the last couple of years of building phone apps. I won’t regurgitate the Microsoft resources here, you can get all of those at the App Hub itself. Instead these are other resources that will hopefully be useful.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Toolkits and Utilities&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;What you get out of the box is a lot but there is a lot more to offer out there that others have come up with. Here are a few.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wp7nl.codeplex.com/" mce_href="http://wp7nl.codeplex.com/"&gt;Wp7nl utilities&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s a collection of utilities put together by the Dutch Windows Phone developer community. A lot of great small classes here that you can leverage in your app with some cool controls and new behaviours. It even has NuGet Support so adding it to your project is a no-brainer.&lt;/p&gt;&lt;p&gt;&lt;a href="http://northernlights.codeplex.com/" mce_href="http://northernlights.codeplex.com/"&gt;Northern Lights WP7 Toolkit&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is a nice little set of classes and while not as all-encompassing as others, does have a couple of killer things you must have on your phone. Namely an error reporting system (Little Watson) and a system to let users know of new versions and features. Must have!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agfx.codeplex.com/" mce_href="http://agfx.codeplex.com/"&gt;Agfx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’m always writing code to call HttpRequest (or WebClient), download data from a site, deal with callbacks, then deal with updating my ViewModel. Agfx takes the heavy lifting out of a lot of this and tosses in free caching (with policies you specify like auto-refresh) making it a breeze. Highly recommended for any Windows Phone project that needs data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.codeplex.com/" mce_href="http://silverlight.codeplex.com/"&gt;Silverlight Toolkit for Windows Phone&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is from the Windows team and again, open source, providing you with a dozen or so controls including a frame system that lets your apps look and behave like the core ones, just with one line of code and a few lines of XAML markup on each page.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://tombstonehelper.codeplex.com/" mce_href="http://tombstonehelper.codeplex.com/"&gt;Tombstone Helper&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve always had to write classes and plumbing code when dealing with tombstoning (saving the state of your app). This helper comes as a NuGet package that you can handle all your tombstoning needs with 1 line of code. Simple and easy.&lt;/p&gt;&lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/bd351303-db8c-4771-9b22-5e51524fccd3" mce_href="http://visualstudiogallery.msdn.microsoft.com/bd351303-db8c-4771-9b22-5e51524fccd3"&gt;NotifyPropertyWeaver&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We all hate writing the same boring get/set code for our MVVM properties. Enter this tool. It adds a custom MS Build task to your project and will take care of that for you. Now you just write POCO classes and the rest is handled for you. You're welcome.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ylad.codeplex.com/" mce_href="http://ylad.codeplex.com/"&gt;Your Last About Dialog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tired of writing about dialogs and screens? Install this (via NuGet of course!) and call it with one line of code. Viola. A complete A bout page with your own user definable pivots, license information, credits, etc. You can even load pages remotely and if there’s no network connection no problem, the library will handle it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetbyexample.blogspot.com/2011/10/standard-about-page-for-windows-phone-7.html" mce_href="http://dotnetbyexample.blogspot.com/2011/10/standard-about-page-for-windows-phone-7.html"&gt;About Page Revisited&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another great about page, this one is driven from local resources and requires no coding, just configuration. I use this on some of my apps where I want to programatically hide/show sections of the above page (for example showing a "buy" button&amp;nbsp;but only for trial apps).&amp;nbsp;Nice!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://phoney.codeplex.com/" mce_href="http://phoney.codeplex.com/"&gt;Phoney Tools&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another useful library with a smattering of great controls, helpers, and converters. Drop in, use, profit (okay, the last part might take some work).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mvvmlight.codeplex.com/" mce_href="http://mvvmlight.codeplex.com/"&gt;MVVM Light&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Silverlight apps on Windows Phone 7 greatly benefit from databinding and not the databinding you learned to hate in VB6. This is true, two-way databinding that lets&amp;nbsp; you separate your concerns with your app correctly. MVVM Light is one library that helps do this (you can just use IPropertyNotify on your own classes) but provides other things like behaviours that can be bound to properties for eventing. Very useful.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://caliburnmicro.codeplex.com/" mce_href="http://caliburnmicro.codeplex.com/"&gt;Caliburn Micro&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Another MVVM library that works great with Windows Phone 7 (be sure to get the latest code, the NuGet package at the time of this writing didn’t support Mango and needs to be updated).&lt;/p&gt;&lt;p&gt;&lt;a href="http://nuget.org/packages/SlickThoughtTrialManager" mce_href="http://nuget.org/packages/SlickThoughtTrialManager"&gt;SlickThought TrialManager&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is a great add-on that will help you deal with checking if the phone is in trial mode or not which will let you toggle different features or parts of the UI. An added feature is a simple toggle in your App.xaml file will let you put the app into Trial mode to test things out before sending to the marketplace. I packaged this up into a NuGet package so you can add it to any project quickly but check out the documentation on the project site as to how to use it (it's really easy).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Design&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Design is a huge part of Windows Phone apps looking to capitalize on the Metro Design Language.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jeff.wilcox.name/2011/10/metrogridhelper/" mce_href="http://www.jeff.wilcox.name/2011/10/metrogridhelper/"&gt;Metrogrid Helper&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a simple class that overlays a series of translucent boxes, all evenly spaced, on your app during debug time. It’s invaluable to check the lining up of those controls and titles. By Jeff Wilcox and the Windows Phone team.&lt;/p&gt;&lt;p&gt;&lt;a href="http://ux.artu.tv/?page_id=190" mce_href="http://ux.artu.tv/?page_id=190"&gt;31 Weeks of Windows Phone Design&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The UX design team got into the habit of posting detailed articles on the Metro design language and it's nuances. It's a fascinating deep dive with a ton of great ideas around how the design of Metro apps works and provides some excellent insight into the design process that you can use in your apps.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jeff.wilcox.name/2011/03/metro-design-guide-v1/" mce_href="http://www.jeff.wilcox.name/2011/03/metro-design-guide-v1/"&gt;Metro Design Guide&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft offers a design guide which is great but Jeff Wilcox turns it up to 11 with this post, covering all kinds of implementation tips developers should use before submitting an app.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/01/07/windows-phone-7-design-guidelines-cheat-sheet.aspx" mce_href="http://blogs.msdn.com/b/silverlight_sdk/archive/2011/01/07/windows-phone-7-design-guidelines-cheat-sheet.aspx"&gt;Design Guide Cheatsheet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cheryl Simmons on the Windows Phone team has a great cheatsheet to follow here for all Windows Phone developers. Great tips on a variety of subjects.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://incompetech.com/m/c/royalty-free/collections.html" mce_href="http://incompetech.com/m/c/royalty-free/collections.html"&gt;Royalty free music&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Games for sure need music but nothing stopping you from putting original music into an app. Here are some royalty free resources you can use.&lt;/p&gt;&lt;p&gt;&lt;a href="http://templarian.com/project_windows_phone_icons/" mce_href="http://templarian.com/project_windows_phone_icons/"&gt;Templarian Phone Icons&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Hundreds of great looking Windows Phone icons you can use in your app, app bar, etc. all licensed under Creative Commons.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Development&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jeffblankenburg.com/2010/09/30/31-days-of-windows-phone-7/" mce_href="http://www.jeffblankenburg.com/2010/09/30/31-days-of-windows-phone-7/"&gt;31 Days of Windows Phone&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jeff Blanketburg took it upon himself to post 31 days of Windows Phone tips that covers all the basics you need to get going. Each post is deep on each topic and a recommended read to get into any of the core controls and features for building WP7 apps.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.jeffblankenburg.com/2011/10/31/31-days-of-mango/" mce_href="http://www.jeffblankenburg.com/2011/10/31/31-days-of-mango/"&gt;31 Days of Mango&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The last update for Windows Phone called Mango added all kinds of great new features like live tiles, search integration, running under lock screens, etc. Jeff comes back with 31 more days for Mango specific features.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mstruys.com/2012/01/19/messagebox-navigation-and-application-life-cycle/" mce_href="http://mstruys.com/2012/01/19/messagebox-navigation-and-application-life-cycle/"&gt;MessageBox and Application Lifecycle&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This can be tricky when you’re trying to not only pass certification but manage popups and screens. Here’s a post to help you through that.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://jesseliberty.com/windows-from-scratchindex/" mce_href="http://jesseliberty.com/windows-from-scratchindex/"&gt;Windows From Scratch&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Jesse Liberty, another huge name in the Windows Phone arena, has a whole set of tutorials focused on single tasks (currently over 30 of them). Great stuff and very useful!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.adamnathan.net/" mce_href="http://blog.adamnathan.net/"&gt;101 Windows Phone Apps&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Adam Nathan did the community a solid by creating 101 Windows Phone apps, then writing two books on it (there’s only enough room in a single book). Each app is detailed in a separate blog post on his site and covers various types of apps you would build with WP7 like stop watches, calendars, to do lists, and more.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Internationalization&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Phone is everywhere, not just English speaking nations!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://nanapho.jp/archives/2011/11/how-to-make-your-app-pinworthy-in-japanese-market/" mce_href="http://nanapho.jp/archives/2011/11/how-to-make-your-app-pinworthy-in-japanese-market/"&gt;Make your apps Kanji-friendly&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A nice post on how your app can be more recognizable and (perhaps) popular in the Japanese markets. With Nokia phones hitting the marketplace, this tip is invaluable to reach out beyond your own backyard.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff637522(v=vs.92).aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff637522(v=vs.92).aspx"&gt;Globalization and Localization for your Phone&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A great MSDN article (actually a series of them) that walks you through setting up localization for multiple languages. It’s easy and even if you only support one language, do this so all your strings are in a resource file and not hard coded for easy updates.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Achievements&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you’re building a game or even want to incorporate leaderboards and achievements into your phone app look no further.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mogade.com/" mce_href="http://mogade.com/"&gt;Mogade&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a free and open source solution with a back-end server to keep track of your own user defined leaderboards and achievements. You define it on the site and with a few simple calls in your code, upload scores and award achievements to users and display global leaderboards in your app. Silverlight and XNA samples available to get you started.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Marketing&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Building your app is just part of the process, then comes getting it out to the masses and keeping the word out.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wp7appsite.codeplex.com/" mce_href="http://wp7appsite.codeplex.com/"&gt;Windows Phone 7 App Site Template&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is a complete one-page site template that’s completely data driven. You just make some modifications to the app name, provide some screenshots, deep links, etc. and you’re good to go. There’s even integrated Twitter and Uservoice support.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.adamnathan.net/2010/11/04/MarketplaceTipsForWindowsPhone7DevelopersTheGoodTheBadAndTheUgly.aspx" mce_href="http://blog.adamnathan.net/2010/11/04/MarketplaceTipsForWindowsPhone7DevelopersTheGoodTheBadAndTheUgly.aspx"&gt;Marketplace Tips&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Adam Nathan puts together his own personal tips for submitting to the marketplace. Feel free to use this as a checklist. I do.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Training&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.goodcat-trainings.net/" mce_href="http://www.goodcat-trainings.net/"&gt;Free Windows Phone Training&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No, this isn’t a link to some overpriced course. It’s a link to over 20 hours of free video training put together by Peter Kuhn. The videos include complete source code and walk through all the aspects of building Windows Phone apps from soup to nuts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Tools are any part of a good developers kit and there’s no shortage of them for Windows Phone developers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://firstfloorsoftware.com/silverlightspy/" mce_href="http://firstfloorsoftware.com/silverlightspy/"&gt;Silverlight Spy&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Think of it as Firebug for your phone. Why are you still reading this?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://istool.codeplex.com/" mce_href="http://istool.codeplex.com/"&gt;Isolated Storage Explorer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wondering if you’re writing the right thing to your phone or want to take a look at where things are going in your app? This tool lets you peek inside the storage system for you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.innovativetechguy.com/?p=164#awp::?p=164" mce_href="http://www.innovativetechguy.com/?p=164#awp::?p=164"&gt;Windows Phone Screenhot Tool&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is an awesome tool and installs with ClickOnce so you always have the latest version. It lets you take screenshots effortlessly with or without an emulator skin so you can do cool shots for your blog and take the final images for the marketplace.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wp7emuskinswitcher.codeplex.com/" mce_href="http://wp7emuskinswitcher.codeplex.com/"&gt;Emulator Skin Changer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Bored with the out of the box emulator every time you launch it from Visual Studio? This tool let’s you change up the skin to something more sexy and fun, all with the click of a button. Be the cool kid at your next Windows Phone presentation and amaze your friends!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Monetization&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://create.msdn.com/en-US/education/basics/ads" mce_href="http://create.msdn.com/en-US/education/basics/ads"&gt;Microsoft Advertising Services&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microsoft has continued to expand it’s monetization services by offering up ads in new markets (and markets are being added regularily). Various reports have different successes with these services but they’re baked into the Mango SDK and easy to setup and use.&lt;/p&gt;  &lt;p&gt;This is by far a complete list so please leave a comment with more links, suggestions, and corrections as you see them. I’ll update the post as quickly as I can.&lt;/p&gt;  &lt;p&gt;Now, go get building your first Windows Phone app!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8271678" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uap2u05HROe7cZanVNdbFYhjbLA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uap2u05HROe7cZanVNdbFYhjbLA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uap2u05HROe7cZanVNdbFYhjbLA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uap2u05HROe7cZanVNdbFYhjbLA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=GZnikjtFsks:8CNKrh0X-oA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=GZnikjtFsks:8CNKrh0X-oA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=GZnikjtFsks:8CNKrh0X-oA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=GZnikjtFsks:8CNKrh0X-oA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/WP7/default.aspx">WP7</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2012/01/29/the-big-dummies-guide-for-windows-phone-developer-resources.aspx</feedburner:origLink></item><item><title>Visual Studio Achievements - Remember Kids They're Just For Fun</title><link>http://feedproxy.google.com/~r/bsimser/~3/9U9csuOBZlY/visual-studio-achievements-they-re-just-for-fun.aspx</link><pubDate>Wed, 18 Jan 2012 17:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8262427</guid><dc:creator>Bil Simser</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8262427</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8262427</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2012/01/18/visual-studio-achievements-they-re-just-for-fun.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I followed a neat project for the last couple of months which today became a reality, &lt;A href="http://channel9.msdn.com/Blogs/C9Team/Announcing-Visual-Studio-Achievements" mce_href="http://channel9.msdn.com/Blogs/C9Team/Announcing-Visual-Studio-Achievements"&gt;Visual Studio Achievements&lt;/A&gt;. Achievements are something the gaming world are very familiar with. They're milestones of recognition to meet like "Blowing up 30 Enemies with 1 Grenade"&amp;nbsp;or "Destroy a Super Tank playing the Classic Game". There are&amp;nbsp;a lot&amp;nbsp;of sites around the Internet to track them including one dedicated to just XBox 360 ones &lt;A href="http://www.xbox360achievements.org/" mce_href="http://www.xbox360achievements.org"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;They're fun and you get a bit of an internal high when you see this on your screen:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 325px; HEIGHT: 69px" src="http://weblogs.asp.net/blogs/bsimser/achievement.jpg" width=325 height=69 mce_src="http://weblogs.asp.net/blogs/bsimser/achievement.jpg"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Visual Studio Achievements follows the same idea and, once installed, are based on your activity as you work. Achievements are measured and discovered in the background when&amp;nbsp;you compile. And hey, it's cool and fun to see this after a compile:&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 524px; HEIGHT: 315px" src="http://files.channel9.msdn.com/thumbnail/5a978ac6-1889-486c-8cef-43060baa8d1c.png" width=524 height=315 mce_src="http://files.channel9.msdn.com/thumbnail/5a978ac6-1889-486c-8cef-43060baa8d1c.png"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;However when you look through the list of achievements one thing jumps out to those that try to follow good coding practices. These are certainly not that. In fact if I caught you writing a class with 10 levels&amp;nbsp;of inheritance I would rip you a new one at the next daily stand up that would make even the likes of Gordon Ramsay shake in his knees.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Ahh but you say these are for fun. Yes, yes they are and far from me to be the party pooper. What sparked me to write this blog response is to emphasize F-U-N and not practice. Seriously you won't believe (or maybe you will) how many developers I talked to around me that thought this was a cool thing to install in their work environment.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Wait. Let's think about this for a minute.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Install achievemnts add-on in work environment.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Do work&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Get achievment&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;Okay, the first step is fine. The second step is what we do. The third step? Hang on. Didn't I just say that having 10 levels of inheritance is a bad thing? So if you get the achievement during your daily work it should be a *bad* thing, not something to celebrate. &lt;/P&gt;
&lt;P mce_keep="true"&gt;It's like breaking the build (which we all do at some point and certainly people get ridiculed for it, it's all fun right). Breaking the build is a bad thing but it's a good spin. It means we recognize something went wrong and whatever mechanism you have to let you know (since everyone on the team should get notified) means you get up, rally around, and fix the problem. Good stuff. Build fixed, work continues.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Where's the rallying here? The only thing that will happen is the dev will see the achievement, pat himself on the back and have a chuckle then what? What *should* happen if you installed this and got an achievment should be:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Do work&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Get achievement&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Chuckle&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Silently say "Oh shit"&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Fix problem&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Lather, Rinse, Repeat&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;Hopefully this is the case, but again I've asked a few people and they miss the point of the fun aspect here. This shouldn't be something you strive to achieve, the achievements here (as they stand currently) should be something to avoid. In fact it should set of an internal&amp;nbsp;whoop-whoop alarm and cause you to think "What the Hell was I thinking".&lt;/P&gt;
&lt;P mce_keep="true"&gt;Before you dismiss me, I'm all for fun. I'm the guy that has robot zombies and&amp;nbsp;posters of Close Encounters&amp;nbsp;in my cubicle and challenges developers to games of magnetic Angry Birds after stand-up. I'm all that. However I just want people to be aware that this is fun and there might be&amp;nbsp;a message here. Keep focused on good practices and not bad ones. In the game achievement world, we *try* to achieve these tasks. Heck when I get a game and I'm bored I look through the achievements and set myself up to try to accomplish it (mostly failing since I literally suck at almost every game). &lt;/P&gt;
&lt;P mce_keep="true"&gt;However developers should not be looking at these achievements as something they should be striving for (except just to get the achievement and make it onto the site). What would I really like to see? Some actual achievements that developers can strive for and be proud to achieve. How about "Eliminate 10% of the codebase without removing functionality"&amp;nbsp;or "Mock a service and pass 10 unit tests against it" as achievements. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Herein lies the real problem though. Getting the *fun* achievements is easy. They're tangible and simple to measure. How do you measure "good code"? Can you scan code with a computer&amp;nbsp;and determine separation of concern? Or if your code follows &lt;A href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod" mce_href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"&gt;SOLID principles&lt;/A&gt; or not? Somethings are&amp;nbsp;detectable&amp;nbsp;but most of the good stuff is not.&amp;nbsp;That's the real trick here (and if you figure it out in a system where you can automatically detect it and award and achievment for, all the better).&lt;/P&gt;
&lt;P mce_keep="true"&gt;Like I said, have fun with this addon. It's neat and I applaud the developers for coming up with it. I don't discourage its use&amp;nbsp;but keep in mind what it is and what the message behind it is. Hopefully one day with might have some positive achievements to strive for as well as the fun ones.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8262427" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pUiMWt09OTvm-ERO35siWb5kp9I/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pUiMWt09OTvm-ERO35siWb5kp9I/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pUiMWt09OTvm-ERO35siWb5kp9I/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pUiMWt09OTvm-ERO35siWb5kp9I/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9U9csuOBZlY:AppF4-Yh-TU:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9U9csuOBZlY:AppF4-Yh-TU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9U9csuOBZlY:AppF4-Yh-TU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9U9csuOBZlY:AppF4-Yh-TU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2012/01/18/visual-studio-achievements-they-re-just-for-fun.aspx</feedburner:origLink></item><item><title>The Big Dummies Guide to Building a SharePoint Internet Site</title><link>http://feedproxy.google.com/~r/bsimser/~3/9kU40jwWNC8/the-big-dummies-guide-to-building-a-sharepoint-internet-site.aspx</link><pubDate>Fri, 06 Jan 2012 14:42:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8228335</guid><dc:creator>Bil Simser</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8228335</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8228335</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2012/01/06/the-big-dummies-guide-to-building-a-sharepoint-internet-site.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;I'm about to embark on a new project, building a SharePoint based Internet site. This is new for me as all the SharePoint work I've done has been Intranet facing and I know there are some challenges with SharePoint and outward facing sites. So I called on a few MVP friends and people that have some real world experience configuring SharePoint for Internet to see if I could come up with a list of tips, tricks, and things to watch out for.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;IMG style="WIDTH: 240px; HEIGHT: 241px" src="http://weblogs.asp.net/blogs/bsimser/dummies.png" width=240 height=241 mce_src="http://weblogs.asp.net/blogs/bsimser/dummies.png"&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Search Engine Optimization&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Out of the box URLs are not SEO friendly, you need a custom solution&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Jie Li, a program manager on the SharePoint team, has a great collection of &lt;A href="http://blogs.msdn.com/b/opal/archive/2010/04/23/sharepoint-2010-search-engine-optimization-seo-tips.aspx" mce_href="http://blogs.msdn.com/b/opal/archive/2010/04/23/sharepoint-2010-search-engine-optimization-seo-tips.aspx"&gt;tips for optimzing your search engine face&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;For creating short urls (like bit.ly, tinyurl.com, etc.) Waldek Mastykarz has &lt;A href="http://blog.mastykarz.nl/4-ways-short-urls-sharepoint-server-2010/" mce_href="http://blog.mastykarz.nl/4-ways-short-urls-sharepoint-server-2010/"&gt;4 ways to use short urls&lt;/A&gt; (which will help with the SEO)&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;HTML/HTML5&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Out of the box HTML is somewhat horrible and not very optimized for Internet sites&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;If you want make SharePoint to output native HTML5 pages and get validated, then the answer is no. SharePoint 2010 is designed to output content in XHTML 1.0 natively.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;
&lt;DIV mce_keep="true"&gt;I *always* start with &lt;A href="http://startermasterpages.codeplex.com/" mce_href="http://startermasterpages.codeplex.com/"&gt;Randy Drisgills master pages&lt;/A&gt; on new Web Apps. They're clean, optimized, and easy to use. Highly recommended.&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Randy Drisgill has &lt;A href="http://blog.drisgill.com/2010/09/html5-and-sharepoint-2010-and-ie9-beta.html" mce_href="http://blog.drisgill.com/2010/09/html5-and-sharepoint-2010-and-ie9-beta.html"&gt;a post about HTML5 compatibility&lt;/A&gt; although it was for IE9 beta and hasn't been updated, but still contains some good info.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Kyle Schaeffer has a new "responsive" &lt;A href="http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/" mce_href="http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/"&gt;HTML5 master page for 2010&lt;/A&gt; that seems to have a lot of popularity so might be a good place to start from (or combine it with Randy's master pages)&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Multilingual Support&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?ID=366" mce_href="http://sharepoint.microsoft.com/blogs/GetThePoint/Lists/Posts/Post.aspx?ID=366"&gt;A good, detailed post by Serge Tremblay&lt;/A&gt; on setting up, configuring, and supporting multiple languages in SharePoint&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://technet.microsoft.com/en-us/library/cc262055.aspx" mce_href="http://technet.microsoft.com/en-us/library/cc262055.aspx"&gt;The Planning for Multiple Language support&lt;/A&gt; series of articles from Microsoft which is a good starting point&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ff800886.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ff800886.aspx"&gt;An MSDN article on using MUI support&lt;/A&gt; with examples on changing and setting languages, good for writing custom JavaScript to let users toggle the language selection&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Hardening&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Use ViewFormPagesLockdown to prevent access to system pages. It's still used in 2010 and turned on by default with publishing sites. Here's &lt;A href="http://blogs.msdn.com/b/russmax/archive/2010/01/22/lockdown-mode-in-sharepoint-2010.aspx" mce_href="http://blogs.msdn.com/b/russmax/archive/2010/01/22/lockdown-mode-in-sharepoint-2010.aspx"&gt;a blog post from the support team&lt;/A&gt; with some information about it.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;TechNet has an article about &lt;A href="http://technet.microsoft.com/en-us/library/cc263468(office.12).aspx" mce_href="http://technet.microsoft.com/en-us/library/cc263468(office.12).aspx"&gt;securing your farm for anonymous access&lt;/A&gt;. Unfortunately it's for SharePoint 2007 so some (most?) aspects might not apply to SharePoint 2010.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;WCAG/508c&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;The Web Content Accessibility Guidelines 2.0 are the internationally accepted standard for web accessibility so you might want to look at providing this for your Internet facing site.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;SharePoint 2010 is WCAG 2.0 AA compliant&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.w3.org/WAI/ER/tools/complete" mce_href="http://www.w3.org/WAI/ER/tools/complete"&gt;Complete list of Web Accessiblity Compliance tools&lt;/A&gt; can be found here&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Mobile Support&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;The out of the box mobile experience doesn't support anonymous users, which is the standard for Internet sites. Waldek has &lt;A href="http://blog.mastykarz.nl/inconvenient-sharepoint-2010-mobile-redirect/" mce_href="http://blog.mastykarz.nl/inconvenient-sharepoint-2010-mobile-redirect/"&gt;one workaround here&lt;/A&gt;.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;SQL&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;A fairly in-depth blog post about &lt;A href="http://coreboarder.blogspot.com/2010/07/sharepoint-2010-optimization-start-with.html" mce_href="http://coreboarder.blogspot.com/2010/07/sharepoint-2010-optimization-start-with.html"&gt;optimizing the SQL side of things&lt;/A&gt; while making SharePoint peform better.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;General&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Mavention has a nice &lt;A href="http://blog.mastykarz.nl/check-quality-internet-facing-website-mavention-sharepoint-2010-site-checker/" mce_href="http://blog.mastykarz.nl/check-quality-internet-facing-website-mavention-sharepoint-2010-site-checker/"&gt;site checking tool&lt;/A&gt; that's specific for SharePoint 2010. Highly recommended.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Elizabeth Olson, a Program Manager for SharePoint, presented at MIX10 on designing an internet facing site in SharePoint. Here's the &lt;A href="http://channel9.msdn.com/events/MIX/MIX10/PR02" mce_href="http://channel9.msdn.com/events/MIX/MIX10/PR02"&gt;45 minute video&lt;/A&gt; of that session.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;As this is an Internet facing site you'll probably want to hook up some kind of tracking system so you can produce nice stats for the suits. &lt;A href="http://www.google.com/analytics/" mce_href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/A&gt; is a good start but feel free to use any tool. They all hook in usually through a simple piece of JavaScript you can add into your master page.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Features&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.sharepointpromag.com/article/sharepoint/web-part-content-query-building-custom-wcm-sites-sharepoint-2010-140780" mce_href="http://www.sharepointpromag.com/article/sharepoint/web-part-content-query-building-custom-wcm-sites-sharepoint-2010-140780"&gt;Using the Content By Query Web Part in anonymous sites&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.sharepointpromag.com/article/sharepoint/enable-user-rating-building-custom-wcm-sites-sharepoint-2010-140781" mce_href="http://www.sharepointpromag.com/article/sharepoint/enable-user-rating-building-custom-wcm-sites-sharepoint-2010-140781"&gt;Allow anonymous users to rate your content&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Performance&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;As far as SharePoint and Internet sites you could probably write an entire book on just performance. There are so many things to take into consideration, both on the SharePoint side (configuration wise of the site) and the IIS one. Watch out for content and customization issues though, as they're not directly SharePoint related but people will blame SharePoint for issues. Things like large articles, missized images, unoptimized JavaScript, long running scripts, etc. can all lead to performance issues that have nothing to do with SharePoint.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Some tips on how to &lt;A href="http://www.sharepointpromag.com/article/sharepoint/page-size-building-custom-wcm-sites-sharepoint-2010-140779" mce_href="http://www.sharepointpromag.com/article/sharepoint/page-size-building-custom-wcm-sites-sharepoint-2010-140779"&gt;Reduce page size&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.fiddler2.com/fiddler2/" mce_href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/A&gt; is an invaluable tool to see your pages load times&amp;nbsp;(and tracking down errors)&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://developer.yahoo.com/yslow/" mce_href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/A&gt; shows you where bottlenecks are in page loads and helps you optimize them&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.sharepointnutsandbolts.com/2011/01/eliminating-large-js-files-to-optimize.html" mce_href="http://www.sharepointnutsandbolts.com/2011/01/eliminating-large-js-files-to-optimize.html"&gt;Eliminating large JavaScript files&lt;/A&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa589700.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa589700.aspx"&gt;Custom caching to optimize your sites&lt;/A&gt;. Good information with pros and cons of the different types of caching.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;&lt;A href="http://www.wictorwilen.se/Post/Minifying-custom-JavaScript-files-in-SharePoint-2010.aspx" mce_href="http://www.wictorwilen.se/Post/Minifying-custom-JavaScript-files-in-SharePoint-2010.aspx"&gt;Minifying custom JavaScript files&lt;/A&gt;. Nice article by Wictor. Use any tool you need to or the built in one in Visual Studio to do this. &lt;A href="http://minifyjavascript.com/" mce_href="http://minifyjavascript.com/"&gt;JavaScript compressor&lt;/A&gt; will do this for you.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Here's the article for &lt;A href="http://msdn.microsoft.com/en-us/library/bb727371(v=office.12).aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb727371(v=office.12).aspx"&gt;optimizing the web content management site&lt;/A&gt; but it's for SharePoint 2007. Not sure how much is relevant in 2010.&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Chris O'Brien has a nice &lt;A href="http://www.sharepointnutsandbolts.com/2009/06/my-checklist-for-optimizing-sharepoint.html" mce_href="http://www.sharepointnutsandbolts.com/2009/06/my-checklist-for-optimizing-sharepoint.html"&gt;checklist for optimizing SharePoint sites&lt;/A&gt;&amp;nbsp;like this although much of it is written for SharePoint 2007, but some is universal and works for 2010&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV mce_keep="true"&gt;Joel Oleson did a great presentation on optimizing SharePoint 2010. Here's a &lt;A href="http://www.aptimize.com/Upload/docs/SharePoint-Performance-Optimization-10-Steps.pdf" mce_href="http://www.aptimize.com/Upload/docs/SharePoint-Performance-Optimization-10-Steps.pdf"&gt;PDF of that presentation&lt;/A&gt;.&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;This list is far from complete and should be an evolutionary thing as it's just what I've collected myself. Do you have experience building SharePoint sites on the Internet? What kind of issues did you come across? Feel free to leave comments with your experience, links to your blog, etc. I'll update this list with that information.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Enjoy!&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8228335" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Xucn5s_17TyfL6OfSX2bhnkOH1U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xucn5s_17TyfL6OfSX2bhnkOH1U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Xucn5s_17TyfL6OfSX2bhnkOH1U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Xucn5s_17TyfL6OfSX2bhnkOH1U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9kU40jwWNC8:gERzquoXMiA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9kU40jwWNC8:gERzquoXMiA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=9kU40jwWNC8:gERzquoXMiA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=9kU40jwWNC8:gERzquoXMiA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2012/01/06/the-big-dummies-guide-to-building-a-sharepoint-internet-site.aspx</feedburner:origLink></item><item><title>Some JSON Resources For You</title><link>http://feedproxy.google.com/~r/bsimser/~3/0p9oV8qJwuc/some-json-resources-for-you.aspx</link><pubDate>Thu, 15 Dec 2011 17:37:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8127756</guid><dc:creator>Bil Simser</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8127756</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8127756</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/12/15/some-json-resources-for-you.aspx#comments</comments><description>&lt;p&gt;As a developer I really dig JSON over XML for information exchange. It's clean, simple, and just works. I don't have to deal with complicated schema validation, reams of unreadable encoded text, and hierarchies that make no sense. I prefer to consume in apps and more and more services offer it up natively these days. Here are a few key tools I use that you might fun value-add in your dealings with JSON.&lt;/p&gt;&lt;p&gt;Hmm... is it JSON or Json? Anyway, here's a short list. &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://json.codeplex.com/" mce_href="http://json.codeplex.com/"&gt;Json.NET&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;IMHO this is the key library for working with JSON. Yes, you can do some native de-serialization with .NET but the Json.NET library makes reading and writing JSON easy. You can de-serialize a JSON response with one line of code and suck it into a set of C# classes (or use the JObject class itself to pluck values out directly). If you're really hung up on the angle brackets, Json.NET can translate your JSON to and from XML (but that would be silly). Highly recommended and it even comes as a Nuget package so nothing to download and unzip!&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://jsonformat.com/" mce_href="http://jsonformat.com/"&gt;JSON Format&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Getting JSON and trying to look at it can be painful. Sure, it's a human readable format but sometimes it comes as a big gobbly-gook glob of text if the API returns your data with the whitespace compressed (to reduce the size of the package). This online tool lets you paste in a JSON string and reformat it into something more readable. Bonus feature is you can just plug in a URL that returns the data in JSON format as well. Handy.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://http://jsonclassgenerator.codeplex.com/" mce_href="http://http://jsonclassgenerator.codeplex.com/"&gt;JSON C# Class Generator&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Of course if you consume JSON with the Json.NET library one very slick feature is a single line of code to de-serialize it into a C# class. Here's an example:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;var records = JsonConvert.DeserializeObject&amp;lt;RecordModel&amp;gt;(someDownloadedString);&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;The variable "records" will now be a complete object graph of your JSON (including child objects de-serialized into arrays, lists, or whatever your collection type is). For this to work you need some classes of course. They're simple to write and are just POCO but do have to match up with the structure of the JSON so it can be tricky creating them and a tiresome task.&lt;/p&gt;&lt;p&gt;Enter the JSON C# Class Generator project. This is a GUI tool that you plunk your JSON into, set some properties and generate a series of C# classes you can link into your project and perform the online-line-de-serialization above. Pretty nice and supports a lot of features plus it's open source to boot.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://json2csharp.com/" mce_href="http://json2csharp.com/"&gt;json2csharp&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Going one step better (or worse depending on your point of view) is the online version of a similar tool. With the json2csharp site, you can either enter the JSON data directly or enter the URL and it'll fetch it for you. The class generation is simple (as it should be) with no options but it's nice as you don't have to download/install anything. I did find a few JSON APIs that didn't work with this one but did work with the formatter so in that case I had to enter the URL in the formatter to get the JSON, then plunk the data into this tool to get my classes. In any case, it's way better to use tools like these rather than writing the classes yourself (again, my opinion, your mileage may vary).&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/jsonview/" mce_href="https://addons.mozilla.org/en-US/firefox/addon/jsonview/"&gt;JSONView&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;If you're using JSON and looking for a quick hit to see your data, look no further than JSONView, a Firefox add-on that will format the JSON data output for you. Once installed, just visit the URL to your JSON data and the output will render in the browser. That's as simple as it can get. No mess, no fuss.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;a href="http://weblogs.asp.net/bsimser/archive/2011/04/21/mediawiki-wp7-and-json-together-again-for-the-first-time.aspx" mce_href="http://weblogs.asp.net/bsimser/archive/2011/04/21/mediawiki-wp7-and-json-together-again-for-the-first-time.aspx"&gt;Shameless Plug&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;There are a lot of tutorials out there on using some of these tools, including one shameless plug of my own. Here's a blog entry I wrote on consuming MediaWiki's content in JSON format. MediaWiki is the software powering Wikipedia (along with a ton of other wiki sites). It walks through using the Json.NET library and navigating around Wikipedia using the data in JSON created classes.&lt;/p&gt;&lt;p&gt;Got more resources? Post them in the comments if you have some other JSON related resources and I'll update the post with them. Until then, enjoy!&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8127756" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CMY-a3Tdm7PyiYgrWB8B2_4wahk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMY-a3Tdm7PyiYgrWB8B2_4wahk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CMY-a3Tdm7PyiYgrWB8B2_4wahk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CMY-a3Tdm7PyiYgrWB8B2_4wahk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=0p9oV8qJwuc:vDO1uuPoQV8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=0p9oV8qJwuc:vDO1uuPoQV8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=0p9oV8qJwuc:vDO1uuPoQV8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=0p9oV8qJwuc:vDO1uuPoQV8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/C_2300_/default.aspx">C#</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/12/15/some-json-resources-for-you.aspx</feedburner:origLink></item><item><title>Prairie Dev Con West - Sessions Announced and Registration Open!</title><link>http://feedproxy.google.com/~r/bsimser/~3/F9ciDHwkal8/prairie-dev-con-west-sessions-announced-and-registration-open.aspx</link><pubDate>Mon, 05 Dec 2011 14:23:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8093272</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8093272</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8093272</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/12/05/prairie-dev-con-west-sessions-announced-and-registration-open.aspx#comments</comments><description>&lt;p&gt;I’m thrilled to announce that the Prairie Dev Con West folks have posted sessions and speakers on their site, and opened registration for &lt;a href="http://www.prairiedevcon.com" mce_href="http://www.prairiedevcon.com"&gt;Prairie Developer Conference West&lt;/a&gt;!&lt;br&gt;&lt;br&gt;&lt;b&gt;Three Days of Fantastic Sessions!&lt;/b&gt;&lt;br&gt;Prairie Dev Con West happens March 13 – 15, and will be three days of software development, IT Pro, and Agile sessions delivered by &lt;a href="http://www.prairiedevcon.com/speakers" mce_href="http://www.prairiedevcon.com/speakers"&gt;world class speakers and experts&lt;/a&gt; in the technical industry! We’ve currently posted 45 of the 72 sessions we’ll be providing, so check out what’s on the site and check back over the next few weeks as we fill out &lt;a href="http://www.prairiedevcon.com/sessions" mce_href="http://www.prairiedevcon.com/sessions"&gt;the session list&lt;/a&gt;!&lt;br&gt;&lt;br&gt;&lt;b&gt;Carl Franklin and Richard Campbell’s .NET Rocks Show LIVE at Prairie Dev Con!&lt;/b&gt;&lt;br&gt;We’re excited to have Carl Franklin and Richard Campbell attend the conference! They’ll be presenting sessions, but also doing an episode of their &lt;a href="http://www.dotnetrocks.com/" mce_href="http://www.dotnetrocks.com/"&gt;.NET Rocks internet show&lt;/a&gt; live from the conference!&lt;/p&gt;&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/images.jpg" mce_src="http://weblogs.asp.net/blogs/bsimser/images.jpg" height="194" width="260"&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Pre Conference Workshops!&lt;/b&gt;&lt;br&gt;We have two &lt;a href="http://www.prairiedevcon.com/Workshops" mce_href="http://www.prairiedevcon.com/Workshops"&gt;pre-conference workshops&lt;/a&gt; happening on Monday, March 12th! Dylan Smith will be doing a full day on “Creating Powerful Build and Deploy Processes with TFS Build” and Bil Simser will be doing “Windows Phone 7 Developer Workshop”! Both of these guys are respected experts in their field and we’re very proud to be able to offer these workshops.&lt;br&gt;&lt;br&gt;Attending either workshop is $399.99, but you can get 50% off if you bundle a workshop with a conference registration!&lt;br&gt;&lt;br&gt;&lt;b&gt;Early Bird Pricing!&lt;/b&gt;&lt;br&gt;Registration is now open! For the month of December you can register at our early bird price of $499.99, which is $300 off the regular price! Also, groups of 3 or more get an additional $50 off each registration!&lt;br&gt;&lt;br&gt;You can &lt;a href="http://www.prairiedevcon.com/Registration" mce_href="http://www.prairiedevcon.com/Registration"&gt;register online&lt;/a&gt; or request an invoice.&lt;br&gt;&lt;br&gt;&lt;b&gt;Hotel and Venue!&lt;/b&gt;&lt;br&gt;The conference will be held at the &lt;a href="http://www.prairiedevcon.com/About" mce_href="http://www.prairiedevcon.com/About"&gt;TELUS Convention Centre&lt;/a&gt;, and the official conference hotel is the Calgary Marriott right next door! We have a limited number of hotel rooms at a conference rate of $209.00 a night, so book your hotel accommodations early! Call 1-800-896-6878 and mention Prairie Developer Conference when booking.&lt;br&gt;&lt;br&gt;&lt;b&gt;Keep In Touch!&lt;/b&gt;&lt;br&gt;Please let me know if you have any questions or comments! There’s many ways to connect with the conference and receive announcements/updates:&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Twitter: &lt;a href="https://twitter.com/prairiedevcon" mce_href="https://twitter.com/prairiedevcon"&gt;https://twitter.com/prairiedevcon&lt;/a&gt; (We’re also using #PrDCWest as the conference hashtag)&lt;/li&gt;&lt;li&gt;Blog: &lt;a href="http://prairiedevcon.blogspot.com/" mce_href="http://prairiedevcon.blogspot.com/"&gt;http://prairiedevcon.blogspot.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Email: &lt;a href="mailto:darcy@prairiedevcon.com" mce_href="mailto:darcy@prairiedevcon.com"&gt;darcy@prairiedevcon.com&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;Join us!&lt;/b&gt;&lt;br&gt;Prairie Dev Con West will be *the* technology event to attend in Alberta in 2012! In addition to the three days of fantastic sessions by amazing speakers, there are a number of community events being planned the week of the conference! You’ll definitely want to be in Calgary this March to be part of it!&lt;br&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8093272" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D57k8lOesp9mFJ0MKS4d4rS3knw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D57k8lOesp9mFJ0MKS4d4rS3knw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D57k8lOesp9mFJ0MKS4d4rS3knw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D57k8lOesp9mFJ0MKS4d4rS3knw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=F9ciDHwkal8:wSnUTJzejuY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=F9ciDHwkal8:wSnUTJzejuY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=F9ciDHwkal8:wSnUTJzejuY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=F9ciDHwkal8:wSnUTJzejuY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Speaking/default.aspx">Speaking</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/WP7/default.aspx">WP7</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/12/05/prairie-dev-con-west-sessions-announced-and-registration-open.aspx</feedburner:origLink></item><item><title>Do We Indeed Have a Future? George Takei on Star Wars.</title><link>http://feedproxy.google.com/~r/bsimser/~3/wjiAI_187Lc/do-we-indeed-have-a-future-george-takei-on-star-wars.aspx</link><pubDate>Sun, 20 Nov 2011 14:38:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8065967</guid><dc:creator>Bil Simser</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8065967</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8065967</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/11/20/do-we-indeed-have-a-future-george-takei-on-star-wars.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.georgetakei.com/" mce_href="http://www.georgetakei.com/"&gt;George Takei&lt;/a&gt; (rhymes with Okay), probably best known for playing Hikaru Sulu
 on the original Star Trek, has always had deep concerns for the present and the 
future. Whether on Earth or among the stars, he has the welfare of 
humanity very much at heart. &lt;/p&gt;&lt;p&gt;I was digging through my old copies 
of Famous Monsters of Filmland, a great publication on monster and films
 that I grew up with, and came across this. This was his reaction to 
STAR WARS from issue 139 of Famous Monsters of Filmland and was written 
June 6, 1977. It is reprinted here without permission but I hope since 
the message is still valid to this day and has never been reprinted 
anywhere, nobody will mind me sharing it. &lt;br&gt;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;STAR WARS is the most pre-posterously diverting galactic escape 
and at the same time the most hideously credible portent of the future 
yet.&lt;/p&gt;&lt;p&gt;While I thrilled to the exploits that reminded me of the 
heroics of Errol Flynn as Robin Hood, Burt Lancaster as the Crimson 
Pirate and Buster Crabbe as Flash Gordon, I was at the same time aghast 
at the phantasmagoric violence technology can place at our disposal. 
STAR WARS raised in my mind the question - do we indeed have a future?&lt;/p&gt;&lt;p&gt;It
 seems to me what George Lucas has done is to masterfully guide us on a 
journey through space and time and bring us back face to face with 
today's reality. STAR WARS is more than science fiction, I think it is 
science fictitious reality.&lt;/p&gt;&lt;p&gt;Just yesterday, June 7, 1977, I read 
that the United States will embark on the production of a neutron bomb -
 a bomb that will kill people on a gigantic scale but will not destroy 
buildings. A few days before that, I read that the Pentagon is fearful 
that the Soviets may have developed a warhead that could neutralize ours
 that have a capacity for that irrational concept overkill to the nth 
power. Already, it seems we have the technology to realize the awesome 
special effects simulations that we saw in the film.&lt;/p&gt;&lt;p&gt;The political
 scene of STAR WARS is that of government by force and power, of 
revolutions based on some unfathomable grievance, survival through a 
combination of cunning and luck and success by the harnessing of 
technology -&amp;nbsp; a picture not very much at variance from the political 
headlines that we read today.&lt;/p&gt;&lt;p&gt;And most of all, look at the people;
 both the heroes in the film and the reaction of the audience. First, 
the heroes; Luke Skywalker is a pretty but easily led youth. Without any
 real philosophy to guide him, he easily falls under the influence of a 
mystical old man believed previously to be an eccentric hermit. 
Recognize a 1960's hippie or a 1970's moonie? Han Solo has a philosophy 
coupled with courage and skill. His philosophy is money. His proficiency 
comes for a price - the highest. Solo is a thoroughly avaricious 
mercenary. And the Princess, a decisive, strong, self-confident and 
chilly woman. The audience cheered when she wielded a gun. In all three,
 I missed qualities that could be called humane - love, kindness, yes, I
 missed sensuality. I also missed a sense of ideals and faith. In this 
regard the machines seemed more human. They demonstrated real affection 
for each other and an occasional poutiness. They exhibited a sense of 
fidelity and constancy. The machines were humanized and the humans 
conversely seemed mechanical.&lt;/p&gt;&lt;p&gt;As a member of the audience, I was 
swept up by the sheer romantic escapsim of it all. The deering-dos, the 
rope swing escape across the pit, the ray gun battles and especially the
 swash buckle with the ray swords. Great fun!&lt;/p&gt;&lt;p&gt;But I just hope that
 we weren't too intoxicated by the escapism to be able to focus on the 
recognizable. I hope the beauty of the effects didn't narcotize our 
sensitivity to violence. I hope the people see through the fantastically
 well done futuristic mirrors to the disquieting reflection of our own 
society. I hope they enjoy STAR WARS without being "purely entertained".&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8065967" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UfYxwgSEa9hUq-2gnziDRoY31Is/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UfYxwgSEa9hUq-2gnziDRoY31Is/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UfYxwgSEa9hUq-2gnziDRoY31Is/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UfYxwgSEa9hUq-2gnziDRoY31Is/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=wjiAI_187Lc:AeQmCLk77yY:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=wjiAI_187Lc:AeQmCLk77yY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=wjiAI_187Lc:AeQmCLk77yY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=wjiAI_187Lc:AeQmCLk77yY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/Other/default.aspx">Other</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/11/20/do-we-indeed-have-a-future-george-takei-on-star-wars.aspx</feedburner:origLink></item><item><title>Too Many Kittens To Juggle At Once</title><link>http://feedproxy.google.com/~r/bsimser/~3/xlOyZYVH2ys/too-many-kittens-to-juggle-at-once.aspx</link><pubDate>Tue, 08 Nov 2011 19:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8039736</guid><dc:creator>Bil Simser</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=8039736</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=8039736</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/11/08/too-many-kittens-to-juggle-at-once.aspx#comments</comments><description>&lt;P mce_keep="true"&gt;
&lt;P&gt;Ahh, the Internet. That crazy, mixed up place where one tweet turns into a conversation between dozens of people and spawns a blogpost. This is the direct result of such an event this morning.&lt;/P&gt;
&lt;P&gt;It started innocently enough, with this:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://weblogs.asp.net/blogs/bsimser/joeltweet.png" width=400 height=183 mce_src="http://weblogs.asp.net/blogs/bsimser/joeltweet.png"&gt;&lt;/P&gt;
&lt;P&gt;Then followed up by a blog post by Joel &lt;A href="http://www.sharepointjoel.com/Lists/Posts/Post.aspx?List=0cd1a63d%2D183c%2D4fc2%2D8320%2Dba5369008acb&amp;amp;ID=485" mce_href="http://www.sharepointjoel.com/Lists/Posts/Post.aspx?List=0cd1a63d%2D183c%2D4fc2%2D8320%2Dba5369008acb&amp;amp;ID=485"&gt;here&lt;/A&gt;. In the post, Joel introduces us to the term Business Solutions Architect with mad skillz like InfoPath, Access Services, Excel Services, building Workflows, and SSRS report creation, all while meeting the business needs of users in a SharePoint environment. I somewhat disagreed&amp;nbsp;with Joel that this really wasn’t a new role (at least IMHO) and that a good Architect or BA should really be doing this job. As Joel pointed out when you’re building a SharePoint team this kind of role is often overlooked. Engineers might be able to build workflows but is the right workflow for the right problem? &lt;/P&gt;
&lt;P&gt;Michael Pisarek wrote about a &lt;A href="http://www.sharepointanalysthq.com/2011/07/sharepoint-business-architect/" mce_href="http://www.sharepointanalysthq.com/2011/07/sharepoint-business-architect/"&gt;SharePoint Business Architect&lt;/A&gt; a few months ago and it’s a pretty solid assessment. Again, I argue you really shouldn’t be looking for roles that don’t exist and I don’t suggest anyone create roles to hire people to fill them. That’s basically creating a solution looking for problems. Michael’s article does have some great points if you’re lost in the quagmire of SharePoint duties though (and I especially like &lt;A href="http://www.sharepoint911.com/blogs/john/default.aspx" mce_href="http://www.sharepoint911.com/blogs/john/default.aspx"&gt;John Ross&lt;/A&gt;’ quote “The coolest shit is worthless if it doesn’t meet business needs”).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://twitter.com/#!/sharepoinTony" mce_href="http://twitter.com/#!/sharepoinTony"&gt;SharePoinTony&lt;/A&gt; summed it up nicely with “SharePoint Solutions knowledge is both lacking and underrated in most environments. Roles help”.&lt;/P&gt;
&lt;P&gt;Having someone on the team who can dance between a business user and a coder can be difficult. Remember the idea of telling something to someone and them passing it on to the next person. By the time the story comes round the circle it’s a shadow of it’s former self with little resemblance to the original tale. This is very much business requirements as they’re told by the user to a business analyst, written down on paper, read by an architect, tuned into a solution plan, and implemented by a developer. &lt;/P&gt;
&lt;P&gt;Transformations between what was said, what was heard, what was written down, and what was developed can be distant cousins. Not everyone has the skill of communication and even less have negotiation skills to suit the SharePoint platform. Negotiation is important because not everything can be (or should be) done in SharePoint. Sometimes it’s just not appropriate to build it on the SharePoint platform but someone needs to know enough about the platform and what limitations it might have, then communicate that (and/or negotiate) with a customer or user so it’s not about “You can’t have this” to “Let’s try it this way”. Visualize the possible instead of denying the impossible.&lt;/P&gt;
&lt;P&gt;So what is the right SharePoint team?&lt;/P&gt;
&lt;P&gt;My cromag brain&amp;nbsp;came with a fairly simpleton answer (and I’m sure people will just say this is a cop-out). The perfect SharePoint team is just enough people to do the job that know the technology and business problem they’re solving. Bridge the gap between business need and technology platform and you have an architect. Communicate the needs of the business effectively so the entire team understands it and you have a business analyst. &lt;/P&gt;
&lt;P&gt;Can you get this with full time workers? Maybe but don’t expect miracles out of the gate. Also don’t take a consultant’s word as gospel. Some consultants just don’t have the diversity of the SharePoint platform to be worth their value so be careful. You really need someone who knows enough about SharePoint to be able to validate a consultants knowledge level. This is basically try for any consultant, not just a SharePoint one.&lt;/P&gt;
&lt;P&gt;Specialization is good and needed. A good, well-balanced SharePoint team is one of people that can solve problems with work with the technology, not against it. Having a top developer is great, but don’t rely on them to solve world hunger if they can’t communicate very well with users. An expert business analyst might be great at gathering requirements so the entire team can understand them, but if it means building 100% custom solutions because they don’t fit inside the SharePoint boundaries isn’t of much value.&lt;/P&gt;
&lt;P&gt;Just repeat. There is no silver bullet. There is no silver bullet. There is no silver bullet.&lt;/P&gt;
&lt;P&gt;A few people pointed out Nick Inglis’ article &lt;A href="http://www.aiim.org/community/blogs/expert/Excluding-The-Information-Professional-In-SharePoint" mce_href="http://www.aiim.org/community/blogs/expert/Excluding-The-Information-Professional-In-SharePoint"&gt;Excluding The Information Professional In SharePoint&lt;/A&gt;. It’s a good read too and hits home that maybe some developers and IT pros need some extra help in the information space. If you’re in an organization that needs labels on people, come up with something everyone understands and go with it. If that’s Business Solutions Architect, SharePoint Advisor, or Guy Who Knows A Lot About Portals, make it work for you.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://weblogs.asp.net/blogs/bsimser/catjuggling.jpg" width=400 height=268 mce_src="http://weblogs.asp.net/blogs/bsimser/catjuggling.jpg"&gt;&lt;/P&gt;
&lt;P&gt;We all wish that one person could master all that is SharePoint but we also know that doesn’t scale very well and you quickly get into the hit-by-a-bus syndrome (with the organization coming to a full crawl when the guy or girl goes on vacation, gets sick, or pops out a baby). There are too many gaps in SharePoint knowledge to have any one person know it all and too many kittens to juggle all at once. We like to consider ourselves experts in our field, but trying to tackle too many roles at once and we end up being mediocre jack of all trades, master of none. Don't fall into this pit. It's&amp;nbsp;a deep, dark hole you don't want to try to claw your way out of. Trust me. Been there. Done that. Got the t-shirt.&lt;/P&gt;
&lt;P&gt;In the end I don’t disagree with Joel. SharePoint is a beast and not something that should be taken on by newbies. If you just read “Teach Yourself SharePoint in 24 Hours” and want to go build your corporate intranet or the next killer business solution with all your new found knowledge plan to pony up consultant dollars a few months later when everything goes to Hell in a handbasket and falls over.&lt;/P&gt;
&lt;P&gt;I’m not saying don’t build solutions in SharePoint. I’m just saying that building effective ones takes skill like any craft and not something you can just cobble together with a little bit of cursory knowledge.&lt;/P&gt;
&lt;P&gt;Thanks to *everyone* who participated in this tweet rush. It was fun and educational.&lt;/P&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8039736" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bpfcK_G6TdL368UXbXm0kWafZoY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bpfcK_G6TdL368UXbXm0kWafZoY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bpfcK_G6TdL368UXbXm0kWafZoY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bpfcK_G6TdL368UXbXm0kWafZoY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=xlOyZYVH2ys:6_Lw1ygDbSQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=xlOyZYVH2ys:6_Lw1ygDbSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=xlOyZYVH2ys:6_Lw1ygDbSQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=xlOyZYVH2ys:6_Lw1ygDbSQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/11/08/too-many-kittens-to-juggle-at-once.aspx</feedburner:origLink></item><item><title>Adopting the Metro Style for Line of Business Apps</title><link>http://feedproxy.google.com/~r/bsimser/~3/gtyOyC-LMLk/adopting-the-metro-style-for-line-of-business-apps.aspx</link><pubDate>Fri, 23 Sep 2011 17:49:36 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7962802</guid><dc:creator>Bil Simser</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7962802</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7962802</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/23/adopting-the-metro-style-for-line-of-business-apps.aspx#comments</comments><description>&lt;p&gt;Here are some thoughts around adoption the new Metro style look and feel for line of business applications (LOB) in your organization. &lt;/p&gt;  &lt;p&gt;I am not a UX expert (is anyone?) but I think I know what looks and feels right and I strive to try to include that in every solution I build. Metro introduces us to some new concepts and as Jensen Harris pointed out, it isn’t just recompiling your app on WinRT. You have to re-imagine it and think about how it’s organized, how users will interact with it, and do some trimming of the fat so to speak as you move into the Metro world.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/msft-nextmove-01.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;Good design practices still apply here. Appropriate use of whitespace, good layout, clear typography, and consistent UI patterns make a big difference so remember these and use them. A UI checklist might be in order for any app, not just Metro ones. I’ll state this from my experience. Very few business users know what they need and most can’t visualize past what they already have. Know this and learn to adapt from this perspective and I think you’ll go farther with the success factor with your users. Far too many times users are stuck with what they have, perhaps a spreadsheet-like application (where the one and only screen is 8000 rows of data and 300 columns). Anything you present to them, no matter how effective, is just shadowed by that grid in their mind. &lt;/p&gt;  &lt;p&gt;I’m a strong advocate of the task oriented UI and think it works. Try to keep this in mind when designing the system and don’t let your user try to do 80 things at once on the same screen. You’ll just run around like a chicken with your head cut off trying to cater to everyone and in the end deliver a mediocre product that works for all cases rather than separate UX instances that are stellar for each situation.&lt;/p&gt;  &lt;p&gt;Metro is different. It forces you to think about your application in a different manner. No longer are you trying to get tree view feeding items into list view feeding details into file view. There are still groups and collection of groups and all that but remember your UI now is a functional, breathing, living thing. Minimalism is best here so you want to get out as much information in as effective space as possible. As Microsoft pointed out, a live tile isn’t something you should be posting every detail to. It’s an extension of the application so treat it as a first class citizen, not a UI element that needs to be pretty.&lt;/p&gt;  &lt;p&gt;Lists should contain just the right amount of information. Again, go back to your users and push them. Try not to take the route of “What do you need” but rather provide them with a solution that accomplishes the goal they’re aiming for (of course that means you need to establish a goal first). If they’re coming from a giant screen of data saying “We need *this*” then push them to answer what they use it for. What goal are they trying to accomplish? Are they trying to summarize information or are they looking for something (e.g. show me all the users with more than 10GB of storage). If they have a goal, key in on it and that might become the basis of a UI workflow.&lt;/p&gt;  &lt;p&gt;Again keep the focus on the goal. You don’t want this thing to get out of hand or you’ll end up with a Frankenstein monster of a UI like this:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://thedailywtf.com/images/2/o_filematrix.png" width="500" height="391" /&gt;&lt;/p&gt;  &lt;p&gt;Take them by the hand and show them. Lead by example and show them what is possible. Giving them design documents might not be enough and don’t describe things like “Imagine this window over here with a list of things…”. You’ll probably be met with the deer in the headlight look. You might be thinking that Metro isn’t right for this app and perhaps you’re right. Don’t assume that you *have* to build a new UI in Metro just because it’s there. Photoshop isn’t going to be a Metro app (ever, at least I hope) but your LOB app might. You need to be sure you’re doing the right thing and don’t try to fit a square peg into a non-existent hole. LOB apps *can* be great looking and useful. I highly recommend you check out &lt;a href="http://www.dnrtv.com/default.aspx?showNum=115"&gt;Billy Hollis’ screencast&lt;/a&gt; he did on LOB apps with WPF. While it’s not Metro, it does show that LOB apps can be great looking and functional. A lot of great tips from Billys talk.&lt;/p&gt;  &lt;p&gt;Build something. Even if you sit with them in a whiteboard session and draw pictures on the screen it’ll help. Build up the UI using something like Basalmiq is great and easy for them to see quickly. Visio is just too mechanical to fiddle around with and your users will quickly loose interest. Rapid feedback wins over here but then take that back to the development environment and build it. The next day show them it in action on the real website or desktop you’re building it for.&lt;/p&gt;  &lt;p&gt;There’s a danger here that I’ve seen of the “It’s done” syndrome. Users will see a mock-up in a website and think that all the work is done. It isn’t so temper your system with that and read your users. Find out if they really believe it’s just some if/then/else statements you have to do to make it work. I would opt to not call this “prototype” or “mockup”. I prefer to call it the working software. It’s what they’ll use in the production release and it’ll just evolve as they provide feedback, new elements are added, and parts of the system become functionally complete.&lt;/p&gt;  &lt;p&gt;Look for some re-imaging of “Classic” apps into Metro ones soon as I’m planning on doing a few blog posts about this.&lt;/p&gt;  &lt;p&gt;Many thanks to &lt;a href="http://twitter.com/#!/colinbowern"&gt;@colinbowern&lt;/a&gt; for some great tips on Twitter.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7962802" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nrWOC8fTob00-xXNM5QcTC1MDM0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrWOC8fTob00-xXNM5QcTC1MDM0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nrWOC8fTob00-xXNM5QcTC1MDM0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nrWOC8fTob00-xXNM5QcTC1MDM0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=gtyOyC-LMLk:rbYHkmurfd8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=gtyOyC-LMLk:rbYHkmurfd8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=gtyOyC-LMLk:rbYHkmurfd8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=gtyOyC-LMLk:rbYHkmurfd8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/Metro/default.aspx">Metro</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/User+Interface/default.aspx">User Interface</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Design/default.aspx">Design</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/23/adopting-the-metro-style-for-line-of-business-apps.aspx</feedburner:origLink></item><item><title>Microsoft's Next Move, Split Metro and Classic Mode in Windows 8?</title><link>http://feedproxy.google.com/~r/bsimser/~3/RXJLyBdu7a8/microsoft-s-next-move-split-metro-and-classic-mode-in-windows-8.aspx</link><pubDate>Thu, 22 Sep 2011 11:17:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7961350</guid><dc:creator>Bil Simser</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7961350</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7961350</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/22/microsoft-s-next-move-split-metro-and-classic-mode-in-windows-8.aspx#comments</comments><description>&lt;p&gt;Caveat lector. This is an opinion piece and not something I do often (or probably well) but my thoughts on this were a little more than 140 characters could handle. You have been warned.&lt;/p&gt;
&lt;p&gt;Recently Netflix CEO Reed Hastings stood up and, doing his best impression of a half-pregnant Jeff Bezos, announced the physical division of it's DVD lending system and streaming services. This resulted in Internet carnage that continues to this day. The general feeling there is that the separation is going to cause pain and suffering with long time users who now look at it as having to search two separate and distinct places to find the same stuff, get two different bills, two different user experiences, etc. Visionary perhaps, but not fully baked.&lt;/p&gt;
&lt;p&gt;Many who went to the recent Build conference (and others like myself who didn't) got their taste of Microsoft's Jekyll and Hyde next operating system, Windows 8. The "alive with activity" (sans spiders and snakes) view of the living tile Metro user interface is almost revolutionary in style, approach, and implementation.&lt;/p&gt;
&lt;p&gt;The Metro UX is a new experience (some say a new way of life) in Windows 8 and is all about building an immersive user experience that’s unlike anything we’ve seen for a long time (a pre-cursor was the Metro makeover they gave Windows Phone 7 last year). Users get information from living tiles rather than static icons on a free-flowing desktop devoid of a clumsy arrangement and optimized for fingers, not mice.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/msft-nextmove-01.jpg" style="WIDTH: 500px; HEIGHT: 338px" title="Metro, the new Windows 8 look and feel" alt="Metro, the new Windows 8 look and feel" mce_src="http://weblogs.asp.net/blogs/bsimser/msft-nextmove-01.jpg" height="338" width="500"&gt;&lt;/p&gt;
&lt;p&gt;Now that the dust has settled, the question that seems to be bubbling up to the surface for me (and some others), is Microsoft making a mistake? Combining the "optimized for touch" interface with the antiquated keyboard and mouse apps looks like it might be. Maybe Microsoft should be following in Apples footsteps and creating an optimized for touch operating system and a classic one.&lt;/p&gt;
&lt;p&gt;Don't get me wrong. I'm not actually saying they should ditch what they have but it could potentially be tweaked. The classic interface could be completely removed from the Metro one and vice versa. This I see is a move that might be welcomed by developers and users alike.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The Development Story&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Right now the developer story is just shaping up but already it’s causing confusion. Some developers are still asking the question about the Windows Runtime (WinRT). Why can’t we build Metro apps on Windows 7? Why is the WinRT a different API than the classic CLR. The bits are different. The runtime is different. The security is different. Heck, in Windows 8 you can write “desktop” apps using HTML5 and JavaScript for goodness sake. That in itself just says we’re not in Kansas anymore Toto.&lt;/p&gt;
&lt;p&gt;It makes sense, if you think about it. Metro WinRT apps have a distinctive style to them and have restrictions you don’t have in the classic development world. Metro apps can’t even access the underlying file system (sans some Isolated storage which is not meant for large amounts of data). The UX is completely different from the classic desktop we’re familiar with and requires you to “re-imagine” your apps. There is no cross-platform compilation here. This isn’t “build a UI for Metro and build a UI for Classic mode”.&lt;/p&gt;
&lt;p&gt;While you have to build two different applications anyways, what’s the difference if they’re on the same OS or not? It doesn’t mean you have to rewrite your entire system from scratch for each OS like you have to do today with Apple. A good developer is going to structure his system so the UI is separate and through the use of patterns like MVVM, changes to the back-end stuff, the important stuff, is minimized.&lt;/p&gt;
&lt;p&gt;It does however require you to re-think your application, perhaps removing large chunks of the underlying system and changing the way it not only presents itself but what it presents. I’m not just talking about a UI makeover (which needs to happen) but the fact that your ViewModels today are not the same ones you need for Metro. &lt;/p&gt;
&lt;p&gt;For example a Movie Catalog app might provide a ViewModel of titles in a single collection with a category attribute. The current UI might present this in a typical tree view, allowing the user to filter on single or multiple categories which then also lazy fetches the list of titles and presents it (through a child ViewModel) in a list view on the same screen. This two or three pane view of your data might be fine in a traditionally designed app but in Metro things might behave differently. Perhaps the categories are already broken down for you in a grouped collection and selecting one takes you to a view where no collection information is needed so only the movie titles and metadata are displayed. The information you show on the screen might be different for each style as well so ViewModels here cannot really be reused. Even the lazy fetching of the data on the back-end might be different in a Metro style app from a classic one.&lt;/p&gt;
&lt;p&gt;In any case, the development story might be a little muddy right now and we’re still playing the Sesame Street “One Of These Things” games. Heading it off at the pass might be a good plan and let developers focus on the target platform that suits their purpose.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;The User Story&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Users are a whole new ball of wax with Metro and Windows 8. The causal user who’s going to use a touch device wants big targets and easy to use minimalistic apps. They’ll bounce around between weather, RSS feeds, Twitter and Facebook so the “flipping through apps like pages in a book” approach works well here. Nobody in the user community I hear is complaining about how you change between apps in Windows 8. Apps are designed for this. By their very nature, Metro apps are all about quick and concise information and not 800 buttons, 300 windows, 150 graphs, 50 tools, and a partridge in a pear tree in a single app here. The user experience for Metro is flipping through items while waiting for a bus or sitting in a meeting or lying on the couch. It’s casual, even for business users.&lt;/p&gt;
&lt;p&gt;People are all impressed to Hell about the Metro look and feel. Look how easy it is to find things. Look how fun it is to share things. Look at how fast I can get to my data. This is not for business users who are going to stare at a 70 by 3000 spreadsheet for hours at a time. It’s for users on the go and a step up from having the same information on a 8 inch phone platform.&lt;/p&gt;
&lt;p&gt;Business users need the classic look. As Jensen Harris pointed out in his excellent 8 Traits of Metro Apps presentation, apps like Photoshop just don’t fit into Metro. They don’t belong.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Identity&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I see an identity crisis here in the making (or perhaps that ship has already sailed). Microsoft keeps touting the Metro look and says “And your classic apps are right here”. Then the user is subjected to a jarring shift from the beautiful typographic world of Metro to the classic desktop we have now, full of chrome and frames and toolbars oh my. It’s like watching the magnificent tranquility of Claude Monet’s “Water Lillies” and then be suddenly thrown into the world of Jackson Pollocks “Composition with Pouring I”.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://weblogs.asp.net/blogs/bsimser/msft-nextmove-02.jpg" style="WIDTH: 501px; HEIGHT: 355px" title="Jakson Pollock, not my cup of tea" alt="Jakson Pollock, not my cup of tea" mce_src="http://weblogs.asp.net/blogs/bsimser/msft-nextmove-02.jpg" height="355" width="501"&gt;&lt;/p&gt;
&lt;p&gt;The experience right now is jarring. Click on any “classic” app and Metro goes bye-bye and you’re back at traditional desktop. Then you look down, see the iconic Start button, click it, and BAM! You’re back in Metro land, wondering how to get back to the comfort zone. Users don’t know how to use shortcut keys. I struggle and watch people who have been “using” computers for years still not use Ctrl+C/Ctrl+V to copy and paste and if I asked 100 people at work right now if they knew they could lock their computers with a single keystroke (Windows + L) they would shake their heads in disbelief.&lt;/p&gt;
&lt;p&gt;I know what you’re thinking right now. Two platforms. Two deployments. Two SKUs. Two nightmares. I don’t think so. It’s a choice. Do you really see people complaining they can’t run their iPad apps on their desktops? Yes, it’s more work but I think it’s the right work. While Microsoft continues to say that Metro works just as well with a mouse and keyboard than it does with touch, people continue to look at the “optimized for touch” interface and scratch their heads wondering what this experience is going to be like with a keyboard. It works but it’s not the best. How do you pinch zoom with a mouse? How do you dual scroll with a keyboard? Just because you can do something, doesn’t mean you should.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Your Move Microsoft&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;I’m just a guy. Some people think I might have some internal influence with Microsoft but I don’t. I bitch, I complain, I praise just like everyone. People at Microsoft possibly (probably) already have the plans in place for Windows 8. That decision was probably baked over a year ago during early design or roadmap sessions.&lt;/p&gt;
&lt;p&gt;Is it a good move for Microsoft? I think so. As a developer I would be happy building systems targeting two operating systems. As a developer I might go through the entire Windows 8 lifecycle without building a Metro app and that’s okay. Some developers might bitch and groan that they need to build two different solutions for the same platform so this would fix that problem. Now you’re building one app for one platform (and optionally another app for another platform should you choose to go that route).&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7961350" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lwqMZx9YJR6PxGF46Cmi__5FX14/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lwqMZx9YJR6PxGF46Cmi__5FX14/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lwqMZx9YJR6PxGF46Cmi__5FX14/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lwqMZx9YJR6PxGF46Cmi__5FX14/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=RXJLyBdu7a8:7X-DSWm-d2w:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=RXJLyBdu7a8:7X-DSWm-d2w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=RXJLyBdu7a8:7X-DSWm-d2w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=RXJLyBdu7a8:7X-DSWm-d2w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Windows+8/default.aspx">Windows 8</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/22/microsoft-s-next-move-split-metro-and-classic-mode-in-windows-8.aspx</feedburner:origLink></item><item><title>Adding Ratings and Comments to SharePoint Publishing Pages</title><link>http://feedproxy.google.com/~r/bsimser/~3/c3KyFcpsoao/adding-ratings-and-comments-to-sharepoint-publishing-pages.aspx</link><pubDate>Sun, 18 Sep 2011 19:19:19 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7957240</guid><dc:creator>Bil Simser</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7957240</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7957240</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/18/adding-ratings-and-comments-to-sharepoint-publishing-pages.aspx#comments</comments><description>&lt;p&gt;One of the cool features that was introduced in SharePoint 2010 was ratings. Ratings allows you, with a simple configuration option, to provide the ability for users to rate individual list items. This includes pages and documents because, after all, a publishing page is just a document in a library which in turn is just a list item.&lt;/p&gt;  &lt;p&gt;On almost any news site you might find the ability to rate content. Voting things up by providing a “I like this” type tag to a page or by giving a page rating. This is missing in the out of the box SharePoint for publishing pages and takes a little work to get it going so let’s turn SharePoint up to 11 and get it done.&lt;/p&gt;  &lt;p&gt;Tools you’ll need:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A SharePoint publishing site &lt;/li&gt;    &lt;li&gt;A “Pages” library where new articles are created (any site created with the Publishing site template creates this automatically) &lt;/li&gt;    &lt;li&gt;SharePoint Designer &lt;/li&gt;    &lt;li&gt;A few minutes of your life &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We’ll start with the stock Publishing Site. I’ve added a few articles and just modified the navigation on the side to display pages.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_2DEA1040.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_1100EB6B.png" width="504" height="242" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you navigate to the Pages library (Site Actions &amp;gt; View All Site Content &amp;gt; Pages) and go into the settings for the pages you’ll see the list of default columns for the page library:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_7DDFBEBE.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_0EE3ECA2.png" width="500" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Go into List Settings and click on Rating settings under the General Settings section&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_5BA7B338.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_73CB1D93.png" width="500" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You’ll be given the option to turn ratings on. Do this for the Pages library and click OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_2B9D61B7.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_58B24E85.png" width="500" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note: You must have the SharePoint Timer Services running and the User Profile Service configured and started for ratings to work. Why? Ratings for items are updated via timer jobs so when you rate an item it takes up to 15 minutes before the rating are updated and propagated throughout the farm. Part of that propegation is updating your SharePoint “social” profile (things you’ve done like rating items, creating tags, and leaving comments). These functions require the User Profile Service to be configured and working (which is way beyond the scope of this article).&lt;/p&gt;  &lt;p&gt;After turning on ratings for the library you can look at the updated columns which are going to capture the rating for each item.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_459121D9.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_48C309C1.png" width="500" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The columns are also completely functional so if you just look at the All Documents view of the Pages library you can rate individual items immediately:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_1CA60CD0.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_54E483E8.png" width="459" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is great but we want to make it a little more intuitive. We’ll modify the page to allow for ratings on the article page when the user views it. For this we’re going to modify the article layout page. We modify the layout page because we need to store the ratings for each page so having it on the Master page won’t work. This approach is fine but remember two things. First, you’ll need to add this snippet to any layout pages you use. Also remember that when you create a new site (and a new Pages library) that it will continue to use the existing layout pages but the library needs additional work to enable ratings on it.&lt;/p&gt;  &lt;p&gt;Open the site in SharePoint Designer and select Page Layouts from the Navigation Tree:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_3B104DB9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_213C178A.png" width="207" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We’re going to modifying the first page layout that we’ve used in the articles so far. If you edit the page the click on the Page tab you can view what Page Layout the page is using (it’s also displayed by default in the All Documents List View). Click on Page Layouts and the highlighted one is the layout the page is using. Below it shows we’re using the Body only layout.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_72765EE7.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_1F1F18C1.png" width="504" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back in SharePoint Designer we need to find this layout. In the Page Layouts view find the page with the title that matches the layout in the browser.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_7DBF7324.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_27BF714D.png" width="456" height="376" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you click on it to launch it in SharePoint Designer you’ll be warned that there are no editable regions through this dialog box:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_4DB521A3.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_25363F8F.png" width="500" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click OK to open the page in “Advanced Mode” which basically just means “Let me edit the entire page”.&lt;/p&gt;  &lt;p&gt;Scroll down near the bottom. You’ll find the ContentTemplate that’s for SharePoint 2010 (UIVersion=”4”). This is the layout that is used to display the article (be careful not to change the UIVersion=”3” section above, it’s a carry over when the system is running in “Make it look like SharePoint 2007 mode”).&lt;/p&gt;  &lt;p&gt;We’re going to insert this snippet:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:e05fd2fd-0016-4afa-b91c-85f82cdad455" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 60px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharePointPortalControls:AverageRatingFieldControl 
    ID&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;PageRatingControl&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    FieldName&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;AverageRating&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    runat&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;server&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;This is the control that you saw in the List View which will render the average rating for the item (compiled from all the votes and updated through the Timer service mentioned earlier).&lt;/p&gt;

&lt;p&gt;We’ll add it below our article and wrap it in a div tag using the “article-content” class (which will style it the same as our story)&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_3F29FFB1.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_301320D7.png" width="500" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Refresh the page on your site and you’ll probably see this error:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_60C62882.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_5BE374C6.png" width="500" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The SharePointControls tag we inserted isn’t known by default in the layout pages so we have to add a declaration to the top of the page. Add this snippet at the top of page:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:c9c6dbc1-4dd8-4379-a1e0-941f3eb250c8" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 70px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;@ Register TagPrefix&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;SharePointPortalControls&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    Namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Microsoft.SharePoint.Portal.WebControls&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; 
    Assembly&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;%&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;This just tells the page that when you see the SharePointControls prefix, use this control from this assembly. Insert it at the top of the page like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_3EFA4FF1.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_4BF43002.png" width="500" height="140" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go back to the page in your browser and hit F5 to refresh it. You’ll see the rating control added below your article.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_6ACAA3E0.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_1BE9DE81.png" width="500" height="279" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sweet! Go ahead and create a new page (or a few of them) using the Body only layout. You’ll see the rating on each page. Remember that clicking on a rating will take up to 15 minutes before it’s updated so be patient!&lt;/p&gt;

&lt;p&gt;Oh, but ratings are not enough. Let’s face it, if we want to foster “social” type of atmosphere with SharePoint in the corporate environment we need social tools. Not only can we add ratings to articles we can also add comments.&lt;/p&gt;

&lt;p&gt;Comments are something new to SharePoint (and not stored in lists, don’t get me started on how to do something like aggregate comments). Comments come from the server and are similar to tags (like the “I Like It” tag that you can hit on any page). They’re part of the whole social upgrade SharePoint 2010 got and a very cool thing.&lt;/p&gt;

&lt;p&gt;It’s only natural to allow users to comment on articles so let’s do that.&lt;/p&gt;

&lt;p&gt;Still in SharePoint Designer insert this snippet below the DIV tag you created for the ratings:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:363741e5-87f7-4bf9-8a0d-1e610b927a96" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 76px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;div &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;article-content&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    Comment on &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt; article:&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;br&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
    &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;SharePointPortalControls:SocialCommentControl 
        ID&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;CommentControl&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; runat&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;server&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;div&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;It’s that simple.&lt;/p&gt;

&lt;p&gt;Now view the page in your browser again.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_2F2A9520.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_2732F2BE.png" width="500" height="283" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That entire chunk in the red box is what was added with the SocialCommentControl.&lt;/p&gt;

&lt;p&gt;Enter a comment and click Post. The comment is saved on the server (in one of the new Social databases) and associated with the article. Go to another page and you’ll see that there are no comments so comments are unique for each article.&lt;/p&gt;

&lt;p&gt;There’s one gotcha with the comments. Here’s a new comment added to the article:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_6CD77CDC.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_36F287C2.png" width="500" height="352" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note the craptastic layout. It’s as if there’s an imaginary box drawn around the comment that’s forcing it to be a certain size. And if you guessed that, you’d be right! Here’s the behind-the-scenes markup for a comment:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_716D8796.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_6975E534.png" width="500" height="191" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yup. Comments are rendered inside a DIV tag that’s forced to a width of 390px. If you’re okay with this then you can leave it alone, otherwise insert this into the top of your page layout:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_1375E35D.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_728270B5.png" width="500" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now refresh the browser to see this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_3826FAD4.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_0C09FDE3.png" width="500" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s better. Now the comment takes up the entire width of the screen. We insert the custom CSS onto the page because the default CSS for comments is in a system file (and used on the My Site pages) so we don’t want to screw up that with a global change. If you have a custom CSS file for your site you can add it there too.&lt;/p&gt;

&lt;p&gt;Like I said you’ll need to do this on every page layout in the system if you want to enable ratings and comments on article pages. It shouldn’t take more than a few minutes though (probably less time to implement than it took to read this article). Don’t forget to enable Ratings on each Pages Library in your system too. Comments don’t need anything special done to the library as they’re stored centrally (but you do need the My Site functionality setup along with the Social databases it creates).&lt;/p&gt;

&lt;p&gt;Hope that helps and have fun! It’s a great feature to enable and a great way to get your users to participate in your corporate content!&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7957240" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4UdG5Lc0a9tf-ZuWsLdTW3St_As/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4UdG5Lc0a9tf-ZuWsLdTW3St_As/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4UdG5Lc0a9tf-ZuWsLdTW3St_As/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4UdG5Lc0a9tf-ZuWsLdTW3St_As/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=c3KyFcpsoao:WT_pTY4iQZg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=c3KyFcpsoao:WT_pTY4iQZg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=c3KyFcpsoao:WT_pTY4iQZg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=c3KyFcpsoao:WT_pTY4iQZg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/18/adding-ratings-and-comments-to-sharepoint-publishing-pages.aspx</feedburner:origLink></item><item><title>Opening Files in the Browser with SharePoint</title><link>http://feedproxy.google.com/~r/bsimser/~3/LICi3BvEvi0/opening-files-in-the-browser-with-sharepoint.aspx</link><pubDate>Sun, 18 Sep 2011 13:35:06 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7957022</guid><dc:creator>Bil Simser</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7957022</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7957022</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/18/opening-files-in-the-browser-with-sharepoint.aspx#comments</comments><description>&lt;p&gt;A change in SharePoint 2010 is how it handles browser file permissions which results in how files are opened when they’re selected. A common problem is clicking on a PDF file and seeing the browser Save dialog instead of launching the Adobe reader.&lt;/p&gt;  &lt;p&gt;There is a setting called Browser File Handling in each Web Application (under General Settings). By default it is set to strict which causes additional HTTP headers to be injected which blocks the opening of PDF and other files. Switching the option to permissive will allow things to function like they did in SharePoint 2007.&lt;/p&gt;  &lt;p&gt;This is web application wide so you’ll need to do it for each web app in your farm. Here’s the dialog and the setting.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/clip_image002_54BD91F1.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://weblogs.asp.net/blogs/bsimser/clip_image002_thumb_1A621C10.jpg" width="500" height="562" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hope that helps!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7957022" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/t-Mm2YnQd0HmlaYvXHXPogmfWok/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-Mm2YnQd0HmlaYvXHXPogmfWok/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/t-Mm2YnQd0HmlaYvXHXPogmfWok/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/t-Mm2YnQd0HmlaYvXHXPogmfWok/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LICi3BvEvi0:H7cPp1OHohA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LICi3BvEvi0:H7cPp1OHohA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LICi3BvEvi0:H7cPp1OHohA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LICi3BvEvi0:H7cPp1OHohA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/18/opening-files-in-the-browser-with-sharepoint.aspx</feedburner:origLink></item><item><title>Demystifying the Windows 8 Grid Application</title><link>http://feedproxy.google.com/~r/bsimser/~3/LBp7fGUPOTo/demystifying-the-windows-8-grid-application.aspx</link><pubDate>Sat, 17 Sep 2011 18:12:32 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7956334</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7956334</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7956334</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/17/demystifying-the-windows-8-grid-application.aspx#comments</comments><description>&lt;p&gt;If you’re looking to “re-imagine” your apps on the Windows 8 platform in Metro style you can start with the Grid Application template that’s provided in the Visual Studio 2011 preview.&lt;/p&gt;  &lt;p&gt;From Visual Studio choose New Project and select Grid Application under Windows Metro Style in the template tree: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_45B2150F.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_204821A1.png" width="660" height="474" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you start you’ll get a fully blown Windows 8 Metro application, ready to begin filling in with your own content. &lt;/p&gt;  &lt;p&gt;How did all that stuff get there and where does it go?&lt;/p&gt;  &lt;p&gt;First open up the Sample Data folder in the solution. In there you’ll find a file called SampleDataSource.cs. This contains some sample data to work with and is bound to the Xaml pages in the solution at runtime. You’ll of course replace this with runtime data but the sample helps you visualize your app along with understanding where stuff goes on the screen. &lt;/p&gt;  &lt;p&gt;Or does it? The default app is all in Lorem Ipsum speak and while this is great for visualizing a fully populated application, I thought it was a little confusing to know how it fit together. To make it clearer where everything goes I’ve modified the first collection and item in the SampleDataSource.cs calls with more descriptive labels. Here’s a better picture of the GroupedCollectionPage.xaml, the “Home” page in the app:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_5ECD6F47.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_2F2F50BB.png" width="660" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note the collection title appears above the group but only the description and category for the item appears for each item. So if you’re relying on users finding things by the item title (maybe it’s the title of a recipe or a newsfeed) then you might want to modify the layout for this to bind the title somewhere. You can get creative for example and overlay the title on top of the image.&lt;/p&gt;  &lt;p&gt;And here’s the DetailPage.xaml, what you see when the users clicks on a single item in the collection:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_7BF31751.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_5F09F27C.png" width="660" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The Collection Title is the prominent title here but it does show the Item Subtitle. Again this might not be the desired location for titles. For example the Item Title is a small item below the image and category. Personally I would swap out the Item Title and Item Subtitle here or even use the Item Title in place of the Collection Title and leave the Item Subtitle alone (removing the Item Title below the image).&lt;/p&gt;  &lt;p&gt;There may be some Metro guidelines coming out to help understand the reasoning behind this positioning and maybe my brain isn’t thinking “Metro” just yet, but it doesn’t make a lot of sense to me the way the default locations are.&lt;/p&gt;  &lt;p&gt;And here’s the CollectionSummaryPage.xaml, you would navigate to this if you clicked on the Back Arrow in the screen above (next to Collection Title).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_53080248.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_1CB6DA39.png" width="659" height="500" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Interesting to note with this is that the Collection Content isn’t used here, only the Collection Description. I would probably modify this to include the content or drop that property entirely and just use the description.&lt;/p&gt;  &lt;p&gt;You don’t necessarily need to follow all of the structures the default Grid Application layout offers but do keep true to the Metro style and keep things consistent. I urge you strongly to watch Jensen Harris’ keynote on the 8 traits of a Metro app and realize that by using the default setup they give you, you’ll achieve a consistent look to your app that will fit harmoniously within the Windows 8 operating system.&lt;/p&gt;  &lt;p&gt;Make more sense now?&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7956334" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lV25RIAVIC4he-JoS6qN_Jeue-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lV25RIAVIC4he-JoS6qN_Jeue-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lV25RIAVIC4he-JoS6qN_Jeue-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lV25RIAVIC4he-JoS6qN_Jeue-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LBp7fGUPOTo:gmyQrWrkRf8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LBp7fGUPOTo:gmyQrWrkRf8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=LBp7fGUPOTo:gmyQrWrkRf8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=LBp7fGUPOTo:gmyQrWrkRf8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Windows+8/default.aspx">Windows 8</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Metro/default.aspx">Metro</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/17/demystifying-the-windows-8-grid-application.aspx</feedburner:origLink></item><item><title>Realistic Blood For Your Films (or Halloween)</title><link>http://feedproxy.google.com/~r/bsimser/~3/ENUv-Z0BGS0/realistic-blood-for-your-films-or-halloween.aspx</link><pubDate>Sun, 11 Sep 2011 21:39:22 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7949149</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7949149</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7949149</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/11/realistic-blood-for-your-films-or-halloween.aspx#comments</comments><description>&lt;p&gt; With Halloween approaching I thought I would share a recipe for blood (and start a new tag in my blog). I used to do a lot of special effects and animation for amateur and semi-pro films back in the 80s and 90s so thought I would see how that knowledge transfers to the 21st Century. Obviously we’re not shooting in Super-8 anymore and dealing with back winding film, optical printers, and A+B rolling but some things are timeless.&lt;/p&gt;  &lt;p&gt;One makeup effect often taken for granted is blood. It’s easy enough to power some store bought “stage” blood but some of these stage bloods are not as realistic as the real thing and tend to look too bright-red. You want to make sure that the blood you see on the screen looks like blood. In addition to stage blood being somewhat expensive, it’s even cost prohibitive these days to get large quantities of it. 8oz of it is about $13 so you’re looking at over $200 for a gallon. &lt;/p&gt;  &lt;p&gt;Dick Smith is the undisputed master of makeup and was responsible for making Linda Blair a demon in The Exorcist, John Hurt a caveman in Altered States, and getting pretty bloody with Robert DeNiro in Taxi Driver. Fortunately, Smith was also very open about how he did things and shared a lot of his professional experience over the years.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/dick_smith_portrait_012_37C58228.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="dick_smith_portrait_012" border="0" alt="dick_smith_portrait_012" src="http://weblogs.asp.net/blogs/bsimser/dick_smith_portrait_012_thumb_697079B0.jpg" width="660" height="436" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here are Dick Smith’s tried-and-proven formulas for creating movie blood guaranteed to set your audiences squirming…&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="600"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Karo Syrup&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Zinc Oxide&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Red Food Color&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Yellow Food Color&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Kodak Photo-Flo *see note below&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Water&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;1 Pint&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1/2 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1 ounce&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 1/2 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1 ounce&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1 ounce&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;1 Quart&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;5 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 ounces&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;2 Quarts&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;4 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;1 ounce + 4 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;4 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;4 ounces&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;3 Quarts&lt;/td&gt;        &lt;td valign="top" width="100"&gt;3 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;6 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;2 1/2 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;6 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;6 ounces&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;1 Gallon&lt;/td&gt;        &lt;td valign="top" width="100"&gt;4 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;8 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;3 ounces + 2 Tsps.&lt;/td&gt;        &lt;td valign="top" width="100"&gt;8 ounces&lt;/td&gt;        &lt;td valign="top" width="100"&gt;8 ounces&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;* If the blood will &lt;em&gt;not&lt;/em&gt; be used in the mouth, the Photo-Flo can be added. Photo-Flo is a wetting agent which makes the blood flow over surfaces without beading and helps it to soak into fabrics naturally, like real blood. If you use the Photo-Flo, shake your mixture more gentle than otherwise to avoid excess foaming (caused by the Photo-Flo). Remember, do &lt;em&gt;not&lt;/em&gt; use blood with Photo-Flo in the mouth!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mixing Procedure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Put the zinc oxide in a bowl, add an equal amount of water and stir into a paste. Add the measured amounts of red and yellow food colours and stir. Add a &lt;em&gt;little&lt;/em&gt; of the Karo syrup and stir until it is well-mixed.&lt;/p&gt;  &lt;p&gt;Pour this mixture into a container which is larger than the final amount of blood; that is, if you are making three quarts of blood, your container should be a gallon jug. This is necessary because once the formula is mixed, it must be shaken prior to each use in order to re-mix the contents, which tend to separate while sitting.&lt;/p&gt;  &lt;p&gt;Add the remaining amount of Karo to your container and shake well. Finally, add the amount of water specified, mix thoroughly and you will have blood with normal consistency (thickness).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ingredients and Tips&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Food Colors:&lt;/em&gt; Most red food colors are similar, but the yellow ones vary. Some stain white paper lemon-yellow while others are more orange. Do some tests on your targets to see the effect and reduce the amount of yellow you add if it stains too much.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Karo Syrup:&lt;/em&gt; This is just a brand name for corn syrup. It’s preferable to get the clear stuff but if that’s not available reduce the amount of yellow food colouring by half for regular corn syrup.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Zinc Oxide:&lt;/em&gt; The type referred to in the formula is the pure powder form and can be obtained from a drug store or chemical supply house. In the small amounts used it’s harmless and adds opacity to the blood. It’s the same zinc oxide that’s added to breakfast cereals.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Darker Blood:&lt;/em&gt; The formula above matches true blood but might look too bright when used on white materials. Use about 35 drops of green food colouring per quart of Karo blood to darken it.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Thinner Blood:&lt;/em&gt; If you want a thinner blood (to pump through tubes) use the same formula (with the Photo-Flo) but dilute the Karo Syrup with an equal amount of water. For instance if the formula calls for one pint of Karo, add one pint of water to it before mixing in the rest of the ingredients.&lt;/p&gt;  &lt;p&gt;Keep your blood mixture refrigerated when not in use. If you don’t it will form mould and have to be thrown out. A covered, plastic container is good enough. If refrigerated it’ll keep for long periods of time (months, not years). The regular formula washes off skin and clothes without any trouble but I wouldn’t be dressing in my Sunday best. Get your actors or victims to wear old clothes.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7949149" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Am36z0irqNoLnxhybyBTbZeh3hM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Am36z0irqNoLnxhybyBTbZeh3hM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Am36z0irqNoLnxhybyBTbZeh3hM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Am36z0irqNoLnxhybyBTbZeh3hM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=ENUv-Z0BGS0:aaFUxDFMqPA:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=ENUv-Z0BGS0:aaFUxDFMqPA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=ENUv-Z0BGS0:aaFUxDFMqPA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=ENUv-Z0BGS0:aaFUxDFMqPA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/Special+Effects/default.aspx">Special Effects</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/Film+Making/default.aspx">Film Making</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/11/realistic-blood-for-your-films-or-halloween.aspx</feedburner:origLink></item><item><title>jQuery, SharePoint Picture Libraries, and automatic thumbnails</title><link>http://feedproxy.google.com/~r/bsimser/~3/CmJzAHFlk5g/jquery-sharepoint-picture-libraries-and-automatic-thumbnails.aspx</link><pubDate>Sun, 11 Sep 2011 03:37:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7948508</guid><dc:creator>Bil Simser</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7948508</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7948508</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/09/10/jquery-sharepoint-picture-libraries-and-automatic-thumbnails.aspx#comments</comments><description>&lt;p&gt;Picture Libraries are an interesting beast in SharePoint. When you upload a picture to a picture library you get not one but three images! Whenever you upload an image to a Picture Library, SharePoint automatically creates two additional images for you. A small thumbnail it uses in views and a preview image it uses when you’re viewing the picture properties. Leveraging this “feature” we can build a pretty cool client side gallery using the auto-generated thumbnails and some JavaScript to produce this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_71F67FD6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_6CAF96F4.png" width="660" height="419" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No C# or custom web parts needed. Just a few simple things to get this effect:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;jQuery installed on your site (there are many ways to do this like Jan Tielens solution &lt;a href="http://weblogs.asp.net/jan/archive/2010/09/02/deploying-and-using-jquery-with-a-sharepoint-2010-sandboxed-solution.aspx"&gt;here&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;A document library to store the JavaScript we’re going to write&lt;/li&gt;    &lt;li&gt;The jQuery &lt;a href="http://codebit.wordpress.com/2009/02/27/jquery-thumbnail-popup-plugin-for-greasemonkey/"&gt;Thumbnail Hover Popup for Greasemonkey plugin&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;A SharePoint Picture Library&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Creating the Picture Library&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Create a picture library. I named mine “Pictures” but your can be whatever you want it to be. You must create a Picture Library as we’re going to be using the automatic thumbnails and only the Picture Library template will do this for us. In the demo I just grabbed half a dozen images from the Windows 7 wallpapers on my hard drive (C:\Windows\Web\Wallpaper) and uploaded them.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Script&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here’s the complete source code to the JavaScript we’ll use. Copy this and upload it to a document library. I use the Site Assets library that’s available on any SharePoint site where the Wiki Home Page feature is activated (like the Team Site template) or you can just use or create any document library for it.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:672a96b5-a08e-4be2-b338-82978eaa24a3" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 600px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;div id&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;pictureMicroGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;
Loading...
&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;div&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;

&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;

ExecuteOrDelayUntilScriptLoaded(loadSharePointPictures, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;sp.js&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);

function loadSharePointPictures() {
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;fetch the list of items using the client object model&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var context &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SP.ClientContext.get_current();
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get the current website&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var web &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; context.get_web();
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get the pictures list&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var list &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; web.get_lists().getByTitle(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;Pictures&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;create the query to get all items&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var query &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SP.CamlQuery.createAllItemsQuery();
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get all items from the query&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    pictures &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; list.getItems(query);
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;load the context&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    context.load(pictures, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;Include(FileLeafRef,FileDirRef)&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;execute the query in async mode&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;    context.executeQueryAsync(
        Function.createDelegate(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.success), 
        Function.createDelegate(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.failed));
}

function success(sender, args) {
    pictureArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Array();
    var pictureCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
    var enumerator &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictures.getEnumerator();
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;(enumerator.moveNext()) {
        var currentItem &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; enumerator.get_current();
        var filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; currentItem.get_item(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;FileLeafRef&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename.replace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;_&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.jpg&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        var dir &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; currentItem.get_item(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;FileDirRef&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dir &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_t/&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename;
        pictureArray[pictureCount&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename;
    }
    var newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictureArray.length; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {
        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;img class=&amp;quot;pictureGallery&amp;quot; src=&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictureArray[i];
        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot; style=&amp;quot;margin:4px;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
    }

    $(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;#pictureMicroGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).html(newHtml);
}

function failed(sender, args) {
    $(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;#pictureMicroGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).html(args.get_message());
}

&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Let’s break down some of the parts to this.&lt;/p&gt;

&lt;p&gt;First we have a div tag with an id of “pictureMicroGallery”. This is where we’ll load our pictures into. The text “Loading…” is just a placeholder. You can put an animated image here or whatever you want while the images are fetched.&lt;/p&gt;

&lt;p&gt;Next we start our own script.&lt;/p&gt;

&lt;p&gt;The first line is this:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:a46159f0-e7da-44f2-84bf-e7974ea2a2a8" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 15px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;ExecuteOrDelayUntilScriptLoaded(loadSharePointPictures, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;sp.js&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Here we’re using a built-in function in SharePoint to tell it to call our own method, “loadSharePointPictures” after the sp.js file is loaded. This is similar to the typical jQuery document load technique you might see:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:1dd4bc07-dc04-4076-be08-a6ed54e7c098" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 52px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;$(document).ready(function(){
    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;start your engines&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;});&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;However instead of waiting for the document to load, we’re waiting for a script to load. If you try to execute client side functions before sp.js is loaded, you’ll run into problems. So we let the system launch our function when it’s ready. Next is the loadSharePointPictures function. This is our call to the client side object model to load content dynamically.&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:802f8fd6-2f1b-43c8-90d1-eb98350d6575" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 277px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt;function loadSharePointPictures() {
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;fetch the list of items using the client object model&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var context &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; SP.ClientContext.get_current();
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get the current website&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var web &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; context.get_web();
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get the pictures list&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var list &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; web.get_lists().getByTitle(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;Pictures&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;create the query to get all items&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    var query &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; SP.CamlQuery.createAllItemsQuery();
&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;get all items from the query&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    pictures &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; list.getItems(query);
&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;load the context&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    context.load(pictures, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;Include(FileLeafRef,FileDirRef)&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;execute the query in async mode&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #008000;"&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    context.executeQueryAsync(
&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;        Function.createDelegate(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.success), 
&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;        Function.createDelegate(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.failed));
&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;All the lines are commented so pretty self explanatory. In a nutshell we’re loading a list called “Pictures” (line 7), creating a query to fetch all the items (line 9), selecting two columns (line 13), and then executing the call asynchronously (line 15-17).&lt;/p&gt;

&lt;p&gt;When this call is successful, we call this function:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:51ddbb95-4c85-4f1a-b66b-d60993558bc6" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 336px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #008080;"&gt; 1&lt;/span&gt; &lt;span style="color: #000000;"&gt;function success(sender, args) {
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 2&lt;/span&gt; &lt;span style="color: #000000;"&gt;    pictureArray &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Array();
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 3&lt;/span&gt; &lt;span style="color: #000000;"&gt;    var pictureCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 4&lt;/span&gt; &lt;span style="color: #000000;"&gt;    var enumerator &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictures.getEnumerator();
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 5&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;(enumerator.moveNext()) {
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 6&lt;/span&gt; &lt;span style="color: #000000;"&gt;        var currentItem &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; enumerator.get_current();
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 7&lt;/span&gt; &lt;span style="color: #000000;"&gt;        var filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; currentItem.get_item(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;FileLeafRef&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 8&lt;/span&gt; &lt;span style="color: #000000;"&gt;        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename.replace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;_&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #008080;"&gt; 9&lt;/span&gt; &lt;span style="color: #000000;"&gt;        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;.jpg&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;10&lt;/span&gt; &lt;span style="color: #000000;"&gt;        var dir &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; currentItem.get_item(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;FileDirRef&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;);
&lt;/span&gt;&lt;span style="color: #008080;"&gt;11&lt;/span&gt; &lt;span style="color: #000000;"&gt;        filename &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dir &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;/_t/&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;12&lt;/span&gt; &lt;span style="color: #000000;"&gt;        pictureArray[pictureCount&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; filename;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;13&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }
&lt;/span&gt;&lt;span style="color: #008080;"&gt;14&lt;/span&gt; &lt;span style="color: #000000;"&gt;    var newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;15&lt;/span&gt; &lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictureArray.length; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) {
&lt;/span&gt;&lt;span style="color: #008080;"&gt;16&lt;/span&gt; &lt;span style="color: #000000;"&gt;        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;img class=&amp;quot;pictureGallery&amp;quot; src=&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;17&lt;/span&gt; &lt;span style="color: #000000;"&gt;        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.pictureArray[i];
&lt;/span&gt;&lt;span style="color: #008080;"&gt;18&lt;/span&gt; &lt;span style="color: #000000;"&gt;        newHtml &lt;/span&gt;&lt;span style="color: #000000;"&gt;+=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot; style=&amp;quot;margin:4px;&amp;quot;/&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;19&lt;/span&gt; &lt;span style="color: #000000;"&gt;    }
&lt;/span&gt;&lt;span style="color: #008080;"&gt;20&lt;/span&gt; &lt;span style="color: #000000;"&gt;
&lt;/span&gt;&lt;span style="color: #008080;"&gt;21&lt;/span&gt; &lt;span style="color: #000000;"&gt;    $(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;#pictureMicroGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).html(newHtml);
&lt;/span&gt;&lt;span style="color: #008080;"&gt;22&lt;/span&gt; &lt;span style="color: #000000;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;Here we get the enumerator of items from our “pictures” variable (this was set in the previous function). Then we iterate through each item, fetching it and the data from each item in the list in lines 6-10.&lt;/p&gt;

&lt;p&gt;The FileLeafRef column contains the name of the image file we uploaded (test.jpg, etc.). The FileDirRef column contains the folder where the list lives.&lt;/p&gt;

&lt;p&gt;Line 11 is where the magic happens. Remember when you upload a file to a picture library I said there are three images. Your original + two additional images that are automatically generated for you.&lt;/p&gt;

&lt;p&gt;Here’s the picture library in SharePoint Manager:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_6A122B6A.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_6939C580.png" width="268" height="518" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See how we have img13.jpg (which is the original image file uploaded) but then in a “_w” folder there’s “img13_jpg.jpg” and the same in a folder called “_t”.&lt;/p&gt;

&lt;p&gt;The _t folder contains the small thumbnail image (set to 160 pixels wide). It’s the image used when you view the “All Pictures” view of your picture library. The other _w folder is the large thumbnail (set to 640 pixels wide). This is the image used when you view the picture properties.&lt;/p&gt;

&lt;p&gt;The great thing about these images (apart from being created for you) is that they’re set to a known size (width wise) and the do some magic in setting the height, getting it as close to the original aspect ratio as possible. That means you can use these images yourself to produce a gallery (like we’re doing here) and get pretty consistent results even if your images are totally off.&lt;/p&gt;

&lt;p&gt;In any case, in this example I deliberately uploaded very large images (1920 x 1200) to show you that you can use these thumbnails as your gallery rather than trying to resize the originals.&lt;/p&gt;

&lt;p&gt;Back to the code. In lines 7-11 we take the filename and directory and build our path to the small thumbnail version of the image (in our _t folder). So img13.jpg becomes:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:b2614c0c-e679-4bfd-b04d-960cda2fc09a" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 15px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;Pictures&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;_t&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;img13_jpg.jpg&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;The thumbnail itself is a .jpg file (regardless of what the original source file is) so the original extension is embedded in the filename if you need it. Just decompose the thumbnail file, drop the extension, and replace the “_” with a “.” to find your original file. Lines 8 and 9 turn our original filename into our thumbnail version.&lt;/p&gt;

&lt;p&gt;Lines 15-19 we take the array of pictures we previously built (which is a url to the thumbnail image) and build up a HTML string of IMG tags with the SRC pointing at where the thumbnail is.&lt;/p&gt;

&lt;p&gt;Finally in line 21 we use jQuery to replace the contents of our DIV tag with our new HTML containing the IMG tags.&lt;/p&gt;

&lt;p&gt;Note: You can separate these out and just have an include file with the .js content and manually add to the &amp;lt;div&amp;gt; tag to your page. Your choice. I just find that SharePoint often mangles the HTML I write and litters it with it’s own styles and tags so I just include the whole thing from a library. That way none of my markup is messed with. Take that Microsoft!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding It To The Page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With our script ready, add a Content Editor web part to the page and point the content at our JavaScript include file we uploaded to the Site Assets library (or wherever you have the script living).&lt;/p&gt;

&lt;p&gt;Save the page and it should look something like this (I just replaced the Documents web part on the Team Site home page with my Content Editor):&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_536FDD23.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_0B8E08A2.png" width="660" height="429" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thumbnail Hover Popup Plugin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I mentioned this up front but why? As it happens, I stumbled over this jQuery plugin awhile ago and filed it away for something to look at some day. Turns out it’s a cool plugin which mirrors how the automatic thumbnails in SharePoint are generated. The author created it for Greasemonkey so he could preview larger images on sites without having to click through to a page. It works where the thumbnails and larger images have similar filenames (except for a change or two).&lt;/p&gt;

&lt;p&gt;This works great for SharePoint because the _t or _w directories hold different size images and the filenames are built from the filename of the original image. Once you know one, you can get the image for the other.&lt;/p&gt;

&lt;p&gt;We’ll do this on our gallery (which uses the thumbnails) so when we hover over the image, we present the preview image.&lt;/p&gt;

&lt;p&gt;First upload &lt;a href="http://codebit.wordpress.com/2009/02/27/jquery-thumbnail-popup-plugin-for-greasemonkey/"&gt;the plugin&lt;/a&gt; (a single file, jquery.thumbhover.js) to your Site Assets library (or wherever your other script is). &lt;/p&gt;

&lt;p&gt;Next add the following line to your own script to include the thumbhover one:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:5d2afbab-c6ad-47b7-b8d1-c0e0592f11a6" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 16px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script src&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;/photogallery/SiteAssets/jquery.thumbhover.js&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;We’ll add a call to the plugin for all our images. Remember the IMG tag we added a class named “pictureGallery” to it (line 16 above). Now we can use a jQuery selector to attach the plugin to every IMG file. We need to do this after we rewrite the HTML for the IMG tags so find this line:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:39b83f7a-7f53-4287-b0d0-ed36b124743f" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 15px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;$(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;#pictureMicroGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).html(newHtml);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;And add this after it:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:d5159890-457b-4bf9-a14d-7c988df3862c" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 600px; height: 98px;background-color:#FFFF80;overflow: auto;;font-family:Consolas;font-size:12"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000;"&gt;$(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;img.pictureGallery&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;).thumbPopup({
    imgSmallFlag: &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;_t&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    imgLargeFlag: &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;_w&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    cursorTopOffset: &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
    cursorLeftOffset: &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,
});&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;

&lt;p&gt;This attaches the thumbPopup to every IMG tag with the class “pictureGallery”. The imgSmallFlag is the folder for the small images and the imgLargeFlag is for the medium thumbnails (the _w folder).&lt;/p&gt;

&lt;p&gt;When it comes time to render the popup, the plugin will grab the SRC of the image then change the imgSmallFlag to the imgLargeFlag (so changing the IMG from the 160 pixel wide thumbnail to the 640 pixel one).&lt;/p&gt;

&lt;p&gt;Now when you hover your mouse over the image thumbnails on your page, the plugin will fetch the large thumbnail and use it in the popup. The final effect will look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/bsimser/image_3619C3B2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/bsimser/image_thumb_12013C98.png" width="660" height="493" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enhance it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s it. Now you have a simple script you can drop onto a page and get a cool looking gallery display out of it, leveraging the automatic thumbnails SharePoint generates for you. Of course, that’s only the beginning.&lt;/p&gt;

&lt;p&gt;Some ideas on enhancements you can do to the script:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add in the ability to fade the popups in when you hover over the thumbnail. This will create a nicer effect for the user &lt;/li&gt;

  &lt;li&gt;Display additional text on the popup in an overlay (use the description field from SharePoint for the text!)&lt;/li&gt;

  &lt;li&gt;Change how you display the thumbnail, perhaps link each thumbnail to the original image or SharePoint list item (you’ll need to add more fields to your JavaScript if you want to read them in the success function) &lt;/li&gt;

  &lt;li&gt;Add paging to the list of images so you display them in batches of 20 or 30 &lt;/li&gt;

  &lt;li&gt;Do some better formatting on the gallery and jazz it up a bit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Have fun and don’t be afraid to experiment!&lt;/p&gt;

&lt;p&gt;Last Note: We don’t really *need* jQuery for this to work (except for the hover effect). Most of the code is just plain old JavaScript. The line to replace the contents of the DIV tag can be done with regular JavaScript so if you don’t want the hover effect (which is a jQuery plugin so requires it) and don’t want to use jQuery… then don’t. You’ll still have a simple and free client side photo gallery from the automatic thumbnails SharePoint gives you.&lt;/p&gt;

&lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7948508" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l_LYjO-Ws7Bg_35OCFGSdyl1FN8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l_LYjO-Ws7Bg_35OCFGSdyl1FN8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l_LYjO-Ws7Bg_35OCFGSdyl1FN8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l_LYjO-Ws7Bg_35OCFGSdyl1FN8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=CmJzAHFlk5g:L2S1I16I2C8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=CmJzAHFlk5g:L2S1I16I2C8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=CmJzAHFlk5g:L2S1I16I2C8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=CmJzAHFlk5g:L2S1I16I2C8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><category domain="http://weblogs.asp.net/bsimser/archive/tags/JavaScript/default.aspx">JavaScript</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/09/10/jquery-sharepoint-picture-libraries-and-automatic-thumbnails.aspx</feedburner:origLink></item><item><title>Live SharePoint Data Out Of The Box</title><link>http://feedproxy.google.com/~r/bsimser/~3/kETgRtnsQFE/live-sharepoint-data-out-of-the-box.aspx</link><pubDate>Fri, 05 Aug 2011 13:54:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7898434</guid><dc:creator>Bil Simser</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/bsimser/rsscomments.aspx?PostID=7898434</wfw:commentRss><wfw:comment>http://weblogs.asp.net/bsimser/commentapi.aspx?PostID=7898434</wfw:comment><comments>http://weblogs.asp.net/bsimser/archive/2011/08/05/live-sharepoint-data-out-of-the-box.aspx#comments</comments><description>&lt;p&gt;I posed a question this morning about how many people knew about the live data feature in SharePoint views.&lt;/p&gt;&lt;p&gt;The what?&lt;/p&gt;&lt;p&gt;Yeah, you can configure a view to do live updates. It's a new feature in SharePoint 2010 but one that removes the need for additonal JavaScript code to do it for you. Here's how to do it.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Pick&amp;nbsp;a view you want to see live data for (or create a new view) and navigate to that page.&lt;/li&gt;&lt;li&gt;Click on Site Actions in the menu and choose Edit Page&lt;/li&gt;&lt;li&gt;Select the List View Web Part on the page and open up the Edit Web Part menu to bring up the properties for the web part&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;There's a new section you'll see in the Web Part Properties pane:&lt;/p&gt;&lt;p&gt;&lt;img style="width: 227px; height: 225px;" src="http://weblogs.asp.net/blogs/bsimser/sharepointajax.png" width="227" height="225" mce_src="http://weblogs.asp.net/blogs/bsimser/sharepointajax.png"&gt;&lt;/p&gt;&lt;p&gt;Click on Enable Asynchronous Refresh and set the interval to refresh the data (default is 60 seconds). Click OK and sit back and watch your list view update automagically!&lt;/p&gt;&lt;p&gt;Simple and sweet. Jan Tielens has a larger writeup on this little known feature &lt;a href="http://www.endusersharepoint.com/EUSP2010/2010/03/23/little-sharepoint-2010-gem-ajax-options-in-list-view-web-parts/" mce_href="http://www.endusersharepoint.com/EUSP2010/2010/03/23/little-sharepoint-2010-gem-ajax-options-in-list-view-web-parts/"&gt;here&lt;/a&gt;. It's sad that people don't know this feature is there and free, as in beer. Now, go forth and refresh your listviews without postbacks!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7898434" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Kh-a7C_OtPGOrhmHJaZZqIC1hpE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kh-a7C_OtPGOrhmHJaZZqIC1hpE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Kh-a7C_OtPGOrhmHJaZZqIC1hpE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Kh-a7C_OtPGOrhmHJaZZqIC1hpE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=kETgRtnsQFE:rl_i1r5XswQ:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=kETgRtnsQFE:rl_i1r5XswQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?i=kETgRtnsQFE:rl_i1r5XswQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/bsimser?a=kETgRtnsQFE:rl_i1r5XswQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/bsimser?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><category domain="http://weblogs.asp.net/bsimser/archive/tags/SharePoint+2010/default.aspx">SharePoint 2010</category><feedburner:origLink>http://weblogs.asp.net/bsimser/archive/2011/08/05/live-sharepoint-data-out-of-the-box.aspx</feedburner:origLink></item></channel></rss>

