<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tristan Watkins on IT Infrastructure &#187; Client applications</title>
	<atom:link href="http://tristanwatkins.com/index.php/category/client-applications/feed/" rel="self" type="application/rss+xml" />
	<link>http://tristanwatkins.com</link>
	<description>Technical guidance for SharePoint, Cloud Services, Windows and more</description>
	<lastBuildDate>Fri, 21 Oct 2011 23:33:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Lync, Strings and Cans</title>
		<link>http://tristanwatkins.com/index.php/lync-strings-cans/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lync-strings-cans</link>
		<comments>http://tristanwatkins.com/index.php/lync-strings-cans/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 13:10:12 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Office 365 Grid]]></category>
		<category><![CDATA[Unified Communications]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Lync]]></category>
		<category><![CDATA[MCU]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[OCS]]></category>
		<category><![CDATA[Office 365]]></category>
		<category><![CDATA[peer-to-peer]]></category>
		<category><![CDATA[Phone]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[telephony]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[WAN]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1974</guid>
		<description><![CDATA[Like a lot of people in the Microsoft partner community, I’ve been catching up with Lync this year and digging in to the finer details with a few of my colleagues. One thing we wanted to understand better was the routing between two users over a LAN, a private WAN, or some other connection where [...]]]></description>
			<content:encoded><![CDATA[<p>Like a lot of people in the Microsoft partner community, I’ve been catching up with Lync this year and digging in to the finer details with a few of my colleagues. One thing we wanted to understand better was the routing between two users over a LAN, a private WAN, or some other connection where all the necessary network ports would be open. Would these clients communicate peer-to-peer? If so, does it always behave the same way, how is it accomplished and what might go wrong?</p>
<p>First, consider an organisation with offices across multiple floors or buildings. Lync may be a very effective means of connecting these employees despite their relatively close proximity. If this traffic can route locally it can be a big plus &#8211; especially if there&#8217;s lots of media traffic. Second, consider an organisation with multiple branches. They invested in private WAN links to connect these branches and don’t necessarily want to route Lync traffic over their internet connections if they can avoid it. For some organisations these will be non-issues, since Lync traffic is optimised for the WAN, but for other organisations this may be important &#8211; particularly if they’re in a part of the world where internet connections are slow or expensive (or both). So we went about testing this with the Lync 2010 client and Office 365 users (the behaviour is the same with Microsoft Online IDs or federated users).</p>
<p><span id="more-1974"></span>After monitoring this network traffic for a bit, I picked up on behaviour I didn’t expect to find. In this case I was making voice or video calls (sometimes referred to as “media” traffic):</p>
<ul>
<li>If all ports are open, media      (voice/video) traffic will route peer-to-peer between the two client      machines (with some important caveats to follow in a later post).</li>
<li>If inbound traffic is      blocked to one of the client machines (for instance by Windows Firewall or another network device),      media traffic will route via the Office 365 Media Edge servers, while      media traffic to the client machine that allows the inbound traffic will      be transmitted directly from peer-to-peer.</li>
</ul>
<p>I didn’t expect this would be the case, but it’s great that it behaves this way. The Lync client is smart enough to send voice/video data over two totally different routes if peer-to-peer communications are open in one direction and closed in the other. I’ll talk more about some caveats to this finding in a later post, but for now I want to consider what this tells us about this tool. Some of my assumptions about Lync were wrong and I think it’s worth pondering where those assumptions came from.</p>
<h3>In search of a new conceptual model</h3>
<p>At a glance, the telephone appears to be the best conceptual model for Lync, whether you’re texting, phoning or making a video call. There are even telephone icons in the Lync client, like this one:</p>
<p><img class="alignnone size-full wp-image-1982" title="LyncCall" src="http://tristanwatkins.com/wp-content/uploads/LyncCall.png" alt="LyncCall Lync, Strings and Cans" width="64" height="20" /></p>
<p>In this telephony model, we assume there is one channel open in both directions, connected by patch panel on a switchboard. Some of us may even have an awareness of the “last mile” of cabling from a central office to personal or business premises.</p>
<p><img class="alignnone" title="Switchboard" src="http://upload.wikimedia.org/wikipedia/commons/4/43/JT_Switchboard_770x540.jpg" alt="JT Switchboard 770x540 Lync, Strings and Cans" width="500" /></p>
<p>Despite the obviousness of this comparison so far, we need to think about the other things Lync can do. The importance of this other functionality can be easy to overlook because this notion of a single open channel is such a deep association with voice communications &#8211; right back to the tin can and string. Even messenger communications evoke this sense of a single private channel, although we know it&#8217;s different than a phone. Perhaps this sticks in the same way because messenger often supplants a phone call and it’s nearly as immediate? Whatever it may be, the “why” is not important, but the phenomenon is.</p>
<h3>Beyond telephony</h3>
<p>Some of the other features we’re talking about here come from Live Meeting and other meeting workspace tools based on desktop sharing. Altogether, we’re looking at messaging, voice, video, desktop sharing, file transfers, whiteboards, presentations and polls. This looks a lot less like a phone call now. It looks more like a conference or a presentation, without having to leave your desk.</p>
<p><img class="alignnone" title="Conference" src="http://upload.wikimedia.org/wikipedia/commons/e/e8/LAR-Konferanse_06_Foto_Lars-Andreas_Kvisle_-_forsamling_5.jpg" alt="LAR Konferanse 06 Foto Lars Andreas Kvisle   forsamling 5 Lync, Strings and Cans" width="500" /></p>
<p>In a physical conference session, speakers may tag-team, or participants may ask questions, but typically a single participant will be sending information to the others when they have the focus. This is the essence of the medium: a group of participants observe one presenter at a time. There is one mixing desk, one source of video to the projectors, etc. If you’re participating in a conference with multiple speakers with microphones, communications suffer until a single participant regains focus. The best illustration of this point is a news panel discussion or a political debate. You get gibberish until things settle down again. Really this isn&#8217;t much different than any other form of communication, but there&#8217;s some pretty clear social norms involved.</p>
<p>This behaviour is clear to see in the Lync client when you have a multiple-participant video call, as the video presentation is automatically switched to the current speaker/mover. To this end, everything comes via a single source. If you prefer the technical jargon, &#8220;<a title="Calls, Flows, Conversations, and MCU Sessions" href="http://msdn.microsoft.com/en-us/library/gg448062.aspx" target="_blank">communication between the local and remote participants is mediated by a modality-specific multipoint control unit (MCU)</a>&#8220;, in the Lync Server topology &#8211; in this case at Office 365. Think of this like a director in live television, who selects the camera to broadcast from many simultaneous inputs. In this case, that’s got a clever algorithm behind it rather than a person.</p>
<p>Now if you take this conference model and shrink it back down to two participants, while using the same tool, not a lot needs to change, but there is a new dimension to the communication &#8211; it’s private again now. Perceptually we are subject to this deeply-engrained association of a single private channel. At a user experience level, nothing really changes except that we always see the other participant because there’s no one else to switch to. At a technical level, and returning to the main point here, the communications can route peer-to-peer because there&#8217;s no need for mediation, assuming all of the necessary network ports are open. Put another way, the traffic routes in a clever way, if possible. The funky thing is that those routes needn&#8217;t be the same.</p>
<h3>Two Strings and Four Cans</h3>
<p><img title="Tradtelefon" src="http://upload.wikimedia.org/wikipedia/commons/0/0a/Tr%C3%A5dtelefon-illustration.png" alt="Tr%C3%A5dtelefon illustration Lync, Strings and Cans" width="500" /></p>
<p>So how should we characterise this “conference”, in light of the fact that it’s private again now and that each client finds its own optimal route? To go all the way back to the tin cans and string, we need to clarify one thing. With a tin can and string, the can is both microphone and loudspeaker, but not at the same time. Now we have two strings and four cans, but each participant has one can acting as a microphone and another as a loudspeaker &#8211; each with its own piece of string. In our original example where one participant’s Windows Firewall was blocking inbound traffic, one of those lines of string has to go out the window and through the cat flap, while the other goes directly through an open door. To labour this strained metaphor further, that means you need a longer piece of string and that the messages on it will take longer to arrive.</p>
<p>Ultimately, I’m not sure how helpful this is as a replacement conceptual model, so I’ve contented myself with an acknowledgement that I’m synthesizing the illusion of a single channel, while smart stuff happens in the background to make sure that I get the best possible private communication over two.</p>
<p>There&#8217;s a few points that fall out of this at the network level:</p>
<ol>
<li>It might be desirable to <a title="Ports and Protocols for Internal Servers" href="http://technet.microsoft.com/en-us/library/gg398833.aspx">open up ports</a> internally to allow this traffic to flow locally or across private WANs, if network security applications or devices would otherwise block it.</li>
<li>This isn’t as simple as looking at a phone call, or even a single HTTP “conversation”, in which a server responds to client requests over the client-initiated channel. This optimised routing will only occur if the sender&#8217;s traffic can reach the other participant over the optimal route &#8211; otherwise it falls back to the Lync servers.</li>
<li>It&#8217;s really useful to monitor this traffic from both clients, if trying to figure out what&#8217;s going on, because they may be doing different things.</li>
<li>All of this changes once you have more than two participants.</li>
</ol>
<p>In <a title="When Lync Online Traffic Routes Peer-to-Peer" href="http://tristanwatkins.com/index.php/when-lync-online-traffic-routes-peer-to-peer/" target="_blank">my next post</a> I’ll dive a bit deeper technically and step through how we monitored this behaviour. I&#8217;ll also reveal some important exceptions to what I&#8217;ve described here, which may throw a wrench or two in the works for <a title="Lync Bandwidth Calculator" href="http://www.microsoft.com/download/en/details.aspx?id=19011" target="_blank">bandwidth calculations</a>.</p>
<p>For the sake of completeness, I should note that I&#8217;m not certain when Lync/Communicator started behaving this way, although for the purposes of setting the scene for my next post, I&#8217;m basically just concerned with Lync and the Office 365 context.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/lync-strings-cans/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Lossless Audio on Windows Phone 7</title>
		<link>http://tristanwatkins.com/index.php/lossless-audio-windows-phone-7/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=lossless-audio-windows-phone-7</link>
		<comments>http://tristanwatkins.com/index.php/lossless-audio-windows-phone-7/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 04:06:16 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Expressions Encoder]]></category>
		<category><![CDATA[lossless]]></category>
		<category><![CDATA[Samsung Omnia 7]]></category>
		<category><![CDATA[WAV]]></category>
		<category><![CDATA[Windows Media Player]]></category>
		<category><![CDATA[Windows Phone 7]]></category>
		<category><![CDATA[WMA]]></category>
		<category><![CDATA[Zune]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1641</guid>
		<description><![CDATA[When I&#8217;m not wearing my SharePoint hat, I try to find the time to make electronic music. Over the last few years I&#8217;ve invested a great deal of time and effort moving from a PC-based Digital Audio Workstation (DAW) to an entirely outboard setup, with a large mixing console and various synths, drum machines, sequencers, [...]]]></description>
			<content:encoded><![CDATA[<p>When I&#8217;m not wearing my SharePoint hat, I try to find the time to make electronic music. Over the last few years I&#8217;ve invested a great deal of time and effort moving from a PC-based Digital Audio Workstation (DAW) to an entirely outboard setup, with a large mixing console and various synths, drum machines, sequencers, samplers and dynamics processors. All of this suits me greatly, as it means I&#8217;m doing one less thing in front of the computer screen.</p>
<p><span id="more-1641"></span></p>
<p>On account of this major preoccupation, I would like to get lossless recordings of my own tracks on my media player. When I purchased the <a href="http://www.omnia7.samsungmobile.com/">Samsung Omnia 7</a>, I was pleased to see it supported .wav files. Since then, I&#8217;ve also purchased a book called <a href="http://www.mixingaudio.com/">Mixing Audio</a>. Being a relatively new Kindle owner, I was all about getting the Kindle version of this book, but unfortunately the digital version doesn&#8217;t come with ~4GB of .wav files that are referenced routinely throughout the text. So I bought the hard copy. This post recounts my experiences trying to get these 2100+ .wav files on to my Windows Phone, as it was less than straight-forward and very time consuming.</p>
<p>The Omnia 7 does not have a MicroSD slot in Europe (in America, this model is known as the Samsung Focus, and it does), so the only way you can transfer files on to the phone is via Zune (or at least, I&#8217;m unaware of any alternatives). Unfortunately, Zune doesn&#8217;t support .wav files, even though the phone does, so I&#8217;m forced to settle for Zune&#8217;s only high-quality format, lossless WMA.</p>
<p>You might wonder why I&#8217;m not transferring the files as mp3. While in most cases I would be perfectly happy to do so, two cases where I&#8217;m not so happy is with my own recordings and mixing examples like these, where you&#8217;re scrutinising the full audio spectrum. Compression would completely alter the reference these files are intended for.</p>
<h3>Transcoding Tools</h3>
<p>So the problem has become converting .WAV files to .WMA Lossless. Easy enough, right? Wrong. Windows Media Player will do this, but only if the files have been burnt to CD/DVD as audio. In this case, I have my own recordings and a DVD with .WAV files as data, so Windows Media Player is no help.</p>
<p>My next stop was <a href="http://www.foobar2000.org/">Foobar</a>, my media player of preference. Foobar has a number of conversions tools OOTB, including FLAC and Ogg Vorbis, but no WMA. There are options to create custom converters, which is actually how I stumbled on to my solution. I found this older <a href="http://www.hydrogenaudio.org/forums/index.php?showtopic=47759">Hydrogen Audio post</a> which details the process of setting up a WMA converter in Foobar. I tried to do this but the errors I was getting in Expression Encoder that I&#8217;ll detail later interfered with the process, so I cut Foobar out of the picture. As I mentioned, I did follow the links in that post to find <a href="http://www.microsoft.com/expression/products/Encoder4_Overview.aspx">Expressions Encoder 4</a>, the  current version of the only other tool that I&#8217;m aware of for transcoding from WAV to WMA. So I installed the .NET Framework version 4 (a pre-requisite) and Expression Encoder, and tried to figure out how to use it. This <a href="http://blogs.msdn.com/b/research/archive/2009/09/18/using-expression-encoder-to-convert-wav-files-to-wma-files.aspx">older post</a> details some of the relevant settings.</p>
<h3>Expressions Encoder</h3>
<p>The first problem I encountered with Expressions Encoder was that the Import function only allows selection of files in a single folder. This was way too limited for my needs, so I had to use Search Companion to find all .wav files in the parent directory (search for *.wav, including subfolders in the Advanced options) and then drag/drop the files in to Expression Encoder, rather than using the Import function. Unfortunately, Expression Encoder couldn&#8217;t seem to handle more than ~600 files at a time before it would crash. It would display the error I mention below, but it appears that the application can&#8217;t cope with that many errors popping up at once.</p>
<p><span style="text-decoration: underline;"><em>OutputFormat.VideoProfile</em>: &#8220;Unable to set properties on null VideoProfile&#8221;<br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/OutputFormatVideoProfile.png"><img title="OutputFormatVideoProfile" src="http://tristanwatkins.com/wp-content/uploads/OutputFormatVideoProfile.png" alt="OutputFormatVideoProfile Lossless Audio on Windows Phone 7" width="500" height="310" /></a></span></p>
<p>Once I figured out I could only convert about 5-600 files in one go, I had to contend with this <em>OutputFormat.VideoProfile</em> error. It popped up for every file that I tried to convert. If converting two-three files it was easy enough to press &#8220;Ignore&#8221; that many times. Not so for hundreds. After a fair amount of trial and error I found that I could kill Expressions Encoder in Task Manager and launch the &#8220;recovered job&#8221; when I re-launched the application, and this would bypass the errors. I assume there&#8217;s a way to set things up in Expressions Encoder to avoid this problem, but I really don&#8217;t have the time to learn how to use it properly given that I&#8217;m already wasting hours on this.</p>
<p><span style="text-decoration: underline;">Found a recovered job &#8216;Untitled&#8217; &#8211; Click here to open it</span><br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/FoundARecoveredJob.png"><img title="FoundARecoveredJob" src="http://tristanwatkins.com/wp-content/uploads/FoundARecoveredJob.png" alt="FoundARecoveredJob Lossless Audio on Windows Phone 7" width="500" height="381" /></a></p>
<p>Once the &#8220;recovered job&#8221; is re-launched, it takes a few minutes for Expressions Encoder to analyse the files. On my three-year old Centrino Duo it took about 15 minutes to analyse ~500 files. Once they&#8217;ve been analysed, you can specify the WMA Lossless format, language and output properties. The actual encoding process is really quick once all of this is done. I think it may be quicker for lossless than for heavily-compressed files.</p>
<p><span style="text-decoration: underline;">The Encode tab on the right is used for specifying the transcoding parameters<br />
</span><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/ExpressionEncoder.png"><img class="alignnone size-full wp-image-1644" title="ExpressionEncoder" src="http://tristanwatkins.com/wp-content/uploads/ExpressionEncoder.png" alt="ExpressionEncoder Lossless Audio on Windows Phone 7" width="500" /></a></p>
<p>Note: you can encode WMA Lossless in up to 24 bits at 96 KHz. Also note that Expressions Encoder was not able to recognise 32-bit source files in my testing, although this might be fixable with the right codec. I worked around this by re-encoding my 32-bit original recordings as 24-bit in <a title="Audacity" href="http://audacity.sourceforge.net/" target="_blank">Audacity</a>, then transcoding these files in Expressions.</p>
<h3>Back to Zune</h3>
<p>Once the files have been transcoded, they need to be added to the Zune Collection and the phone needs to synchronise. My next challenge will be figuring out why only ~650 of the 2100+ files initially appeared in my Zune collection (on the desktop application), although I could see all of them getting added. The next day there were 903. Unfortunately, the desktop application won&#8217;t synchronise the remainder until it knows they exist, so I suspect I&#8217;m now in for some further fiddling, but the lossless audio issue appears to have a viable work-around, even if it&#8217;s incredibly inelegant.</p>
<p>Oh, and to end on a positive note, the lossless files sound great on my phone!</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/lossless-audio-windows-phone-7/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Office Web Apps Infrastructure Considerations</title>
		<link>http://tristanwatkins.com/index.php/office-web-apps-infrastructure-considerations/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=office-web-apps-infrastructure-considerations</link>
		<comments>http://tristanwatkins.com/index.php/office-web-apps-infrastructure-considerations/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 19:17:08 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Licenses]]></category>
		<category><![CDATA[Office 2010]]></category>
		<category><![CDATA[Office Web Apps]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[WAN]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1622</guid>
		<description><![CDATA[I&#8217;ve recently been involved in a somewhat unusual client engagement, in that I was designing and delivering the infrastructure without knowing the shape of the IA or solution architecture. Obviously, this imposed some restrictions on what we could define, but it also meant that I had to handle some aspects of the engagement that would [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been involved in a somewhat unusual client engagement, in that I was designing and delivering the infrastructure without knowing the shape of the IA or solution architecture. Obviously, this imposed some restrictions on what we could define, but it also meant that I had to handle some aspects of the engagement that would normally be taken care of by other colleagues. To that end, I suppose some of these considerations aren&#8217;t purely infrastructure-specific, but they could be in an engagement like this one and they&#8217;re things that infrastructure people should understand. Hopefully it&#8217;ll be useful for solutions people as well.</p>
<p><span id="more-1622"></span></p>
<p>As you will have surmised from the title, we were deploying the Office Web Apps. In this case they were being installed with a new SharePoint Server 2010 Standard farm. This is a list of considerations that cropped up during the engagement and a few other bits I&#8217;ve picked up since RTM:</p>
<ul>
<li><strong>WAN Acceleration</strong>: The Office Web Apps help performance over the WAN. This hadn&#8217;t occurred to me until I read the recently-released TechNet guidance on <a title="Client solutions for WAN environments (SharePoint Server 2010)" href="http://technet.microsoft.com/en-gb/library/gg441256.aspx#section2" target="_blank">geographically-dispersed environments</a>, but this all makes sense, because the documents load progressively. This is explained in more detail in the article. It&#8217;s worth keeping this in mind as an aid for global deployments and worth further taking note of the licensing concerns below if the Office Web Apps will be deployed for this reason.</li>
<li><strong>Licensing</strong>: The Office Web Apps license model is based on the <em>volume license for the Office 2010 client</em>. These licenses are supplementary to any SharePoint license concerns, although you might choose to install both in the same farm. This <a title="The twists and turns of Office Web Apps' software license" href="http://www.infoworld.com/d/developer-world/twists-and-turns-office-web-apps-software-license-895" target="_blank">Infoworld article</a> explains it better than anything else I&#8217;ve read. The major implications of this are:
<ul>
<li>Assuming this Infoworld article is right, and if the farm will be accessed by external users, they will not be covered by a SharePoint FIS license. All of those users will need to have an Office 2010 volume license (not a home license) in order to access these documents in the browser.
<ul>
<li>This license could be provided by the consuming business or whoever, but it would need to be in place. How this would be monitored, what is and isn&#8217;t acceptable use and how licensing audits would work in this scenario are all issues that would need to be inspected in some detail with a licensing specialist.</li>
<li>Presumably you could deploy a web application that&#8217;s disconnected from the Office Web Apps service applications in order to maintain compliance, but then you negate the WAN optimisation benefits mentioned above, and this clearly has broad IA implications. I&#8217;d also recommend confirming the legitimacy of this approach for compliance.</li>
</ul>
</li>
<li>On the other hand, internal users are covered by an Office 2010 volume license if it has been purchased, even if the software isn&#8217;t installed on their machines. You might find this is the case with enterprise agreements. This means internal users can start to take advantage of the Office Web Apps even if an Office 2010 upgrade is months or years in the future.</li>
<li>Talk to a licensing specialist to confirm all of this as it pertains to your deployments, as there are surely other wrinkles I&#8217;m not covering and I&#8217;m basing this on an article written by a journalist rather than Microsoft or a licensing specialist. The only reason I&#8217;m referencing that article is that it&#8217;s the clearest explanation I can find.</li>
</ul>
</li>
<li><strong>Install Media</strong>: Once you&#8217;ve got the licenses in place, you may have some trouble finding the install media. Even though the media is for 64-bit systems, it&#8217;s downloaded from 32-bit downloads on the volume license site.</li>
<li><strong>Caching</strong>: The Office Web Apps Cache is a site collection that should be <a title="Manage the Office Web Apps cache" href="http://technet.microsoft.com/en-us/library/ee837422.aspx#bkmk_move_cache" target="_blank">moved to it&#8217;s own database</a> for each web application (in most cases), as <a title="Office Web App default cache size is 100 GB" href="http://tristanwatkins.com/index.php/office-web-app-default-cache-size-is-100-gb/" target="_blank">the default cache size is 100GB</a>. One way or the other, it&#8217;s a different type of content and it makes sense not to clutter actual content databases with this cache data. There are probably different database backup/restore requirements as well. If the existence of this site collection is news to you, read those links above before going any further.</li>
<li><strong>Topology</strong>: Make sure to plan your <a title="Planning Office Web Apps (Installed on SharePoint 2010 Products)" href="http://technet.microsoft.com/en-us/library/ff431682.aspx#bkmk_server_dist" target="_blank">topology</a> for the Office Web Apps. You will be adding three new service applications and they will tax your system differently based on how they are used. This is a big topic and the planning guidance is fantastic, so I&#8217;ll merely point out the <a title="Estimate performance and capacity requirements for Office Web Apps" href="http://download.microsoft.com/download/7/F/0/7F069D0B-B6BD-4692-868B-E8555BB72445/OfficeWebAppsCapacityPlanningDoc.docx" target="_blank">Estimate performance and capacity requirements for Office Web Apps</a> document and leave it at that.</li>
<li><strong>Database Permissions and Application Pools</strong>: The Office Web Apps have some quite unexpected database permission requirements. From the <a title="Deploy Office Web Apps (Installed on SharePoint 2010 Products)" href="http://technet.microsoft.com/en-us/library/ff431687.aspx" target="_blank">Deploy Office Web Apps</a> TechNet guidance:
<p><em><img src="http://i.technet.microsoft.com/Ff431687.note%28en-us,office.14%29.gif" alt="Ff431687.note%28en us,office.14%29 Office Web Apps Infrastructure Considerations"  title="Office Web Apps Infrastructure Considerations" /><strong>Note: </strong> You can choose to create a new application pool to  be used with a  service application. When creating a new application  pool, you can  specify the security account used by the application pool  to be a  predefined Network Service account, or you can specify a managed   account. <strong>The account must have read\write privileges for the SPContent   database and SPConfig database</strong>. For more information about services   account permissions in SharePoint, see <a id="ctl00_MTCS_main_ctl12" href="http://technet.microsoft.com/en-us/library/cc678863.aspx">Account permissions and security settings (SharePoint Server 2010)</a>.<br />
</em><br />
This blows a few holes in the least-privileged model. In this case, we  chose to create a new application pool for the Office Web Apps service  applications and ran it under the farm account, since the permission requirements are so pervasive. This could be its own separate identity, but the important thing for me is that using the farm account  for these services contains the extensive privileges more than granting  these wider permissions to the Service Applications application pool  would. One way or the other, we&#8217;re looking at a different application  pool for security reasons. And if anyone&#8217;s curious if this is really  necessary, it is. You will be unable to actually use the Office Web Apps  without these database permissions in an otherwise-least-privileged configuration.</li>
</ul>
<p>There are a number of other topics to consider before deploying the Office Web Apps, such as the default open behaviour, Office version requirements, browser support and other topics from the solutions world that I daren&#8217;t venture in to, but hopefully these infrastructure considerations won&#8217;t be overlooked when focusing on those issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/office-web-apps-infrastructure-considerations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Profile Service Connection and Slow First Page Load</title>
		<link>http://tristanwatkins.com/index.php/user-profile-service-connection-slow-first-page-load/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=user-profile-service-connection-slow-first-page-load</link>
		<comments>http://tristanwatkins.com/index.php/user-profile-service-connection-slow-first-page-load/#comments</comments>
		<pubDate>Thu, 04 Nov 2010 15:02:06 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[Application Pool]]></category>
		<category><![CDATA[First Page Load]]></category>
		<category><![CDATA[IIS Reset]]></category>
		<category><![CDATA[Service Application Proxy]]></category>
		<category><![CDATA[Service Connection]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[User Profiles]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1346</guid>
		<description><![CDATA[I&#8217;m presently running some quite methodical SharePoint 2010 development environment performance tests, as we&#8217;re finding that the Dell XPS M1330 we&#8217;ve been using for the last few years doesn&#8217;t really cut it in some scenarios. This has been an on-going issue for some time where I work, but it&#8217;s only recently been prioritised at the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m presently running some quite methodical SharePoint 2010 development environment performance tests, as we&#8217;re finding that the Dell XPS M1330 we&#8217;ve been using for the last few years doesn&#8217;t really cut it in some scenarios. This has been an on-going issue for some time where I work, but it&#8217;s only recently been prioritised at the top of my workload. That it is now my top priority should give some indication how important these issues are for any company that spends significant time customising SharePoint. I&#8217;ll be discussing this wider project in more detail once I&#8217;ve finished my testing in the next couple of weeks, but for now I wanted to share a provisional finding about connecting Web Applications to the User Profile Service Application.</p>
<p><span id="more-1346"></span></p>
<h3>First Page Load After IIS Reset in SharePoint 2010</h3>
<p>One of the key performance indicators I&#8217;m measuring is first page load after an IIS reset.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Why not just do an Application Pool Recycle?</span><br />
Before going any further, I acknowledge that most developers will be able to save a lot of time by recycling application pools rather than resetting IIS &#8211; but there are still scenarios when a full IIS reset is required and we&#8217;re finding that first page load after an IIS reset is a great deal slower in SharePoint 2010 than it was in 2007. First page load has always been notably slow and people have written warm-up scripts to address this scenario post-reboot, but in SharePoint 2010 I&#8217;m noticing speeds are two or three times slower.</p>
<p>I&#8217;d initially hoped that I could use this long first page load time to my advantage, which partially explains the time I&#8217;ve spent working on this issue here. I was thinking, surely if it takes so long, that extra time will give me a more accurate measure of these performance indicators across different systems. However, as I started to test on server class hardware I was finding that the performance gains were by no means linear and much less than I would have expected. This also held true with i7 laptops, i7 desktops and Amazon EC2. Interestingly, it appeared that the CPU was in no way fully utilised on any of these systems when loading the page for the first time, and these timings did not improve by adding additional CPUs. Earlier tests suggested that disk speed was not a significant factor in first page load times and memory is in no way constrained during these tests.</p>
<h3>The Speedy (but evil) White Wizard</h3>
<p>In the second instance, we noticed that not all farms were as slow as most of them seemed to be. We stumbled across this accidentally when testing performance in Amazon Web Services (AWS). A colleague did our initial AWS work and we were both very impressed by the initial performance results. A few days later I joined in the fun and built my first single-server instance. We immediately noticed that my first page load times were approximately double the times that my colleague was seeing. Eventually we identified that he used the Farm Configuration Wizard while I had manually created a separate Application Pool for each of my Service Applications. This warranted further investigation.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">A note about application pooling</span><br />
My approach to creating a separate Application Pool for each Service Application is to some extent a hang-over from SharePoint 2007 least-privileged thinking. I was aware that this approach exceeded recommended Application Pool capacity limits, but I didn&#8217;t let this trouble me too much based on the single-user load; I&#8217;ve always prioritised adherence to the least-privileged model over minor performance degradation. However, based on these seemingly significant performance results, emerging community consensus and the best guidance available today, I decided to reconsider this approach.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">A note about AWS</span><br />
There are a number of broader architectural challenges to conquer when designing a SharePoint 2010 development environment in AWS, which is a topic that I hope to return to in a later post.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">A note about the Farm Configuration Wizard</span><br />
This is the page that greets you immediately after installing SharePoint. It takes care of a lot of Services and Service Applications in one go, but it does some pretty undesirable things as well. In short, for all but the most playful of applications, it&#8217;s not appropriate. Build the Service Applications properly.</p>
<h3>Reconsidering Application Pooling</h3>
<p>As mentioned above, my next step was to quantify the improvements that can be gained through pooling applications. My first test was to delete all of my Service Applications and re-create them in a single application pool. I also deleted all of the web applications and created them in a single, separate Application Pool.</p>
<p>Following my normal development environment build process, I created all of the Service Applications and the Web Applications before tackling the User Profile Service Application. Out of curiosity, I quickly tested first page load times and was happily surprised to find that <strong>they had been cut in half</strong>. So I took a snapshot and created the User Profile Service Application.</p>
<h3>I Blame the User Profile Service Application</h3>
<p>After creating the new User Profile Service Application and running an IISRESET, <em>my first page load of Central Administration was almost exactly as slow as it had been with all the Service Applications in their own pools</em>. This was before creating a synchronisation or doing anything with the newly created Service Application. It was merely provisioned. At my wits end, I called it a night.</p>
<p>Having thought about it some the next morning, I decided to create a new web application with a Blank root Site Collection. I already had a similar web application in my farm but I made one key configuration change to the new one. When creating the web application I created a custom <strong>Application Proxy Group</strong> and removed the <strong>Service Connection</strong> to the User Profile Service Application. I then tested first page load times on my two blank sites. The new site without the Service Connection to the User Profile Service Application loaded as quickly as the sites did before I created the User Profile Service Application. The original site loaded in the same time as the old sites. <strong>The disconnected site was approximately twice as fast to load.</strong></p>
<h3>Validating the Results</h3>
<p>After reaching this provisional finding, I fired up the <a title="Microsoft Information Worker Demo VM" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=751fa0d1-356c-4002-9c60-d539896c66ce" target="_blank">Microsoft Information Worker Demo VM</a>. I wanted to test this on a completely different virtual machine (but on the same hardware). I created two new web applications with two new Blank root site collections. I ommitted the Service Connection to the User Profile Service Application on the second web application again. My timings were nearly identical to the timings on the first machines.</p>
<p>Next, I reverted to the earlier snapshot of my development environment &#8211; the one with each Service Application in a different Application Pool. I created a new web application with the Blank root Site Collection again and got nearly the same results. In this case, all of the results were slightly slower (a couple of seconds) than they were in my snapshot with all the Service Applications and Web Applications pooled together, but the Service Connection to the User Profile Service Application was a much bigger factor (~20 seconds).</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">What about the Farm Configuration Wizard Results?</span><br />
You may be wondering why the sites on the Wizard-configured farm loaded quickly. While I&#8217;ve not spent any time revisiting that environment and I&#8217;ve never spent much time on servers configured by that wizard, I strongly suspect  this is because the User Profile Synchronisation Service had never been successfully provisioned.</p>
<p>I am still in the process of further validating these results across various hardware configurations and within various virtualisation technologies. My tests should provide better data on the benefits of pooling the Service Applications as well. All of these findings are somewhat provisional, but I&#8217;d say the Service Connection results so far are the clearest findings I&#8217;ve got to date, by a considerable margin. In short, I think <strong>you can expect first page load times to be at least twice as quick</strong> when the Web Application is disconnected from the User Profile Service Application.</p>
<h3>But I Kind of Need That Service Connection</h3>
<p>Touché! You often will. In fact, let me back-track and say that I haven&#8217;t really considered how these findings can be applied in the real world yet. In previous development environment iterations, we found that we needed to <a title="SharePoint 2010 (not) in a Workgroup" href="http://tristanwatkins.com/index.php/sharepoint-2010-not-in-a-workgroup/" target="_blank">abandon development in a Workgroup</a> so we could connect to the User Profile Service Application. It may be that some web applications can live without this connection (for instance, many WCM apps), but as I say, my head is deep in performance considerations at the moment and I really haven&#8217;t had time to consider these implications yet. However, I will try to revisit the topic reasonably soon and I welcome comments! One way or the other, it&#8217;s good to have a better understanding of why 2010 first page load times are so much slower than 2007.</p>
<h3>Does this slow anything else down?</h3>
<p>At this point, I haven&#8217;t had a chance to test much else, but I have tested creating a new web application with and without this Service Connection. No impact. I also tried creating a Publishing Portal within those web applications, and again, no impact.</p>
<p>If you&#8217;re curious about the actual performance figures, I hope to publish them in the next couple of weeks. To give a high-level indication, in one environment the connected First Page Load times were ~35 seconds and the disconnected times were ~17 seconds. In slower environments this difference may be even greater.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/user-profile-service-connection-slow-first-page-load/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Save Behaviour in SkyDrive and Office Web Apps</title>
		<link>http://tristanwatkins.com/index.php/save-behaviour-in-skydrive-office-web-apps/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=save-behaviour-in-skydrive-office-web-apps</link>
		<comments>http://tristanwatkins.com/index.php/save-behaviour-in-skydrive-office-web-apps/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 21:52:02 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Backstage]]></category>
		<category><![CDATA[Google Docs]]></category>
		<category><![CDATA[Office Web Apps]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SkyDrive]]></category>
		<category><![CDATA[Windows Live]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1283</guid>
		<description><![CDATA[Being the good SharePoint advocate that I am, I recently tried out the Office Web Apps in SkyDrive (Windows Live) for collaboration with my wife (primarily expenses spread sheets, etc). I&#8217;ve always found Google Docs to be lacking in many ways and I wanted to get more experience with the Office Web Apps since I [...]]]></description>
			<content:encoded><![CDATA[<p>Being the good SharePoint advocate that I am, I recently tried out the Office Web Apps in SkyDrive (Windows Live) for collaboration with my wife (primarily expenses spread sheets, etc). I&#8217;ve always found Google Docs to be lacking in many ways and I wanted to get more experience with the Office Web Apps since I typically use the full Office 2010 client at work. Despite a few annoyances, we were getting on reasonably well, especially since it&#8217;s free. I needed to crack a document open in the full version of Excel 2010 to format in anger once, but this is an acceptable compromise for a free, web-based document store.</p>
<p>Fast-forward to the other day and my wife decided to use the Office Web Apps to draft a document rather than using Microsoft Works or Open Office (the other options on her home laptop). Despite some slow responses periodically, all seemed to work well, or so she thought until she got in to work the next day and opened up a blank document.</p>
<p><span id="more-1283"></span></p>
<p>Cutting to the chase, Word does not auto-save. Typically I think most people (my wife included, of course) would save as they go, but there&#8217;s a big inconsistency in the user experience of the Office Web Apps: there is no Save button in Excel, OneNote or PowerPoint. In fact, there&#8217;s a <strong>Where&#8217;s the Save Button?</strong> dialogue where you&#8217;d expect to find it.</p>
<p><img src="http://tristanwatkins.com/wp-content/uploads/093010_2114_SaveBehavio1.png" alt="093010 2114 SaveBehavio1 Save Behaviour in SkyDrive and Office Web Apps"  title="Save Behaviour in SkyDrive and Office Web Apps" /></p>
<p>On the other hand, Word not only has the Save button, but it doesn&#8217;t auto-save, as the full version of Word does. Note the Save icon also appears beside the Undo and Redo buttons above the Backstage. <span style="text-decoration: underline;"><br />
</span></p>
<p><img src="http://tristanwatkins.com/wp-content/uploads/093010_2114_SaveBehavio2.png" alt="093010 2114 SaveBehavio2 Save Behaviour in SkyDrive and Office Web Apps"  title="Save Behaviour in SkyDrive and Office Web Apps" /><span style="text-decoration: underline;"><br />
</span></p>
<p>In Microsoft&#8217;s defence, if you close the browser or navigate away from a Word document, the browser prompts to save changes, but this is a generic form field message.</p>
<p><img src="http://tristanwatkins.com/wp-content/uploads/093010_2114_SaveBehavio3.png" alt="093010 2114 SaveBehavio3 Save Behaviour in SkyDrive and Office Web Apps" width="560" height="169" title="Save Behaviour in SkyDrive and Office Web Apps" /></p>
<p>It turns out this was <a href="http://www.reghardware.com/2010/04/27/office_2010_web_apps_review/print.html">noted by the Register</a> back at launch.</p>
<blockquote><p>There are many inconsistencies. The buttons for opening a document in desktop Office depend on an ActiveX control or a Firefox plug-in that does not work in Firefox with Office 2007 or 2003 and only works on Windows. Another annoyance is Microsoft disables the ability to create documents in the browser if desktop Office is available, though you can get round this by using Chrome.<em> A further inconsistency is that PowerPoint, Excel, and OneNote save on the fly, but Word makes you click Save.<br />
</em></p></blockquote>
<p>Given that the Auto-save functionality in PowerPoint and Excel are sophisticated enough to capture unsaved data even if navigating away from the document or closing the browser, it&#8217;s not clear to me why some kind of auto-save or warning couldn&#8217;t be built in to Word rather than relying on the browser to display a generic message. Ultimately I suppose this can be handled as a training issue, but a consistent user experience would be preferable, especially if this is targeted at home users.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/save-behaviour-in-skydrive-office-web-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BLOB Cache, HTTP 304 Results and F5/Refresh</title>
		<link>http://tristanwatkins.com/index.php/blob-cache-http-304-results-f5-refresh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blob-cache-http-304-results-f5-refresh</link>
		<comments>http://tristanwatkins.com/index.php/blob-cache-http-304-results-f5-refresh/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 12:57:08 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[304]]></category>
		<category><![CDATA[BLOB]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[cache-control]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[F5]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[max-age]]></category>
		<category><![CDATA[Pragma]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[WCM]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1256</guid>
		<description><![CDATA[A few months ago we launched a new website on SharePoint 2010. One of my main foci on the project was performance and caching is one of the most effective ways to achieve that for a WCM solution. We enabled Output, Object and BLOB caching,  configured exclusions as necessary and were quite pleased with the [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago we launched a new website on SharePoint 2010. One of my main foci on the project was performance and caching is one of the most effective ways to achieve that for a WCM solution. We enabled <a title="Cache settings operations (SharePoint Server 2010)" href="http://technet.microsoft.com/en-us/library/cc261797.aspx" target="_blank">Output, Object and BLOB caching</a>,  configured exclusions as necessary and were quite pleased with the results, especially since <a title="Optimization, BLOB caching and HTTP 304s" href="http://www.sharepointnutsandbolts.com/2009/05/optimization-blob-caching-and-http-304s.html" target="_blank">issues with BLOB Caching in 2007</a> have been resolved in 2010.</p>
<p>A few weeks later I was demonstrating these approaches when it was pointed out that we were getting lots of 304 responses. They occurred with each request for a previously-downloaded BLOB Cached asset (more detail added below). Basically, I overlooked the <em>max-ag</em>e attribute in the BLOB Cache  web.config settings. By default, this attribute isn&#8217;t present in the  web.config file and I simply missed it. Adding this attribute eliminated  the 304 results and the caching configuration was complete. Or so we  thought.</p>
<p style="padding-left: 30px;"><span style="text-decoration: underline;">Edit to provide more detail on the 304 status and <em>Max-Age<br />
</em></span>A 304 response is a <strong>File Not Modified</strong> status (not an error), in this case indicating that the browser is making (potentially) surplus checks for each previously-downloaded BLOB Cached file. The <em>max-age</em> attribute gives the file a lifetime in the <strong>client&#8217;s browser cache</strong> in order to reduce these update checks. To be clear, <em>the BLOB Cache stores large objects on web servers</em> to reduce database traffic, but those objects can be served with a <em>max-age</em> attribute that will <em>determine the object&#8217;s lifetime in the client&#8217;s browser cache</em>. A <em>max-age</em> value of &#8220;14400&#8243; means that browsers will cache the file for four hours before checking for an update. This means that updates to BLOB Cached content may become stale if this value is set too high. A common value would be &#8220;86400&#8243; (24 hours) but we were satisfied with the balance at four hours. In our case, making this update has not yielded a perceptible increase in performance with the current levels of traffic, but it&#8217;s the sort of thing you want to set appropriately in order to optimise things and to allow the environment to scale.</p>
<p><span id="more-1256"></span></p>
<p>So&#8230; yesterday we were told that the 304 results were still appearing after making this change some time ago. When I started testing it I quickly confirmed there were loads of 304 results when I requested BLOB Cached assets for a second time. I tried clearing my browser caches, closed down all browsers and tested in multiple browsers but couldn&#8217;t get to the bottom of it, as the BLOB Cache <em>max-age</em> attribute was definitely set in the web.config file.</p>
<p>A bit stumped, I asked knowledgeable people for help. No luck. To recap, this was the full context:</p>
<ul>
<li>The Caching column in <a title="Fiddler2" href="http://www.fiddler2.com/" target="_blank">Fiddler</a> revealed that the <em>max-age</em> attribute was set. I could see the specified value coming through as &#8220;public, max-age=14400&#8243;. If I changed the value to 86400, the value would get updated on refresh. Clearly the web.config attributes were served correctly.</li>
<li>In IE I noticed the &#8220;Pragma: no-cache&#8221; header. In Firefox I saw &#8220;Cache-Control: max-age=0&#8243;. I couldn&#8217;t figure out where these headers were coming from and suspected that was the source of the problem.</li>
</ul>
<p>Eventually I pinpointed that this behaviour only occurred when I hit F5 or pressed Refresh in the browser. If I typed in the address or clicked on a link I would just get the HTTP 200 results as I would expect. If I hit CRTL+F5, everything would get downloaded afresh (lots of 200s), also as expected. I asked <a title="Chris O'Brien" href="http://www.sharepointnutsandbolts.com/" target="_blank">Chris O&#8217;Brien</a> if he had any ideas why this would only happen with F5/Refresh and he pointed out that this is exactly what does happen, and a lot of people don&#8217;t realise it. Excellent! Learned something new today. Either <em>max-age</em> or F5 could be the cause of the 304 results, but F5 gives a false impression of what users would see when accessing an asset for the second time, unless those users are pressing Refresh a lot. If they&#8217;re browsing normally, they&#8217;ll in fact get a 200 result. If <em>max-age</em> isn&#8217;t set, the 304 results will accurately reveal that users are checking to see if the BLOB Cached file is updated every time they try to access it. In some cases this will be desirable, but it definitely adds up quickly.</p>
<p>Pressing on, I wanted to get to the bottom of what else might be different with F5/Refresh and figure out what was up with those <em>Pragma</em>/<em>Cache-Control</em> headers. <a title="Browser checks if modified(result=304) when not needed " href="http://stackoverflow.com/questions/1965453/browser-checks-if-modifiedresult304-when-not-needed/1965544#1965544" target="_blank">It turns out</a>, it&#8217;s the F5/Refresh itself that generates the <em>Pragma</em>/<em>Cache-Control</em> header. All mysteries solved! Many thanks to Chris for his help with this. Hope this can help someone else.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/blob-cache-http-304-results-f5-refresh/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 SEO Analysis with the IIS SEO Toolkit</title>
		<link>http://tristanwatkins.com/index.php/sharepoint-2010-seo-analysis-with-the-iis-seo-toolkit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sharepoint-2010-seo-analysis-with-the-iis-seo-toolkit</link>
		<comments>http://tristanwatkins.com/index.php/sharepoint-2010-seo-analysis-with-the-iis-seo-toolkit/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 15:30:21 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[IIS]]></category>
		<category><![CDATA[robots.txt]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[sitemap]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=1013</guid>
		<description><![CDATA[The IIS.NET Search Engine Optimization (SEO) Toolkit provides a powerful analysis tool that can generate reports for web editors and can automatically generate sitemaps and robots.txt files as well. These reports not only provide insight in to page rank improvements but also help content editors identify missing/duplicate content and find broken links. This post provides [...]]]></description>
			<content:encoded><![CDATA[<p>The IIS.NET Search Engine Optimization (SEO) Toolkit provides a powerful analysis tool that can generate reports for web editors and can automatically generate sitemaps and robots.txt files as well. These reports not only provide insight in to page rank improvements but also help content editors identify missing/duplicate content and find broken links. This post provides an overview of how the tools can be used by content editors or web managers who do not have access to the server infrastructure and what you can expect to see when running an SEO Analysis against an out of the box SharePoint 2010 Publishing site. I will also review the server tools that generate sitemaps and robots.txt files.</p>
<h2>Installing the SEO Toolkit</h2>
<p>Although Remote Server Administration Tools can be installed on <a href="http://www.microsoft.com/downloads/details.aspx?familyid=9FF6E897-23CE-4A36-B7FC-D52065DE9960&amp;displaylang=en">Windows Vista</a> and <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997d&amp;displaylang=en">Windows 7</a>, I have produced the directions below on my Windows Server 2008 R2 desktop. The instructions should be fundamentally the same for any OS once IIS Manager is available locally, however it is installed. To be crystal clear, the SEO Toolkit can be used by anyone with Windows Vista, Windows 7, Windows Server 2008 or Windows Server 2008 R2. <strong>It is not a requirement to have access to the web server and it is not necessary to install IIS locally</strong>.</p>
<p><span id="more-1013"></span>On Windows Server 2008 and 2008 R2 the IIS Manager Feature can be added through Server Manager, even if the IIS Server Role is not installed.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint21.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint21.png" alt="070710 1528 SharePoint21 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="456" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Expand the Remote Server Administration Tools node and select the Web Server (IIS) Tools node.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint22.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint22.png" alt="070710 1528 SharePoint22 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="368" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Click Next and Install. Wait for the <em>Add Features Wizard</em> to complete and then <a href="http://www.iis.net/download/SEOToolkit">download and install the SEO Toolkit</a>. IIS Manager is available in the Administrative Tools menu and should look something like this when you click on your local machine&#8217;s connection in the left-hand pane.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint23.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint23.png" alt="070710 1528 SharePoint23 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="438" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>The SEO Toolkit home page looks like this.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint24.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint24.png" alt="070710 1528 SharePoint24 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="397" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>I shan&#8217;t go over everything here because there is an excellent three minute video on the SEO Toolkit home page (linked above), which details the basic functionality of the tool.</p>
<h2>Analysing a SharePoint 2010 Publishing site</h2>
<p>Click the first link on the SEO Toolkit landing page and <em>Create a new analysis</em> of your site.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint25.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint25.png" alt="070710 1528 SharePoint25 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="255" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>The analysis takes you directly to the Site Analysis Report.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint26.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint26.png" alt="070710 1528 SharePoint26 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="347" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Clearly, the Violations are of interest. What sort of things do they tell us? I&#8217;ll look at the errors first.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint27.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint27.png" alt="070710 1528 SharePoint27 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="264" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Drilling in to <em>The title is missing</em>, we find that the five pages are links to authenticated content on the out of the box Publishing site template&#8217;s home page, which are 401 unauthenticated errors in this case, since this is an anonymous access zone.</p>
<p><span style="text-decoration: underline;">The Publishing Portal home page, which includes links to authenticated content<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint28.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint28.png" alt="070710 1528 SharePoint28 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="507" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a><br />
</span></p>
<p><span style="text-decoration: underline;">The individual violations</span><br />
<a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint29.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint29.png" alt="070710 1528 SharePoint29 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="448" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>So these errors are unsurprising, now that we know what they are. If this were real content, ideally we would modify it to remove these links to authenticated pages.</p>
<p>So what about that Canonical Formats message?</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint210.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint210.png" alt="070710 1528 SharePoint210 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="369" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>This violation tells us that a single object can be accessed using two different links. In this case we have two sets of duplicated images. The first two .png files are transparent spacers and the second two are orange.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint211.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint211.png" alt="070710 1528 SharePoint211 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="80" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>That&#8217;s precisely the sort of thing we would hope to find out about and correct. So what about &#8220;The page contains broken hyperlinks&#8221;?</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint212.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint212.png" alt="070710 1528 SharePoint212 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="476" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Again, all of these links are broken because they point to authenticated content. It&#8217;s the same story for &#8220;The URL for the hyperlink is broken&#8221;, except for the five .gif files that appear there.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint213.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint213.png" alt="070710 1528 SharePoint213 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="381" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>In this case the images are actually missing. Again, this is exactly the sort of thing we want to know.</p>
<p>Unsurprisingly all of these errors point out fundamental problems in the site which content owners would want to correct even if they were unconcerned with page rank. The warnings, which I skipped over earlier, provide supplementary insight in to changes that can improve page rank in an otherwise functionally-correct website. Rather than discussing those individually, I&#8217;ll just include a screen shot of the Violations tab in the bottom half of the details pane. This tab summarises all of the violations on a selected page, which will improve the editor&#8217;s experience when making these changes.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint214.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint214.png" alt="070710 1528 SharePoint214 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="161" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>What&#8217;s particularly useful about this view is that it is now enumerating each page that violates the specified rule in the top pane, but the Violations tab enumerates all of the violations for the selected object in the top pane (the default home page in this instance).</p>
<p>Some of the other dashboards reveal slow-performing pages, most linked pages, redirects, pages blocked by robots.txt, a status code summary, a list of external links and more. It&#8217;s a very useful set of tools. If this has been at all interesting, it&#8217;s definitely worth reviewing the video and other resources up at <a href="http://www.iis.net/download/seotoolkit">IIS.NET</a>.</p>
<h2>Server tools</h2>
<p>Everything that I&#8217;ve discussed so far can be run against any site that the SEO Toolkit user can browse to. Server access is completely unnecessary. However, there are two added tools that have to be run on the server. This should not be hugely problematic for the content owner, as these tools need to be updated relatively infrequently once they&#8217;ve been set up initially.</p>
<h3>Creating a Sitemap</h3>
<p>Hopping on to my server, I click the <em>Create a new sitemap</em> link and specify the Sitemap file name.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint215.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint215.png" alt="070710 1528 SharePoint215 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="435" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint216.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint216.png" alt="070710 1528 SharePoint216 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="328" height="175" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>This is my favourite bit. When the <em>Add URLs</em> dialogue first launches, it displays the IIS site files in inetpub.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint217.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint217.png" alt="070710 1528 SharePoint217 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="418" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Not very useful for a SharePoint site, is it? But if we <em>Run new Site Analysis</em> from the URL structure drop-down…</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint218.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint218.png" alt="070710 1528 SharePoint218 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="100" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>The New Analysis box pops up.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint219.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint219.png" alt="070710 1528 SharePoint219 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="256" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>After about 40 seconds of analysis (in my environment) we get the SharePoint site map!</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint220.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint220.png" alt="070710 1528 SharePoint220 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="417" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>At the bottom of the dialogue the Change Frequency tells search engines how often pages are likely to change. The priority details how important we consider our site to be relative to other URLs on our site (I must confess I don&#8217;t fully understand how this works, but I&#8217;m not responsible for content. <span style="font-family: Wingdings;"> <img src='http://tristanwatkins.com/wp-includes/images/smilies/icon_smile.gif' alt="icon smile SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" class='wp-smiley' title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /> </span>). You can also tell Search Engines how to identify the Last Modified Date. More information on all of this can be <a href="http://technet.microsoft.com/en-us/library/ee729257(WS.10).aspx">found on TechNet</a>.</p>
<p>One last thing before moving on. We need to add the Sitemap to our robots.txt file. There&#8217;s a handy link in the Actions pane to do so.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint221.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint221.png" alt="070710 1528 SharePoint221 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="311" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint222.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint222.png" alt="070710 1528 SharePoint222 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="435" height="194" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Also note, in the Related Features on the Actions pane, there&#8217;s a link to <em>Robots Exclusion</em>, which brings us to the final tool.</p>
<h3>Robots.txt file management</h3>
<p>If we click the <em>Robots Exclusion</em> link or the <em>View existing rules</em> link from the SEO Toolkit landing page, we can see that our sitemap.xml file is being referenced, as added above.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint223.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint223.png" alt="070710 1528 SharePoint223 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="311" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>This is confirmed if I click the <em>Open Robots.txt</em> link in the Actions pane.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint224.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint224.png" alt="070710 1528 SharePoint224 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="314" height="83" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>If we click <em>Add Disallow Rules</em> or <em>Add Allow Rules</em> we get a similar dialogue, and in both cases we will want to specify our previous Site Analysis for the URL structure.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint225.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint225.png" alt="070710 1528 SharePoint225 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="131" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Now if I want to exclude all of the content that I don&#8217;t want to index I can just tick the appropriate boxes from my last analysis (note that this looks different than the selectable options from the Sitemap dialogue).</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint226.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint226.png" alt="070710 1528 SharePoint226 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="389" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>Voila! Paths are excluded and the robots.txt file is updated.</p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint227.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint227.png" alt="070710 1528 SharePoint227 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="500" height="438" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p><a class="lightbox" href="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint228.png"><img src="http://tristanwatkins.com/wp-content/uploads/070710_1528_SharePoint228.png" alt="070710 1528 SharePoint228 SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" width="310" height="178" title="SharePoint 2010 SEO Analysis with the IIS SEO Toolkit" /></a></p>
<p>One thing to note is that the robots.txt file did not appear for me during testing until after I stopped and started the website in IIS. This is only an issue when it&#8217;s created for the first time, but worth noting. I believe this is also true for the sitemap.xml. file.</p>
<p>So… these are good tools! Once configured, the robots.txt shouldn&#8217;t need to be updated often and the web managers should become aware of any problems soon after they occur through their own use of the reporting tool. In short, these tools devolve a great deal of control and insight and there seems to be very little reason not to use them.</p>
<p>We have also experimented with generating the server side outputs using PowerShell, which a colleague of mine will detail soon and I will post here when ready. If there is any reluctance to use this IIS.NET extension in production infrastructure, a combination of PowerShell for file generation/management and the SEO Toolkit for reporting may be a sensible solution.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/sharepoint-2010-seo-analysis-with-the-iis-seo-toolkit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How Azure improved Groove -&gt; Microsoft Sync Framework</title>
		<link>http://tristanwatkins.com/index.php/how-azure-improved-groove-microsoft-sync-framework/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-azure-improved-groove-microsoft-sync-framework</link>
		<comments>http://tristanwatkins.com/index.php/how-azure-improved-groove-microsoft-sync-framework/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 07:30:33 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[Groove]]></category>
		<category><![CDATA[Office Mobile 2010]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint WorkSpace]]></category>
		<category><![CDATA[Sync Framework]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=869</guid>
		<description><![CDATA[This Microsoft case study reveals how Microsoft&#8217;s SharePoint WorkSpace revamps Groove for 2010 using the Microsoft Sync Framework, an Azure technology that can also be used for systems integration &#8211; not just off-line synchronisation. This should yield a more reliable synchronisation experience, improve scalability and customisation. It&#8217;s worth a quick read. Oh, and did you [...]]]></description>
			<content:encoded><![CDATA[<p>This Microsoft case study reveals how Microsoft&#8217;s SharePoint WorkSpace revamps Groove for 2010 using the Microsoft Sync Framework, an Azure technology that can also be used for systems integration &#8211; not just off-line synchronisation. This should yield a more reliable synchronisation experience, improve scalability and customisation. It&#8217;s worth <a title="Micrsoft Sync Framework" href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000005540" target="_blank">a quick read</a>. Oh, and did you know SharePoint WorkSpace is also a part of <a title="Top 10 benefits of Office Mobile 2010" href="http://www.microsoft.com/Office/2010/en/mobile/default.aspx" target="_blank">Office 2010 Mobile</a>?</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/how-azure-improved-groove-microsoft-sync-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a SharePoint 2007/2010 development environment &#8211; Part VI: Issues and Results</title>
		<link>http://tristanwatkins.com/index.php/building-a-sharepoint-20072010-development-environment-part-vi-issues-and-results/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=building-a-sharepoint-20072010-development-environment-part-vi-issues-and-results</link>
		<comments>http://tristanwatkins.com/index.php/building-a-sharepoint-20072010-development-environment-part-vi-issues-and-results/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 02:05:19 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Consultancy and Design]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[AD LDS]]></category>
		<category><![CDATA[ADAM]]></category>
		<category><![CDATA[Aero Glass]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[net user]]></category>
		<category><![CDATA[NUMA]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Sidebar]]></category>
		<category><![CDATA[Sleep]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=509</guid>
		<description><![CDATA[In the first five parts of this series I covered the project objectives and the system design, then turned my attention to the Hyper-V host image build, automated deployment and the guest virtual machine build. In this post I review some of the questions and issues we&#8217;ve encountered after a few months of working this [...]]]></description>
			<content:encoded><![CDATA[<p>In the first five parts of this series I covered <a title="Building a SharePoint 2007/2010 development environment - Part I:  Introduction and Objectives" href="../?p=497" target="_self">the project objectives</a> and <a title="Building a SharePoint 2007/2010 development environment - Part II: Design" href="../?p=499" target="_self">the system design</a>, then turned my attention to the <a title="Building a SharePoint 2007/2010 development environment - Part III: Host image build and performance benchmarks" href="../?p=503" target="_self">Hyper-V host image build</a>, <a title="Building a SharePoint 2007/2010 development environment - Part IV: Automated deployment" href="../?p=505" target="_self">automated deployment</a> and the <a title="Building a SharePoint 2007/2010 development environment – Part V: Guest Build" href="http://tristanwatkins.com/?p=507" target="_self">guest virtual machine build</a>. In this post I review some of the questions and issues we&#8217;ve encountered after a few months of working this way and some overall reflections on the approach.<span id="more-509"></span></p>
<h2>Issues</h2>
<h3>Guest user accounts</h3>
<p>Guest virtual machines have been configured in a workgroup in order to conserve resources that would be spent on domain services. Additionally, developing on a domain controller is less than ideal for a number of reasons including performance tuning, administrative complexity, start-up times and security.</p>
<p>I created the development virtual machine with 160 local user accounts that have been logged on to the portal and the MySite application in order to create a basic profile. If there is a need to script creation of local user accounts, the <strong>net user</strong> command will be useful. However, this will be of limited assistance for complex profile requirements, since there is no way to synchronise with a directory and since the local users have no associated profile data, but it may be helpful for testing or demonstration.</p>
<p>If LDAP user accounts or other directory objects are required for development purposes (user profiles for instance), consider using <em>Active Directory Lightweight Directory Services</em>. This is the successor to <em>Active Directory Application Mode (ADAM)</em> in Windows Server 2003. It is a Windows LDAP directory that supports user and group objects without a full-blown domain infrastructure.</p>
<p>There will be some scenarios when a full domain services infrastructure is required for development. In those cases it may be preferable to run a second virtual machine as a domain controller.</p>
<h3>Hibernate and Sleep</h3>
<p>Hibernate and Sleep are disabled automatically when Hyper-V is installed. This is by design. Hyper-V disables this functionality, as the guest virtual machines could be damaged by a Hibernate or Sleep operation in the host if they were not saved gracefully. If, on the other hand, all virtual machines had to be put in to a saved state before a host machine could be put to sleep or hibernated, this would mean extending the wait time for these operations to unacceptable levels, as they are also automatically triggered by low battery warnings. Unfortunately we need to live with this behaviour.</p>
<h4>Do not travel with a running laptop</h4>
<p>Putting a running laptop in a bag will cause it to overheat quickly and is likely to damage hardware.</p>
<h4>Improvements to Start-up and Shutdown times</h4>
<p>These builds should start up and shut down in less than two minutes (closer to 90 seconds). Keep in mind that virtual machines can be safely saved and work can be resumed quickly when the machine is restarted. Since all of the development work will be taking place inside the virtual machine, this should reduce the Hibernate/Sleep annoyance.</p>
<h3>Virtual PC won’t run on Windows Server 2008 R2</h3>
<p>Windows Virtual PC will not work on Windows Server 2008 R2, as it was designed specifically for Windows 7. Earlier versions of Virtual PC may install on Windows Server 2008 R2, but they will not co-exist with Hyper-V, so do not install them.</p>
<h3>Hyper-V role won’t work after SysPrep</h3>
<p>This shouldn’t be an issue, as we have set up automated deployment, but it’s worth noting that this is <a title="Hyper-V Installation Tricks - Part 1: Sysprep and Hyper-V" href="http://blogs.msdn.com/mikekol/archive/2008/03/25/hyper-v-installation-tricks-part-1-sysprep-and-hyper-v.aspx" target="_blank">a known issue</a>. There are time-consuming work-arounds to fix some of the problems that this will cause, but they are best considered as a last resort.</p>
<h3>Colour management</h3>
<p>Colours are limited to 16-bit in Hyper-V guests. If a fuller spectrum is required, it should be possible to test in full colour in a browser on the host.</p>
<h3>Resolving host names from an internal domain</h3>
<p>During our pilot we identified that fully-qualified domain names resolved successfully but host names would not resolve without the full domain name. To satisfy this requirement we have added our internal DNS suffixes to the ICS Connection inside the development virtual machine.</p>
<h4>Manually adding DNS suffixes</h4>
<p>If a network adapter in a guest virtual machine loses these settings by deletion/re-creation of the adapter, or for some other reason, the setting can be re-entered as follows:</p>
<ul>
<li>Go to the IPv4 properties on the ICS Connection and select Advanced.</li>
<li>On the DNS tab select the <em>Append these DNS suffixes (in order)</em> radio button.
<ul>
<li>Add <em>internal.domainname.local</em> and <em>other.domainname.com.</em></li>
</ul>
</li>
<li>Un-tick the DNS registration box.</li>
<li>Select OK, OK and Close.</li>
<li>Make sure that this change is captured in all snapshots as necessary.</li>
</ul>
<h3>Internet Explorer (64-bit version)</h3>
<p>Adobe flash player does not currently support 64-bit browsers. You&#8217;ll have to use the 32-bit IE or another browser if you want to view flash files. We recommend using the 32-bit version by default.</p>
<h3>Hyper-V Manager UAC prompt work-around</h3>
<p>If the UAC prompt on Hyper-V Manager is annoying, try launching Server Manager and navigating to Hyper-V in the Roles node. This has the added benefit of exposing the Hyper-V event log messages and service states in that top Hyper-V node. These are not visible in Hyper-V Manager. Awareness of these messages and the service statuses will help to resolve Hyper-V issues faster.</p>
<h3>Test DVD burning</h3>
<p>In our pilot we identified that the DVD burner drivers don’t work <em>for burning</em> in Windows Server 2008 R2 on a Dell XPS M1330. This was also true on a Lenovo laptop. Chipset updates, driver updates and a Microsoft KB registry hack all failed to make a difference. The Matshita (Panasonic subsidiary) site does not support the products directly (they point to the laptop manufacturer). Dell and Lenovo had not released new drivers when we launched. As DVD burning has changed in Windows Server 2008 R2 this may have a wider impact.</p>
<h3>Bluetooth doesn’t work</h3>
<p>The Bluetooth stack is missing from Windows Server 2008 and Windows Server 2008 R2. In Windows Server 2008 there were fairly elaborate means of porting the stack from Vista, but results appear to be spotty at best.</p>
<h3>WorkItemTypeDeniedOrNotExistException when trying to open work items</h3>
<p>This error occurred in the first release of our guest build because I installed Visual Studio 2008 SP1 before the Team Foundation Client (TFC), so the TFC did not get upgraded. The fix is to un/re-install Visual Studio 2008 SP1, or to make sure that the TFC is installed before Visual Studio 2008 SP1.</p>
<h3>NUMA nodes and RAM allocation</h3>
<p>It is important to not exceed NUMA node limits when assigning RAM to virtual machines, although this will not apply to many laptops, as most will have an SMP architecture. It is beyond the scope of this post to go in to NUMA nodes in great detail (and in truth, my understanding of it does not reach beyond a few hours of research), but the limits in your environment should be understood so that performance does not suffer. As a starting point it&#8217;s worth confirming the type of CPU architecture and looking at this in more detail if it is NUMA. The <a href="http://technet.microsoft.com/en-us/library/dd277865.aspx">performance and capacity requirements for Hyper-V</a> document on TechNet explains this well:</p>
<blockquote><p><strong>Configure the correct amount of memory for Hyper-V guests.</strong> During the testing, no change had a greater impact on performance than modifying the amount of RAM allocated to an individual Hyper-V image. Because memory configuration is hardware-specific, you need to test and optimize memory configuration for the hardware you use for Hyper-V.</p>
<p>The initial goal of the testing was to make the Hyper-V image as similar as possible to the physical hardware image against which it was being compared. Based on that goal, the Hyper-V images were originally allocated 32 gigabytes (GB) of RAM, which was the same amount of RAM as was on the physical servers being tested. However, the initial test results showed that with that configuration, the Hyper-V images could sustain a load that was only about 70 percent of the load on the physical hardware. After investigating the Event Viewer on the Hyper-V host machine in the Windows Server 2008  <strong>Custom Views</strong>, <strong>Server Roles</strong>, <strong>Hyper-V Events</strong>, it was discovered that the RAM for the Hyper-V images was being spread across multiple non-uniform memory access NUMA nodes. This information confirmed that performance declined when memory was allocated across nodes. After trying different configurations it was determined that for the hardware being used, 8 GB of RAM was the maximum that could be allocated to a Hyper-V image without crossing NUMA nodes.</p></blockquote>
<p>To reiterate, this means that in Microsoft&#8217;s tests, Hyper-V performed <strong>significantly worse</strong> with 32GB allocated to a virtual machine than it did with an 8GB allocation. The exact size of the NUMA node boundary will vary by vendor, so make certain to gain an understanding of the number of nodes in your system. Divide the total RAM by the number of nodes in order to find the memory limits of a virtual machine. This does not mean that additional virtual machines can’t be run beyond a NUMA node boundary, if there is sufficient RAM available. The node boundary is the limit of optimal process performance. Beyond this limit, the virtual machine will suffer from degraded performance because it needs to use memory from an alocal address space.</p>
<p>However, <strong>NUMA isn&#8217;t the only thing to worry about</strong> when finding an optimal RAM allocation. Based on test results during our pilot we could push our virtual machines to up to 2250MB RAM, depending on the amount of activity in the host. In some cases it may be possible to get up to 2500MB RAM for a virtual machine on a 4GB RAM system, but this was not consistently achievable in our tests. If it’s necessary to achieve that, the virtual machines should be started up soon after booting and before any major client application activity is started on the host machine. Client application activity should be kept to a minimum when allocating this much RAM to virtual machines. We also found that host performance was often reduced to an intolerable level whenever there was less than 2GB RAM available to the host for an extended period of time. 1.75GB RAM may be achievable, but this should be tested extensively for your needs.</p>
<p>Additionally, saving a virtual machine&#8217;s state becomes risky when there is less than 2GB available to the host, as the machine will not resume from the saved state if there is insufficient resource available to it.</p>
<h3>Periodic but routine loss of connectivity on the host machine</h3>
<p>As I&#8217;ve been tracking here, we&#8217;ve documented repeat problems with periodic (but routine) loss of connectivity on the host machine. This is still an open issue. More info here:</p>
<p><a title="Routine loss of connectivity on a Hyper-V host’s external connection" href="http://tristanwatkins.com/?p=115" target="_self">Routine loss of connectivity on a Hyper-V host’s external connection</a><a title="More on routine loss of external network connectivity on Hyper-V hosts (not guests)" href="http://tristanwatkins.com/?p=492" target="_self"><br />
More on routine loss of external network connectivity on Hyper-V hosts (not guests)</a></p>
<h3>Hyper-V performance suffers during graphics-intensive operations</h3>
<p>This has been covered by <a title="Virtual PC Guy" href="http://blogs.msdn.com/Virtual_PC_Guy/" target="_blank">Ben Armstrong</a> in considerable detail and I&#8217;m continuing to track it:<br />
<a title="Hyper-V graphics performance and SharePoint 2010 development" href="http://tristanwatkins.com/?p=203" target="_self">Hyper-V graphics performance and SharePoint 2010 development</a><br />
<a title="Hyper-V graphics performance is on the way… if you need a new laptop" href="http://tristanwatkins.com/?p=247" target="_self">Hyper-V graphics performance is on the way… if you need a new laptop</a><br />
<a title="The definitive word on Hyper-V high-end graphics performance" href="http://tristanwatkins.com/?p=717" target="_self">The definitive word on Hyper-V high-end graphics performance</a></p>
<h3>Aero Glass</h3>
<p>Unfortunately, due to the graphics performance issues in Hyper-V mentioned above, there is a significant graphics performance hit when using Aero Glass. This does not slow down overall systems performance, but graphics-heavy operations will suffer in most Hyper-V environments. To this end, we do not recommend installing Aero Glass, but if you want to put it to the test feel free.</p>
<h4>How to enable Aero Glass</h4>
<ul>
<li>Make sure the Desktop Experience is activated
<ul>
<li>On the Dell XPS M1330, make sure BIOS A14 or later is installed
<ul>
<li>Confirm the latest NVIDIA drivers for Windows 7 x64 are installed</li>
<li>Turn on the Desktop Window Manager Session Manager service and switch to automatic start</li>
<li>Turn on the Themes service and switch to automatic start</li>
<li>Switch to an Aero theme</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>Sidebar</h3>
<p>It is also possible to add the Windows 7 Sidebar to the host dekstop. We haven&#8217;t tested this extensively enough to provide documentation on the best approach, but we have done it successfully. If there is sufficient interest in this technique I will add a follow-up post in future.</p>
<h3>Storage</h3>
<p>Be prepared for snapshots to increase the local storage requirements considerably. Some of our developers are legitimately struggling to work on three projects concurrently with 300GB local storage. One option we are considering is eSATA over PCMCIA as a means of increasing total spindle speed and storage but we have yet to begin testing this approach. We are specifically interested in eSATA since Hyper-V does not support system VHDs on USB. If we pursue this option I&#8217;ll post the results.</p>
<h2>Results</h2>
<h3>Putting things in perspective</h3>
<p>It&#8217;s worth repeating that we&#8217;re asking this system to do many things it was not intended to do. It is a server operating system with an enterprise virtualisation technology. The Microsoft virtualisation team will tell you that Hyper-V was not designed with developers in mind. <a title="Hyper-V versus Desktop Computing" href="http://blogs.msdn.com/virtual_pc_guy/archive/2009/08/21/hyper-v-versus-desktop-computing.aspx#9880925" target="_blank">To quote Ben Armstrong</a>:</p>
<blockquote><p>As is being discussed at length here &#8211; Hyper-V does not play well with high-end video cards (which are far more common on desktops than servers).  Hyper-V also disables sleep and hibernate, as well as increasing the power utilization of the computer.  All of these things would need to be addressed before we could even consider putting Hyper-V in a desktop product.</p></blockquote>
<p>In short, we bent this system to development needs because of the strength of the technology, despite these imperfections. There are fundamental compromises that can&#8217;t be avoided when using a server operating system as a mobile workstation but we believe that we can deliver SharePoint projects as a team better with this technology than without it.</p>
<h3>Hardware</h3>
<p>Whether laptops are the ultimate hardware solution is a different can of worms, which I&#8217;ve chosen to avoid in this series of posts. I&#8217;ve tailored the approach to laptops since that is what we have and the approach can be ported to workstations or shared virtual infrastructure.</p>
<h3>The developer experience and the bottom line</h3>
<p>There&#8217;s no question that using snapshots, import and export in Hyper-V adds a complex tier to the development experience and there will be a learning curve for those who are less familiar with virtualisation or don&#8217;t use the advanced features often. However, we have achieved an immediate and measurable gain in stability and environment consistency through the use of standard builds, snapshots and exported project-defined environments.</p>
<p>Conversely, it&#8217;s worth keeping in mind that as desirable as standardisation is, there are times when it hinders more than it helps and on those occasions a non-standard build may be more appropriate. Considering alternative builds is a much less cumbersome proposition with  the combination of WDS, Shrink Volume and Dual-booted systems or the new Native boot from VHD. The key consideration to keep in mind is that most other approaches will entail a sacrifice of what I lump together as the &#8220;management benefits&#8221; of Hyper-V (snapshot, import and export). For instance, you may consider allowing a team to develop on native operating systems for a project, but then a team member may lose a day if they need to rebuild their system, or the support team may need two days to build an environment in Hyper-V later on, or a team member may need to split her time with a team who use Hyper-V for their project, or the original project may fork. Memories of project difficulties gone-by come flooding back. While it&#8217;s always worth considering options, if you spend time identifying a standard approach for your business, it&#8217;s probably best to stick with it unless there&#8217;s a truly compelling reason not to.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/building-a-sharepoint-20072010-development-environment-part-vi-issues-and-results/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Can a hardened server play a SharePoint 2010 Silverlight Media Web Part?</title>
		<link>http://tristanwatkins.com/index.php/can-a-hardened-server-play-a-sharepoint-2010-silverlight-media-web-part/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=can-a-hardened-server-play-a-sharepoint-2010-silverlight-media-web-part</link>
		<comments>http://tristanwatkins.com/index.php/can-a-hardened-server-play-a-sharepoint-2010-silverlight-media-web-part/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 00:47:24 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[desktop experience]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[Hyper-V]]></category>
		<category><![CDATA[media]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[web part]]></category>
		<category><![CDATA[Windows Server 2008 R2]]></category>
		<category><![CDATA[Windows Update]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=722</guid>
		<description><![CDATA[The answer, obviously enough, is that it can if it has Silverlight installed. Read on if you&#8217;re interested in how the web part will behave in its absence. Last week we built a Windows Server 2008 R2 Hyper-V host that we used for our SharePoint 2010 launch event at Microsoft London. We were practicing the [...]]]></description>
			<content:encoded><![CDATA[<p>The answer, obviously enough, is that it can if it has Silverlight installed. Read on if you&#8217;re interested in how the web part will behave in its absence.</p>
<p><span id="more-722"></span>Last week we built a Windows Server 2008 R2 Hyper-V host that we used for our SharePoint 2010 launch event at Microsoft London. We were practicing the demonstration from connected Windows 7 laptops but we also wanted to understand the limitations of presenting from the host itself, should something go wrong with the networking. For the most part this worked fine, but we ran in to problems when we tried to run the media web part. The dialogue box would pop up as normal, but there was no option to <em>Play</em>. If I clicked <em>View</em> I would be prompted to download the .WMV file. At this point I realised that this hardened server did not have the Desktop Experience enabled, so it didn&#8217;t have a default media player.</p>
<p>After installing the Desktop Experience and rebooting (note: this does a few reboots), the pop-up looked the same; the <em>Play</em> button was still missing. Now if I clicked <em>View</em> it would launch in Windows Media Player.</p>
<p>Eventually it occurred to me that the server might be missing Silverlight. We install it by default, so it took some time for me to catch on. I checked the installed updates and sure enough, it was missing. When I tried to run Windows Update it revealed that Silverlight was the only availably update. I tried to install it and I quickly got error 80244019. Searching for a solution suggested a few possible answers &#8211; mostly network/DNS-related. To expedite things I visited the Silverlight site and installed it manually. I believe the problem may have been DNS or proxy-related but since all other Windows updates installed fine it&#8217;s a bit of a mystery.</p>
<p>Installing Silverlight manually did the trick. The Play option returned in the pop-up and video played normally. Out of curiosity I removed the Desktop Experience and tested again. Everything continued to work normally. All of this is totally clear in retrospect, but with the new technology cocktail that is SharePoint 2010, Silverlight 3, IE8 and Windows Server 2008 R2, it&#8217;s easy enough to loose sight of the obvious.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/can-a-hardened-server-play-a-sharepoint-2010-silverlight-media-web-part/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Recent links</title>
		<link>http://tristanwatkins.com/index.php/recent-links/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recent-links</link>
		<comments>http://tristanwatkins.com/index.php/recent-links/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 00:41:37 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Power]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharedView]]></category>
		<category><![CDATA[Utilities]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=467</guid>
		<description><![CDATA[Power Management and Utility Companies Free web-hosted desktop sharing with a Live ID: Microsoft SharedView 10 cool free modules for PowerShell: PowerShellPack Loads of free scripts at the TechNet Script Center Gallery]]></description>
			<content:encoded><![CDATA[<ul>
<li><a title="System Center Team Blog" href="http://blogs.technet.com/systemcenter/archive/2009/10/05/power-management-and-utility-companies.aspx" target="_blank">Power Management and Utility Companies</a></li>
<li>Free web-hosted desktop sharing with a Live ID: <a title="Microsoft SharedView" href="http://www.microsoft.com/downloads/details.aspx?familyid=95af94ba-755e-4039-9038-63005ee9d33a&amp;displaylang=en" target="_blank">Microsoft SharedView</a></li>
<li>10 cool free modules for PowerShell: <a title="PowerShellPack" href="http://code.msdn.microsoft.com/PowerShellPack" target="_blank">PowerShellPack</a></li>
<li>Loads of free scripts at the <a title="TechNet Script Center Gallery" href="http://gallery.technet.microsoft.com/scriptcenter/en-us/" target="_blank">TechNet Script Center Gallery</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/recent-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Office 2010 image background removal</title>
		<link>http://tristanwatkins.com/index.php/office-2010-image-background-removal/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=office-2010-image-background-removal</link>
		<comments>http://tristanwatkins.com/index.php/office-2010-image-background-removal/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 00:00:02 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[background removal]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[Office 2010]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=454</guid>
		<description><![CDATA[The Office Engineering blog recently published an excellent overview of Office 2010 image background removal. These image tools in Office 2010 are some of the most useful new features. &#8220;Background Removal is a new feature in Word, Excel, PowerPoint and Outlook that makes this process quick and easy for any picture. Unlike similar tools, the [...]]]></description>
			<content:encoded><![CDATA[<div dir="ltr">The <a title="Office 2010 Engineering Blog" href="http://blogs.technet.com/office2010/archive/2009/10/19/the-magic-of-background-removal.aspx" target="_blank">Office Engineering blog</a> recently published an excellent  overview of Office 2010 image background removal. These image tools in Office  2010 are some of the most useful new features.</div>
<blockquote style="margin-right: 0px;" dir="ltr">
<div>&#8220;Background Removal is a new feature in Word, Excel, PowerPoint and Outlook  that makes this process quick and easy for any picture. Unlike similar tools,  the Office Background Removal tool doesn’t just select color ranges or trim to a  border you draw. Background Removal uses new capabilities and algorithms from  the Microsoft Research and Development team in Cambridge, UK to achieve better  results automatically with very little effort or fine tuning from the user.&#8221;</div>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/office-2010-image-background-removal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Foobar has a Thumbnail Toolbar</title>
		<link>http://tristanwatkins.com/index.php/more-on-foobar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=more-on-foobar</link>
		<comments>http://tristanwatkins.com/index.php/more-on-foobar/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 22:45:49 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Foobar]]></category>
		<category><![CDATA[taskbar]]></category>
		<category><![CDATA[Thumbnail toolbar]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=178</guid>
		<description><![CDATA[I just stumbled across an article that explains how to get Foobar controls on the Windows 7 taskbar. More on the Thumbnail Toolbar here. Foobar and Windows 7 FTW!]]></description>
			<content:encoded><![CDATA[<p>I just stumbled across an article that explains <a title="Foobar on Windows 7" href="http://www.downloadsquad.com/2009/09/03/add-windows-7-taskbar-features-to-foobar-2000/" target="_blank">how to get Foobar controls on the Windows 7 taskbar</a>. More on the <a title="Windows 7 Taskbar Evolution" href="http://blogs.msdn.com/e7/archive/2008/11/20/happy-anniversary-windows-on-the-evolution-of-the-taskbar.aspx" target="_blank">Thumbnail Toolbar</a> here. Foobar and Windows 7 FTW!</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/more-on-foobar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The search for a good Acrobat Reader alternative</title>
		<link>http://tristanwatkins.com/index.php/the-search-for-a-good-acrobat-reader-alternative/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-search-for-a-good-acrobat-reader-alternative</link>
		<comments>http://tristanwatkins.com/index.php/the-search-for-a-good-acrobat-reader-alternative/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 22:56:39 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Acrobat Reader]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Foobar]]></category>
		<category><![CDATA[FoxIt]]></category>
		<category><![CDATA[MuPDF]]></category>
		<category><![CDATA[PDF]]></category>
		<category><![CDATA[PDF-XChange]]></category>
		<category><![CDATA[Sumatra]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=154</guid>
		<description><![CDATA[Back in April, Slashdot pointed me to a C-Net article in which F-Secure&#8217;s chief research officer recommended moving away from Adobe Acrobat Reader. Personally, I needed little incentive. I&#8217;ve disliked Acrobat Reader fairly intensely for some time and I&#8217;d already moved to FoxIt Reader.  Acrobat Reader is massive, it constantly prompts for updates and evidently it doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Back in April, <a title="SlashDot" href="http://news.slashdot.org/article.pl?sid=09/04/22/222237" target="_blank">Slashdot</a> pointed me to a <a title="C-Net" href="http://news.cnet.com/8301-1009_3-10224449-83.html" target="_blank">C-Net article</a> in which F-Secure&#8217;s chief research officer recommended moving away from Adobe Acrobat Reader. Personally, I needed little incentive. I&#8217;ve disliked Acrobat Reader fairly intensely for some time and I&#8217;d already moved to <a title="FoxIt Reader" href="http://www.foxitsoftware.com/pdf/reader/" target="_blank">FoxIt Reader</a>.  Acrobat Reader is massive, it constantly prompts for updates and evidently it doesn&#8217;t prompt for update enough, given the number of holes that have recently been revelaed.</p>
<p>I thought FoxIt was a good alternative for the first year or so that I was using it, but (like an adolescent) as it matured some things about it started to annoy me and I thought it was worth trying out some of the alternatives on the market. Of the Windows options from the <a title="PDF Readers dot org" href="http://pdfreaders.org/" target="_blank">F-Secure recommendation</a>, I didn&#8217;t get very far with Okular or Yap but I spent a good deal of time with <a title="Sumatra" href="http://blog.kowalczyk.info/software/sumatrapdf/index.html" target="_blank">Sumatra</a> at work and <a title="MuPDF" href="http://ccxvii.net/mupdf/" target="_blank">MuPDF</a> with the <a title="MuPDF plugin" href="http://ccxvii.net/mupdf/plugin/install.html" target="_blank">plugin for Firefox</a> at home. I wasn&#8217;t unhappy with either of these options, as my PDF reader requirements are very basic. I love that Sumatra can be run without installing anything and is small enough to carry around on a memory stick. No more PDF readers on servers&#8230; However, after inflicting Sumatra on some unwitting recipients, I decided to find a heftier alternative, as they need more than up, down and zoom.</p>
<p>Enter: <a title="PDFXChange" href="http://www.docu-track.com/home/prod_user/PDF-XChange_Tools/pdfx_viewer/" target="_blank">DocuTrack&#8217;s PDF-XChange Viewer</a>. It&#8217;s got loads of features, is reasonably lightweight and does the job in every way that I&#8217;ve put it to the test. The only thing that irritates me is the size and number of toolbars running by default, but they&#8217;re easy enough to turn off. Admittedly my needs are few, but I&#8217;ve not had any other complaints about it since pushing it to about 20 other people. If you fancy taking the plunge and take me up on any of these suggestions, I&#8217;d love to hear feedback, as I&#8217;m discovering that it&#8217;s nearly as divisive as the media player question. <a title="Foobar 2000" href="http://www.foobar2000.org/" target="_blank">I &lt;3 Foobar</a>, for the record.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/the-search-for-a-good-acrobat-reader-alternative/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>K2, Thematic and a hex colour picking tool</title>
		<link>http://tristanwatkins.com/index.php/k2-thematic-and-a-hex-colour-picking-tool/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=k2-thematic-and-a-hex-colour-picking-tool</link>
		<comments>http://tristanwatkins.com/index.php/k2-thematic-and-a-hex-colour-picking-tool/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 01:00:37 +0000</pubDate>
		<dc:creator>Tristan Watkins</dc:creator>
				<category><![CDATA[Client applications]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[Hex colour]]></category>
		<category><![CDATA[K2]]></category>
		<category><![CDATA[stylesheet]]></category>
		<category><![CDATA[Thematic]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://tristanwatkins.com/?p=82</guid>
		<description><![CDATA[I generally don&#8217;t do anything front-end if I can help it, but I&#8217;ll get my hands dirty when I need to. I recently played with a number of different K2 stylesheets and the newer Thematic framework while redesigning this site. I could only find one child theme that I really liked for Thematic, which was [...]]]></description>
			<content:encoded><![CDATA[<p>I generally don&#8217;t do anything front-end if I can help it, but I&#8217;ll get my hands dirty when I need to. I recently played with a number of different <a title="K2" href="http://getk2.com" target="_blank">K2</a> stylesheets and the newer <a title="Thematic" href="http://themeshaper.com/" target="_blank">Thematic framework</a> while redesigning this site. I could only find one child theme that I really liked for Thematic, which was <a title="Second to none" href="http://www.altamentedecorativo.com/en/child-themechild-themes/second-to-none-child-theme-for-thematic/" target="_blank">Second to None</a>, but I wanted a dark version, so I set to work trying to interpret his stylesheet and inverted all of the background and text colours (as a starting point). This probably sounds easier than it is with the complexity of stylesheets today. At any rate, I eventually gave up when I realised that all of the icons looked funny in this inverted scheme, but I thought I&#8217;d share the <a title="Hex colour picking tool" href="http://www.openstockphotography.org/color-search/2772b3" target="_blank">Hex Colour picking tool</a> that I found when bumbling through this, as I would have been lost with out it.</p>
]]></content:encoded>
			<wfw:commentRss>http://tristanwatkins.com/index.php/k2-thematic-and-a-hex-colour-picking-tool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

