﻿<?xml version="1.0" encoding="UTF-8"?>
<!--RSS generated by Windows SharePoint Services V3 RSS Generator on 21/05/2013 4:00:08 PM-->
<?xml-stylesheet type="text/xsl" href="/_layouts/RssXslt.aspx?List=c0143750-7a4e-4df3-9dba-8a3651407969" version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Boman.Biz: Posts</title>
    <link>http://wss.boman.biz/Lists/Posts/AllPosts.aspx</link>
    <description>RSS feed for the Posts list.</description>
    <lastBuildDate>Tue, 21 May 2013 06:30:08 GMT</lastBuildDate>
    <generator>Windows SharePoint Services V3 RSS Generator</generator>
    <ttl>60</ttl>
    <image>
      <title>Boman.Biz: Posts</title>
      <url>http://avatar.xboxlive.com/avatar/DashDotDash/avatarpic-l.png</url>
      <link>http://wss.boman.biz/Lists/Posts/AllPosts.aspx</link>
    </image>
    <item>
      <title>JS/Blacole.BW–Google Image Search Virus</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=84</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass7DC461F5B7364DEC9CAF8AA071D2B004><p>This this morning everyone in the office has started getting the following warning from Microsoft Security Essentials when accessing the Google Image Search page – this is even before actually searching for an image!</p> <p>There are some fairly convincing <a href="http://social.technet.microsoft.com/Forums/en-US/Forefrontedgegeneral/thread/e8eb8300-ecdd-4b23-b6df-f6ac0a67a226" target="_blank"><strong><u>noises in Microsoft forums</u></strong></a> that this is indeed a false positive and that new virus definitions are coming in the next few hours.  </p> <p><strong>Update 10:38am</strong>: Indeed this has been confirmed as a false positive – new definitions ETA 2 hours.  The guy at Microsoft that did this will either be fired or promoted <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="/Lists/Posts/Attachments/84/wlEmoticon-winkingsmile_2_4DD85AC9.png"></p> <p><strong>Update 1:04pm</strong>: A new definition update is available that fixes this up.</p> <p align=center> </p> <p align=center><a href="/Lists/Posts/Attachments/84/image_2_682D41CE.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/84/image_thumb_533BBF5B.png" width=428 height=438></a></p></div></div>
<div><b>Category:</b> Computing/IT</div>
<div><b>Published:</b> 15/02/2012 10:38 AM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/84/image_2_682D41CE.png">http://wss.boman.biz/Lists/Posts/Attachments/84/image_2_682D41CE.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/84/image_thumb_533BBF5B.png">http://wss.boman.biz/Lists/Posts/Attachments/84/image_thumb_533BBF5B.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/84/wlEmoticon-winkingsmile_2_4DD85AC9.png">http://wss.boman.biz/Lists/Posts/Attachments/84/wlEmoticon-winkingsmile_2_4DD85AC9.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Computing/IT</category>
      <pubDate>Wed, 15 Feb 2012 00:08:50 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=84</guid>
    </item>
    <item>
      <title>Project Server and the Milli-Minute</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=83</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass5B70C15B449F42D0BCAFDF0C8D3C606F><p>I just thought it was interesting to note that internally Project Server stores durations in what here at IPMO has become known as milli-minutes.</p> <p>In Project Server 1 minute is stored as 1000.  We have dubbed these “MilliMinutes”.</p> <p>Therefore 1 MilliMinute:</p> <ul> <li> = 0.6 seconds</li> <li> = 3 Jiffies</li> <li> = 20.16 MicroFortnights</li> <li> = 52.58 NanoCenturies</li> <li> = 2.38 Dog Seconds (Assuming a dog year is the equivalent of 7 human years) </li></ul></div></div>
<div><b>Category:</b> Project Server 2010</div>
<div><b>Published:</b> 24/01/2012 4:54 PM</div>
]]></description>
      <author>James Boman</author>
      <category>Project Server 2010</category>
      <pubDate>Tue, 24 Jan 2012 06:24:11 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=83</guid>
    </item>
    <item>
      <title>Project Server: Broken Document Information Panel</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=82</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass80427D6929E04281AD56DA08CD0401AA><p>Recently we had a customer who had a Project Server 2010 installation where they couldn’t edit documents the Project Documents library. </p> <p>Whenever an Office file is uploaded and then edited from the SharePoint library, Excel/Word comes up with an error:<br>Required Properties - To save to the server, correct the invalid or missing required properties.<br><img alt="" src="http://social.microsoft.com/Forums/getfile/45429/" width=611 height=31></p> <p>You hit Edit Properties and get:<br>The form cannot be opened. To fix this problem, contact the form designer.<br>Form template: <a href="http://server/sitecollection/site/proppanel.xsn">http://server/sitecollection/site/proppanel.xsn</a><br>The XML Schema for the form template has an invalid value for the following attribute: location<br><img alt="" src="http://social.microsoft.com/Forums/getfile/45430/" width=606 height=182>  <p>This was a really complex one – and had to raise a Microsoft Support call for it.  They did some analysis on the database and determined it was problem with the list schema.</p> <p>In the broken Project Documents libraries there were fields with the SourceID attribute set to “{$ListId:Project Documents;}” where in the Project Documents libraries that do work, this value is actually the GUID of the list where the field resides.  So this problem seems to centre around a field value substitution that has not taken place properly in the Site Templating process.</p> <p>The guys at Microsoft Support did a great job of tracking this problem down.</p> <p>Here is the resulting PowerShell fix:</p><pre class=code><span style="color:#5f9ea0">Apply-Fix </span><span style="color:black">-siteUrl </span><span style="color:maroon">&quot;http://projectserver.local/ProjectWorkspaceURL&quot;

</span><span style="color:blue">function </span><span style="color:#5f9ea0">Apply-Fix</span><span style="color:black">(</span><span style="color:purple">$siteUrl</span><span style="color:black">)
{
    </span><span style="color:#5f9ea0">clear
    Add-PSSnapin </span><span style="color:maroon">&quot;Microsoft.SharePoint.Powershell&quot; </span><span style="color:#5f9ea0">-ErrorAction </span><span style="color:maroon">SilentlyContinue </span><span style="color:green"># -EA 0
    </span><span style="color:black">[</span><span style="color:teal">Environment</span><span style="color:black">]::CurrentDirectory</span><span style="color:red">=</span><span style="color:black">(</span><span style="color:#5f9ea0">Get-Location -PSProvider </span><span style="color:maroon">FileSystem</span><span style="color:black">).ProviderPath
    
    </span><span style="color:blue">foreach </span><span style="color:black">(</span><span style="color:purple">$spwTarget </span><span style="color:blue">in </span><span style="color:black">(</span><span style="color:#5f9ea0">Get-SPSite </span><span style="color:purple">$siteUrl</span><span style="color:black">).RootWeb.Webs) {
        </span><span style="color:#5f9ea0">Write-Host </span><span style="color:maroon">&quot;Checking Web: &quot; </span><span style="color:purple">$spwTarget</span><span style="color:black">.Url
        </span><span style="color:purple">$list </span><span style="color:red">= </span><span style="color:purple">$spwTarget</span><span style="color:black">.Lists[</span><span style="color:maroon">&quot;Project Documents&quot;</span><span style="color:black">]
         
        </span><span style="color:purple">$fields </span><span style="color:red">= </span><span style="color:purple">$list</span><span style="color:black">.fields
         
        </span><span style="color:blue">foreach</span><span style="color:black">(</span><span style="color:purple">$field </span><span style="color:blue">in </span><span style="color:purple">$fields</span><span style="color:black">)
        {
            </span><span style="color:blue">if</span><span style="color:black">(</span><span style="color:purple">$field</span><span style="color:black">.SourceId </span><span style="color:red">-eq </span><span style="color:maroon">'{$ListId:Project Documents;}'</span><span style="color:black">)
            {
                </span><span style="color:purple">$schemaxml </span><span style="color:red">= </span><span style="color:purple">$field</span><span style="color:black">.SchemaXML
                </span><span style="color:purple">$schemaxmldata </span><span style="color:red">= </span><span style="color:black">[</span><span style="color:teal">xml</span><span style="color:black">]</span><span style="color:purple">$schemaxml
                $schemaxmldata</span><span style="color:black">.Field.SetAttribute(</span><span style="color:maroon">&quot;SourceID&quot;</span><span style="color:black">, </span><span style="color:purple">$list</span><span style="color:black">.ID)
                </span><span style="color:purple">$schemaxml </span><span style="color:red">= </span><span style="color:purple">$schemaxmldata</span><span style="color:black">.get_InnerXml()
                </span><span style="color:purple">$field</span><span style="color:black">.SchemaXML </span><span style="color:red">= </span><span style="color:purple">$schemaxml
                $field</span><span style="color:black">.Update()
                </span><span style="color:#5f9ea0">Write-Host </span><span style="color:maroon">&quot;Fixed&quot; </span><span style="color:purple">$field</span><span style="color:black">.Title </span><span style="color:maroon">&quot;field in Project Documents&quot;
            </span><span style="color:black">}
        }
    }
    </span><span style="color:#5f9ea0">Write-Host </span><span style="color:maroon">&quot;Done.&quot;
</span><span style="color:black">}
</span></pre></div></div>
<div><b>Published:</b> 23/01/2012 3:58 PM</div>
]]></description>
      <author>James Boman</author>
      <pubDate>Mon, 23 Jan 2012 05:28:11 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=82</guid>
    </item>
    <item>
      <title>Microsoft Touch Mouse Review</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=80</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassEFB24B4C0BDE4CA79C6AF59461B0EC2D>
<p align=justify><a href="/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_2_40430FD8.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px" title=touch-mouseblkfobfy111-370x313-1294286260 border=0 alt=touch-mouseblkfobfy111-370x313-1294286260 align=left src="/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_thumb_40430FD8.jpg" width=240 height=191></a>My brand new Microsoft Touch Mouse arrived yesterday – hurrah! -  and here are my initial impressions.</p>
<p align=justify>Many of you will be thinking that this is just Microsoft ripping off the Apple ‘Magic Mouse’ – but what these people fail to remember is that Microsoft Research invented this technology, <a href="http://www.youtube.com/watch?v=KJNWu-0gbhQ" target="_blank"><u>showed previews of their working prototypes back in 2009</u></a>, way before Apple’s mouse.  However in true Microsoft style, it has taken them a very long time to get this thing to market.</p>
<p align=justify>EDIT: As it turns out Microsoft and Apple were working on designs at the same time with different implementations (Capactitive/Optical respectively)</p>
<p align=justify><a href="/Lists/Posts/Attachments/80/WP_000543_2_40430FD8.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title="WP_000543" border=0 alt="WP_000543" align=right src="/Lists/Posts/Attachments/80/WP_000543_thumb_2B518D65.jpg" width=244 height=184></a>The packaging is very well designed with a flip-top box lid that exposes the mouse in a kind of jewel case design was very pleasing.</p>
<p align=justify>Generally as a mouse its a very reasonable, responsive unit.  Since it uses BlueTrack, its more sensitive and works on more surfaces than any other regular red LED mouse.  </p>
<p align=justify>My last mouse was a full-size wireless BlueTrack explorer, which was very ergonomically shaped for comfort.  This mouse is not very shaped and has a very straight profile – the upside is that it can be used in either hand, but after a full-day of use I could feel the difference.   </p>
<p align=justify>Another major down-side is that it uses regular AA batteries and doesn’t have a recharging dock, so I will have to re-fuel it with rechargeable batteries  and cycle them through.  Even though the specs say the battery life should be multiple months – real-world use will tell.</p>
<p align=justify><a href="/Lists/Posts/Attachments/80/WP_000544_2_2B518D65.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px" title="WP_000544" border=0 alt="WP_000544" align=left src="/Lists/Posts/Attachments/80/WP_000544_thumb_2B518D65.jpg" width=244 height=184></a>The transceiver is super-tiny and there is a place for it on the under-side of the mouse for those that travel.  For some mysterious reason it comes with a high quality USB extension cable for you to plug the transceiver into in case your PC is far away from your work-area.  Weird because the transceiver is supposed to have a fairly long range anyway *shrug*.</p>
<p align=justify> </p>
<p align=justify> </p>
<p align=justify> </p>
<p align=justify>So now the important part – <strong><u>Multi-touch Gestures</u></strong>.  </p>
<p align=justify><a title="Touch Mouse Video" href="http://www.youtube.com/watch?v=sVsFcKd6NjU&amp;feature=player_embedded" target="_blank"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/80/image_3_2BFF63F6.png" width=628 height=384></a></p>
<p align=justify>In my use of the mouse, the gestures work very well, and are genuinely useful.  I found myself instantly finding the touch scrolling and side to side panning useful.  The gestures are all quite easy to execute with the exception of the ‘Back’ and ‘Forward’ gestures where I found I really have to kink my thumb up and at an angle to get it to recognise it.</p>
<p align=justify>The only <strong>major disappointment</strong> here is that none of the gestures except for scrolling appear to work through a Remote Desktop session.  For most people this will be a non-issue, but for me, I spend the majority of my conscious life using a Remote Desktop to server somewhere and the ‘Back’ gesture doesn’t work - Grrr.  So with that in mind I wouldn’t recommend this mouse for anyone in software development or IT administration – which is a big pity.  Maybe when more of the servers I control get RemoteFX this will become less of an issue, but I don’t think that will happen for a few years.</p>
<p align=justify><a href="/Lists/Posts/Attachments/80/scotty_trek4_2_2B518D65.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;padding-top:0px" title="scotty_trek4" border=0 alt="scotty_trek4" align=left src="/Lists/Posts/Attachments/80/scotty_trek4_thumb_2B518D65.jpg" width=244 height=184></a>In conclusion I wouldn’t say this mouse has changed my life, and I reserve the right to go back to my far more ergonomic, comfortable, rechargeable BlueTrack Explorer – but it certainly is a new and interesting way to interact with Windows 7.  The gage of its success will be if I miss the gestures in a few months time when I sit down a computer with a regular mouse.  Maybe I will think to myself ‘A regular mouse – how quaint’ <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="/Lists/Posts/Attachments/80/wlEmoticon-winkingsmile_2_2B518D65.png"></p>
<ul></ul></div></div>
<div><b>Category:</b> Computing/IT</div>
<div><b>Published:</b> 25/08/2011 11:04 AM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/80/image_3_2BFF63F6.png">http://wss.boman.biz/Lists/Posts/Attachments/80/image_3_2BFF63F6.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/scotty_trek4_2_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/scotty_trek4_2_2B518D65.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/scotty_trek4_thumb_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/scotty_trek4_thumb_2B518D65.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_2_40430FD8.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_2_40430FD8.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_thumb_40430FD8.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/touch-mouseblkfobfy111-370x313-1294286260_thumb_40430FD8.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/video576f5fcc1461_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/video576f5fcc1461_2B518D65.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/wlEmoticon-winkingsmile_2_2B518D65.png">http://wss.boman.biz/Lists/Posts/Attachments/80/wlEmoticon-winkingsmile_2_2B518D65.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000543_2_40430FD8.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000543_2_40430FD8.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000543_thumb_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000543_thumb_2B518D65.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000544_2_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000544_2_2B518D65.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000544_thumb_2B518D65.jpg">http://wss.boman.biz/Lists/Posts/Attachments/80/WP_000544_thumb_2B518D65.jpg</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Computing/IT</category>
      <pubDate>Thu, 25 Aug 2011 01:35:00 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=80</guid>
    </item>
    <item>
      <title>Accessing Project Server Reporting Database from Code</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=78</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassF28EC29660244A179FFAF442F6CBAC57><p><a href="/Lists/Posts/Attachments/78/image_2_2F52EAB5.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image align=right src="/Lists/Posts/Attachments/78/image_thumb_2F52EAB5.png" width=240 height=201></a>“<b>What you must learn is that these rules are no </b><b>different than the rules of a computer system...some of them </b><b>can can be bent. Others...can be broken.”</b></p> <p>When developing software for Project Server 2010, occasionally we need to present information to the user that can only be sourced from the Project Server Reporting database.  Actually getting the data out of the database is a fairly simple exercise, once you know which one it is!  </p> <p>The class that Project Server uses to manage this sort of thing is the <font face="Courier New">PsiServiceApplication</font> that lives in the <font face="Courier New">Microsoft.Office.Project.Server.Administration</font> assembly.  Unfortunately all the classes in this assembly are marked as <strong><u>internal and sealed</u></strong> to prevent unauthorised use – i.e. Us.  </p> <p>So in situations like this, its sometimes necessary to use Reflection to <em>bend</em> the rules a little <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="/Lists/Posts/Attachments/78/wlEmoticon-winkingsmile_2_100931E9.png"></p> <p>Enjoy!</p><pre class=code><span style="color:gray">/// &lt;summary&gt;
/// </span><span style="color:green">Gets the reporting database based on a PWA URL.
</span><span style="color:gray">/// &lt;/summary&gt;
/// &lt;param name=&quot;vstrPWAUrl&quot;&gt;</span><span style="color:green">The PWA URL.</span><span style="color:gray">&lt;/param&gt;
/// &lt;returns&gt;
/// </span><span style="color:green">SPDatabase object representing the required Reporting database or Null if not found
</span><span style="color:gray">/// &lt;/returns&gt;
/// &lt;history&gt;
///     &lt;change user=&quot;JBoman&quot; date=&quot;10/08/2011&quot;&gt;</span><span style="color:green">Initial version.</span><span style="color:gray">&lt;/change&gt;
/// &lt;/history&gt;
</span><span style="color:blue">public </span><span style="color:#2b91af">SPDatabase </span>GetReportingDatabase(<span style="color:blue">string </span>vstrPWAUrl)
{
    <span style="color:#2b91af">Assembly </span>assPSA = <span style="color:#2b91af">Assembly</span>.Load(<span style="color:#a31515">&quot;Microsoft.Office.Project.Server.Administration, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&quot;</span>);
    <span style="color:#2b91af">Type </span>typePsiServiceApplication = assPSA.GetType(<span style="color:#a31515">&quot;Microsoft.Office.Project.Server.Administration.PsiServiceApplication&quot;</span>);

    <span style="color:#2b91af">MethodInfo </span>minfGetServiceAppByIUrl = typePsiServiceApplication.GetMethod(<span style="color:#a31515">&quot;GetServiceAppByUrl&quot;</span>, <span style="color:#2b91af">BindingFlags</span>.NonPublic | <span style="color:#2b91af">BindingFlags</span>.Static);
    <span style="color:blue">object </span>objPsiServiceApplication = minfGetServiceAppByIUrl.Invoke(<span style="color:blue">null</span>, <span style="color:blue">new object</span>[] { vstrPWAUrl });

    <span style="color:blue">if </span>(objPsiServiceApplication != <span style="color:blue">null</span>)
    {
        <span style="color:#2b91af">MethodInfo </span>minfGetSiteList = typePsiServiceApplication.GetMethod(<span style="color:#a31515">&quot;GetSiteList&quot;</span>, <span style="color:#2b91af">BindingFlags</span>.NonPublic | <span style="color:#2b91af">BindingFlags</span>.Instance);
        <span style="color:blue">object </span>objSiteList = minfGetSiteList.Invoke(objPsiServiceApplication, <span style="color:blue">new object</span>[] { Microsoft.SharePoint.Administration.<span style="color:#2b91af">SPUrlZone</span>.Default });
        <span style="color:blue">if </span>(objSiteList != <span style="color:blue">null</span>)
        {
            <span style="color:#2b91af">IEnumerable </span>colSiteList = (<span style="color:#2b91af">IEnumerable</span>)objSiteList;
            <span style="color:#2b91af">IEnumerator </span>enumSiteList = colSiteList.GetEnumerator();
            <span style="color:blue">while </span>(enumSiteList.MoveNext())
            {
                <span style="color:#2b91af">KeyValuePair</span>&lt;<span style="color:blue">string</span>, <span style="color:#2b91af">SPPersistedObject</span>&gt; kvpSite = (<span style="color:#2b91af">KeyValuePair</span>&lt;<span style="color:blue">string</span>, <span style="color:#2b91af">SPPersistedObject</span>&gt;)enumSiteList.Current;
                <span style="color:blue">if </span>(kvpSite.Key.ToLower() == vstrPWAUrl.ToLower())
                {
                    <span style="color:#2b91af">Type </span>typeProjectSite = assPSA.GetType(<span style="color:#a31515">&quot;Microsoft.Office.Project.Server.Administration.ProjectSite&quot;</span>);
                    <span style="color:#2b91af">PropertyInfo </span>pinfReportingDatabase = typeProjectSite.GetProperty(<span style="color:#a31515">&quot;ReportingDatabase&quot;</span>, <span style="color:#2b91af">BindingFlags</span>.Instance | <span style="color:#2b91af">BindingFlags</span>.Public);
                    <span style="color:blue">if </span>(pinfReportingDatabase != <span style="color:blue">null</span>)
                    {
                        <span style="color:blue">object </span>objReportingDatabase = pinfReportingDatabase.GetValue(kvpSite.Value, <span style="color:blue">null</span>);
                        <span style="color:blue">if </span>(objReportingDatabase != <span style="color:blue">null</span>)
                        {
                            <span style="color:blue">return </span>(<span style="color:#2b91af">SPDatabase</span>)objReportingDatabase;
                        }
                    }
                }
            }
        }
    }
    <span style="color:blue">return null</span>;
}
</pre></div></div>
<div><b>Category:</b> Project Server 2010</div>
<div><b>Published:</b> 10/08/2011 12:38 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/78/image_2_2F52EAB5.png">http://wss.boman.biz/Lists/Posts/Attachments/78/image_2_2F52EAB5.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/78/image_thumb_2F52EAB5.png">http://wss.boman.biz/Lists/Posts/Attachments/78/image_thumb_2F52EAB5.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/78/wlEmoticon-winkingsmile_2_100931E9.png">http://wss.boman.biz/Lists/Posts/Attachments/78/wlEmoticon-winkingsmile_2_100931E9.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Project Server 2010</category>
      <pubDate>Wed, 10 Aug 2011 03:08:45 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=78</guid>
    </item>
    <item>
      <title>Hyper-V Failover Cluster with high ping times</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=77</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassFEE4BB6635864216B37425701F4BC59B><p align=justify><a href="/Lists/Posts/Attachments/77/Server---application_4_257BE2C4.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title="Server - application" border=0 alt="Server - application" align=right src="/Lists/Posts/Attachments/77/Server---application_thumb_1_257BE2C4.png" width=119 height=215></a>Today I have been trying to get the Hyper-V Server <a href="http://technet.microsoft.com/en-us/library/cc730692.aspx" target="_blank"><u>Fail-Over Clustering</u></a> working using 2 servers running the new <a href="http://www.microsoft.com/hyper-v-server/en/us/default.aspx" target="_blank"><u>Hyper-V Server</u></a>, which is essentially a Server Core installation with Hyper-V.</p> <p align=justify>The crux of the issue was that we were getting TERRIBLE ping times to the Cluster IP Address and the other IP Address on one of the adapters.  So bad were the ping times that we were also getting lost packets, the cluster wouldn’t validate and everything was bad.</p> <p align=justify>The short story is that the binding order of the network adapters was bad on one of the servers.  Using <a href="http://blog.mpecsinc.ca/2010/03/nic-binding-order-on-server-core-or.html?showComment=1302874303947" target="_blank"><u>this article</u></a> I changed the binding order of the NICs on the server by modifying the registry here:</p> <p align=justify> <strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Linkage</strong></p> <p align=justify>There is <a href="http://social.technet.microsoft.com/Forums/en/windowsserver2008r2highavailability/thread/2535c73a-a347-4152-be7a-ea7b24159520" target="_blank"><u>much difference</u></a> <a href="http://blogs.netapp.com/msenviro/2009/10/hyper-v-networking-best-practices-part-three.html" target="_blank"><u>of opinion</u></a> as to what the <a href="http://social.technet.microsoft.com/Forums/en-US/windowsserver2008r2highavailability/thread/2535c73a-a347-4152-be7a-ea7b24159520" target="_blank"><u>correct binding order</u></a> is, but essentially I changed it to be more like the server that was working.</p> <p align=justify><strong>Warning:</strong> my solution is <strong>NOT</strong> very like any of the suggested binding orders, but my philosophy is that empirical evidence always trumps documentation.</p> <p>Binding order of broken server:</p> <ol> <li><font color="#c0504d"><strong>&lt;Hyper-V Shared Network&gt;</strong></font></li> <li><font color="#c0504d"><strong>Microsoft Failover Cluster Virtual Adapter</strong></font></li> <li><font color="#c0504d"><strong>&lt;iSCSI HBA / Cluster Network&gt; </strong></font></li> <li><font color="#c0504d"><strong>&lt;Management Adapter&gt; </strong></font></li> <li><font color="#c0504d"><strong>Microsoft Virtual Network Switch Adapter</strong></font> </li></ol> <p>Changed order to:</p> <ol> <li><font color="#008000"><strong>&lt;Hyper-V Shared Network&gt;</strong></font></li> <li><font color="#008000"><strong>&lt;iSCSI HBA / Cluster Network&gt; </strong></font></li> <li><font color="#008000"><strong>Microsoft Failover Cluster Virtual Adapter</strong></font></li> <li><font color="#008000"><strong>&lt;Management Adapter&gt; </strong></font></li> <li><font color="#9bbb59"><font color="#008000"><strong>Microsoft Virtual Network Switch Adapter</strong></font> </font></li></ol> <ol></ol> <p>Everything is fine now – small change – but made a big difference.</p></div></div>
<div><b>Category:</b> Computing/IT</div>
<div><b>Published:</b> 7/07/2011 10:42 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/77/Server---application_4_257BE2C4.png">http://wss.boman.biz/Lists/Posts/Attachments/77/Server---application_4_257BE2C4.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/77/Server---application_thumb_1_257BE2C4.png">http://wss.boman.biz/Lists/Posts/Attachments/77/Server---application_thumb_1_257BE2C4.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Computing/IT</category>
      <pubDate>Thu, 07 Jul 2011 13:12:40 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=77</guid>
    </item>
    <item>
      <title>Multi-Colour Bitmaps on the C64</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=76</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass8CEB0D4410B149F3A08D6D4444E1CCC0><p align=justify>A few weeks ago, a friend of my Dad’s wanted to get rid of his old C64 and as it turned out he had only used it a couple of times and it was in great condition still in its original box.</p> <p align=justify>For a small fee I acquired the machine and various accessories, which seem harder and harder to get these days.  I say “harder and harder to get” because I went to a local flee market the other day that had stalls with so-called “Vintage” computing hardware – but all I found were Super Nintendos, Game Cube’s, Playstation 1’s and a few home-built arcade machines with MAME interiors.  Nothing really old or of note.  Maybe I just don’t hang out at the right flee markets *shrug*  A quick search of eBay right now reveals there are only 7 C64’s for sale, so maybe the supply is starting to dry up!</p> <p>I unboxed the C64 and got it started up on the 46” LCD display I had handy:</p> <p align=center><a href="/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_2_65414AF2.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="252990_10150637756720228_660465227_18933211_6032572_n" border=0 alt="252990_10150637756720228_660465227_18933211_6032572_n" src="/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_thumb_65414AF2.jpg" width=364 height=218></a></p> <p align=justify>Seeing that blue screen again gives me a good feeling, its quite a complex thing to describe.  I was lucky discovering computing through the Commodore 64.  As a computers go, its more of an alive creature than today’s computers.  If you turn the volume up on the sound output of a C64 you can hear it processing, give it some work to do and you can hear the patterns in the data … but enough nostalgia <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="/Lists/Posts/Attachments/76/wlEmoticon-winkingsmile_2_65414AF2.png"></p> <p align=justify>I now had a functioning C64, but didn’t have anything interesting to do with it.  It came with a DataSette for loading data from tape, but to do anything really interesting you need a Disk Drive.</p> <p align=center><a href="/Lists/Posts/Attachments/76/200px-Commodore-Datassette_2_65414AF2.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=200px-Commodore-Datassette border=0 alt=200px-Commodore-Datassette src="/Lists/Posts/Attachments/76/200px-Commodore-Datassette_thumb_65414AF2.jpg" width=204 height=167></a>      <a href="/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_2_65414AF2.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="220px-Commodore_1541_front_cropped" border=0 alt="220px-Commodore_1541_front_cropped" src="/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_thumb_65414AF2.jpg" width=224 height=117></a></p> <p align=justify>I used to have a 1541 disk drive of my very own when I was a kid, so I decided to go and get it from storage out of my Mum’s shed.  </p> <p align=justify>Something to know about the 1541 disk drive it that it is a serial device that responds to commands sent to it by the C64.  Electronically its almost as complex and powerful as the C64 itself – certainly alot heavier!</p> <p align=justify>I powered up my 1541 drive, but alas after 15 years sitting in the shed it wasn’t working.  The normal behaviour is that the green light comes on, then the red, the drive motor spins – then the red light and drive motor go off.  My drive motor and red light didn’t go off, which meant the 1541 didn’t pass its own start-up diagnostic process.  Disheartened I opened it up vacuumed it out and checked the obvious rubber belts and mechanics but all seemed fine.</p> <p align=justify>On the main PCB I noticed that all the main IC’s were in sockets.  I thought of a little trick my Dad showed me and gently pressed on each IC until it creaked slightly.  Reassembled and it worked – the red light and drive motor stopped after switching it on.</p> <p align=justify><a href="/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_2_65414AF2.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6" border=0 alt="Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6" src="/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_thumb_65414AF2.jpg" width=614 height=462></a></p> <p align=justify>Now I had a C64 and Disk Drive .. awesome.  </p> <p align=justify>I had an idea and decided I would get the C64 to do some slideshows.  This involved getting the C64 to display coloured bitmaps – an easy task for almost any digital device these days, but back in the 64’s day displaying a photo-realistic image was a difficult task.</p> <p align=justify>The C64 has a display that is 320x200 pixels and there are 16 possible colours on the C64 however that is not the whole story.  The C64 has two bitmap modes:</p> <ol> <li> <div align=justify>Hi-Res Mode: 320x200 2 colours.</div></li> <li> <div align=justify>Multi-Colour Mode: 160x200 with 3 colours per 4x8 square plus a global background colour.</div></li></ol> <p align=justify>It is this second multi-colour mode that I am interested in, and while this mode displays the most colours, we lose half the horizontal resolution in exchange for the increased colour space.</p> <p align=justify>The way it works is that each pixel has two bits assigned to it that specify one of four locations to find a nybble (4 bits) that designate a colour from the full 16 available on the machine.</p> <ul> <li> <div align=justify>00 – Get colour from the global background colour at 53280</div></li> <li> <div align=justify>01 – Upper 4 bits of screen memory (1024 to 2023)</div></li> <li> <div align=justify>10 – Lower 4 bits of screen memory (1024 to 2023)</div></li> <li> <div align=justify>11 – Lower 4 bits Colour memory (55296 to 56295)</div></li></ul> <p align=justify>Each group of 4x8 pixels is assigned one byte from both the screen memory and colour memory to get the additional colour space information.</p> <p align=justify><a href="/Lists/Posts/Attachments/76/image_6_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/76/image_thumb_2_132E9DAB.png" width=617 height=545></a></p> <p align=justify>This makes the total amount of storage consumed 10,001 bytes for the frame, quite a complex setup.  This whole mechanism is aimed at conserving memory as it is pretty tight on a machine that really only has 40k of usable RAM. </p> <p align=left>The next challenge is to get a normal JPG photo into this format – hmmmm </p> <p align=center><a href="/Lists/Posts/Attachments/76/IMAG0304_2_132E9DAB.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=IMAG0304 border=0 alt=IMAG0304 src="/Lists/Posts/Attachments/76/IMAG0304_thumb_132E9DAB.jpg" width=575 height=347></a></p> <p align=left>The first step is to get the photo into the correct dimensions.  </p> <p align=left>Resize into 320x200 first and then warp the aspect ratio into 160x200 – remembering that since all the pixels are double width, the aspect ratio will fix itself up later when it actually renders.</p> <p align=center><a href="/Lists/Posts/Attachments/76/Stage1_2_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=Stage1 border=0 alt=Stage1 src="/Lists/Posts/Attachments/76/Stage1_thumb_132E9DAB.png" width=164 height=204></a></p> <p>Next, we need to get the image into the correct colour space.  I could write my own dithering algorithm, but really Adobe Photoshop does it best.  Just setup a colour table with the 16 C64 colours in it and tell PhotoShop to sort it out:</p> <blockquote> <p align=center><a href="/Lists/Posts/Attachments/76/image_8_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/76/image_thumb_3_132E9DAB.png" width=217 height=197></a></p> <p align=center>Result:</p> <p align=center><a href="/Lists/Posts/Attachments/76/Stage2_2_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=Stage2 border=0 alt=Stage2 src="/Lists/Posts/Attachments/76/Stage2_thumb_132E9DAB.png" width=164 height=204></a></p></blockquote> <p>The next part couldn’t be done by PhotoShop – I wrote a small program in C# to do it:</p> <ul> <li>Survey the entire picture to find the most populous colour – this will become the global background colour.</li> <li>Survey each 4x8 area of the photo find out the 3 most popular colours, and then fit the remaining pixels into the closest fit.</li> <li>Create a file containing the resulting Hi-Res buffer, Screen Memory and Colour memory.</li> <li>Render a preview just for fun <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-smile" alt=Smile src="/Lists/Posts/Attachments/76/wlEmoticon-smile_2_132E9DAB.png"></li></ul>          <p><a href="/Lists/Posts/Attachments/76/image_10_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/76/image_thumb_4_132E9DAB.png" width=614 height=249></a></p>  <p><a href="/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_2_132E9DAB.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title="Photo_85057A8D-07DA-2131-C295-CB38D9B469B8" border=0 alt="Photo_85057A8D-07DA-2131-C295-CB38D9B469B8" align=right src="/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_thumb_132E9DAB.jpg" width=222 height=294></a>So now I have a file that is 10,001 bytes long, just have to get it onto the C64.  Hook up the 1541 via the special serial cable to an old NEC Laptop (its the only thing I had around that actually still has an old SPP style parallel port!) and transfer the file into an SEQ (Sequential) file using an old DOS utility called <a href="http://sta.c64.org/sc.html" target="_blank"><u>Star Commander</u></a> – its a very well written piece of software that uses the PC parallel port to emulate a C64 serial port to talk to the 1541 drive.  Very clever. </p> <p>With heavy reference to the C64 Programmers Reference Guide I wrote a program in BASIC that loads the file from disk and puts all the bytes where they are supposed to go.</p> <p>It was then I also remembered how BASIC on the C64 actually executes … very slowly!</p> <p>Oh well – re-writing it in machine code is a project for later!</p> <p>And the final rendered result on the C64 ……</p> <p> </p> <p><a href="/Lists/Posts/Attachments/76/ccs16_132E9DAB.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=ccs16 border=0 alt=ccs16 src="/Lists/Posts/Attachments/76/ccs16_thumb_132E9DAB.png" width=624 height=458></a></p> <p align=right> </p> <p>…… I don’t know why, but I think thats an awesome result from a 30 year old computer <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-smile" alt=Smile src="/Lists/Posts/Attachments/76/wlEmoticon-smile_2_132E9DAB.png"></p></div></div>
<div><b>Category:</b> Computing/IT</div>
<div><b>Published:</b> 29/06/2011 9:21 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/76/200px-Commodore-Datassette_2_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/200px-Commodore-Datassette_2_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/200px-Commodore-Datassette_thumb_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/200px-Commodore-Datassette_thumb_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_2_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_2_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_thumb_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/220px-Commodore_1541_front_cropped_thumb_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_2_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_2_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_thumb_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/252990_10150637756720228_660465227_18933211_6032572_n_thumb_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/ccs16_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/ccs16_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/ccs16_thumb_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/ccs16_thumb_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/IMAG0304_2_132E9DAB.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/IMAG0304_2_132E9DAB.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/IMAG0304_thumb_132E9DAB.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/IMAG0304_thumb_132E9DAB.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_10_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_10_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_6_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_6_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_8_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_8_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_2_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_2_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_3_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_3_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_4_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/image_thumb_4_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_2_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_2_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_thumb_65414AF2.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_12D4AF35-E6FA-523E-3ACA-E80B0E5491C6_thumb_65414AF2.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_2_132E9DAB.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_2_132E9DAB.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_thumb_132E9DAB.jpg">http://wss.boman.biz/Lists/Posts/Attachments/76/Photo_85057A8D-07DA-2131-C295-CB38D9B469B8_thumb_132E9DAB.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Stage1_2_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/Stage1_2_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Stage1_thumb_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/Stage1_thumb_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Stage2_2_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/Stage2_2_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/Stage2_thumb_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/Stage2_thumb_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/wlEmoticon-smile_2_132E9DAB.png">http://wss.boman.biz/Lists/Posts/Attachments/76/wlEmoticon-smile_2_132E9DAB.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/76/wlEmoticon-winkingsmile_2_65414AF2.png">http://wss.boman.biz/Lists/Posts/Attachments/76/wlEmoticon-winkingsmile_2_65414AF2.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Computing/IT</category>
      <pubDate>Wed, 29 Jun 2011 11:51:12 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=76</guid>
    </item>
    <item>
      <title>Bing Vision to take on Google Goggles</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=75</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass5F07C5C6AE974A0196A7C6E82B128B3C><p><a href="/Lists/Posts/Attachments/75/image_2_6C534454.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image align=right src="/Lists/Posts/Attachments/75/image_thumb_6C534454.png" width=141 height=141></a>While Google Goggles has been around on Android phones for ages, according to <a href="http://www.liveside.net/2011/05/08/new-windows-phone-mango-consumer-features-revealed/" target="_blank"><u>Windows Phone developer podcast</u></a> it looks like Windows Phone 7 will be getting a visual search in the Mango update scheduled for later in the year.  I look forward to pointing my phone at various objects around the house and hitting search to learn more about them.</p> <p>&lt;Begin Usual Rant&gt;</p> <p>Although it might be a bit of a gimmick - hopefully this is a feature makes it outside the US and to Australian users and doesn’t get added to the long list of features of Microsoft Products are gimped for international users:</p> <ul> <li>WP7 Clickable addresses</li> <li>WP7 Copy &amp; Paste (Still without NoDo here in Australia on Omnia 7)</li> <li>Zune Pass</li> <li>Kinect Voice control</li> <li>etc. etc.</li></ul> <p>After getting an iPad2 recently I am gradually moving away from Microsoft for my own mobile computing needs, as I have realised they have chosen not to compete in the Australian market – not being able to offer a way for people to legally purchase content for Windows Phone.</p> <p>Apart from a few music tracks on <a href="http://www.bandit.fm/" target="_blank"><u>bandit.fm</u></a> – it seems iTunes is the only functioning music store for Australian users.  For some weird reason Zune, Rhapsody, Spotify, Last.FM, Netflix, RDIO, Netflix, Amazon Music etc. etc. all don’t want to participate in the Australian market…… FINE.  I will go where the content is … and unfortunately that's Apple iTunes. I never want to hear complaints from any of those companies wishing they had more market-share, because to have market-share you need <strong>Step 1: Participate in the market</strong>.</p> <p>Ahhh…. now I feel better <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none" class="wlEmoticon wlEmoticon-smile" alt=Smile src="/Lists/Posts/Attachments/75/wlEmoticon-smile_2_1A40970D.png"></p></div></div>
<div><b>Published:</b> 9/05/2011 5:05 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/75/image_2_6C534454.png">http://wss.boman.biz/Lists/Posts/Attachments/75/image_2_6C534454.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/75/image_thumb_6C534454.png">http://wss.boman.biz/Lists/Posts/Attachments/75/image_thumb_6C534454.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/75/wlEmoticon-smile_2_1A40970D.png">http://wss.boman.biz/Lists/Posts/Attachments/75/wlEmoticon-smile_2_1A40970D.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <pubDate>Mon, 09 May 2011 07:35:12 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=75</guid>
    </item>
    <item>
      <title>KIN Studio coming to WP7–Called “Mobile Studio”</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=74</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass7CCBAA3285E64F12931EB5BD087483B0><p><a href="/Lists/Posts/Attachments/74/imagesCA5HUKJF_2_7FEABD41.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px" title=imagesCA5HUKJF border=0 alt=imagesCA5HUKJF align=right src="/Lists/Posts/Attachments/74/imagesCA5HUKJF_thumb_2DD80FFA.jpg" width=244 height=153></a>Looks like Microsoft are just now starting up the project to port the KIN studio over to Windows Phone 7, and have decided to hire some interaction designers.</p> <p><strong>“Help us change the way people think about mobile phones. The Mobile Studio will redefine the mobile phone for millions of everyday users around the world.”</strong></p> <p><a href="https://careers.microsoft.com/JobDetails.aspx?jid=39913" target="_blank"><u>Source</u></a></p></div></div>
<div><b>Category:</b> Windows Phone 7</div>
<div><b>Published:</b> 19/04/2011 9:47 AM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/74/imagesCA5HUKJF_2_7FEABD41.jpg">http://wss.boman.biz/Lists/Posts/Attachments/74/imagesCA5HUKJF_2_7FEABD41.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/74/imagesCA5HUKJF_thumb_2DD80FFA.jpg">http://wss.boman.biz/Lists/Posts/Attachments/74/imagesCA5HUKJF_thumb_2DD80FFA.jpg</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Windows Phone 7</category>
      <pubDate>Tue, 19 Apr 2011 00:17:27 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=74</guid>
    </item>
    <item>
      <title>WP7 NoDo Finger Pointing</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=73</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass815D95DB61234DC79E1A377B67545843><p>Microsoft has been collecting a lot of criticism lately for the tardiness of the promised updates to their Windows Phone 7 operating system.  Joe Belifore didn’t help by proclaiming in a <a href="http://channel9.msdn.com/Shows/Counting-Down-to-Mix/Countdown-to-MIX11-Joe-Belfiore-Talks-Phone" target="_blank"><u>video on Channel 9</u></a> that the update process was almost completed – this prompted Microsoft to release a chart with some more details about how the update was progressing, and in Australia at least it points the finger squarely at the carriers as the reason for the hold up:</p> <p><a href="http://www.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx" target="_blank"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/73/image_3_5BB85666.png" width=634 height=127></a></p> <p>However <a href="http://www.alexangas.com/blog/" target="_blank"><u>Alex Angas</u></a> noticed on the Telstra Website a “Software Updates” tab that lists the updates as either having been approved by Telstra, or not having been received from Microsoft:</p> <p><a href="http://www.telstra.com.au/mobile/phones/smartphones.html" target="_blank"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/73/image_6_5BB85666.png" width=635 height=212></a> </p> <p>So it has turned into schoolyard finger pointing match, with the Windows Phone early adopters the losers – as Windows Phone 7 devices purchased today commonly already contain the updates.</p> <p>Microsoft have been innovative in discovering all new ways to totally eliminate any confidence in their mobile platform.  I know I won’t be spending any more time on the Windows Phone application I was writing until Microsoft get the carriers out of the loop and start delivering updates directly to end users.</p> <p>My Samsung Omnia 7 has a big Optus logo in the boot sequence that indicates it has an Optus specific ROM loaded, even though I run it on the 3/Vodafone network so this carrier testing situation is ludicrous and irrelevant and needs to stop. </p></div></div>
<div><b>Category:</b> Windows Phone 7</div>
<div><b>Published:</b> 31/03/2011 10:35 AM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/73/image_3_5BB85666.png">http://wss.boman.biz/Lists/Posts/Attachments/73/image_3_5BB85666.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/73/image_6_5BB85666.png">http://wss.boman.biz/Lists/Posts/Attachments/73/image_6_5BB85666.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Windows Phone 7</category>
      <pubDate>Thu, 31 Mar 2011 00:05:34 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=73</guid>
    </item>
    <item>
      <title>Hey - what happened to Continue Anyway in IE9?</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=72</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassF0C1D57590264A2DBB15E666224ADD2D><p>Another little morsel of knowledge discovered about IE9 – </p> <p>If you use the much hyped IE9 feature and pin a site you you task-bar, you get the favicon for the site in your Windows 7 task bar, which is great.</p> <p>However when using the IE9 window started by the pinned icon, if you encounter an SSL certificate that is untrusted, or invalid in some way (very common for Intranets and doing software development work) you will get this <strong>almost</strong> familiar screen:</p> <p><a href="/Lists/Posts/Attachments/72/image_4_336BA34E.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/72/image_thumb_1_336BA34E.png" width=607 height=280></a></p> <p>Which looks very much like the old Internet Explorer behaviour, <strong>except for one crucial detail – the Continue to this website option is gone</strong>, and you can’t navigate to the location where you were going, the only option being to close the page.</p> <p>It turns out this is a problem specific to when you have IE9 pinned to the task bar, as if you start IE9 using the normal icon in the Start Menu the behaviour on the same site will be different:</p> <p><a href="/Lists/Posts/Attachments/72/image_6_336BA34E.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/72/image_thumb_2_336BA34E.png" width=606 height=280></a></p>   <p>Ahh thats better, now I can actually get some work done.  What is the motivation for the different behaviour?  I have no idea right now, but if I find out I will update this post – In the mean-time I will have to say goodbye to pinning IE9 to the task bar, such a shame since it was a nice feature.</p></div></div>
<div><b>Category:</b> Computing/IT</div>
<div><b>Published:</b> 24/03/2011 1:58 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/72/image_4_336BA34E.png">http://wss.boman.biz/Lists/Posts/Attachments/72/image_4_336BA34E.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/72/image_6_336BA34E.png">http://wss.boman.biz/Lists/Posts/Attachments/72/image_6_336BA34E.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/72/image_thumb_1_336BA34E.png">http://wss.boman.biz/Lists/Posts/Attachments/72/image_thumb_1_336BA34E.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/72/image_thumb_2_336BA34E.png">http://wss.boman.biz/Lists/Posts/Attachments/72/image_thumb_2_336BA34E.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Computing/IT</category>
      <pubDate>Thu, 24 Mar 2011 03:28:20 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=72</guid>
    </item>
    <item>
      <title>Microsoft reveals which carriers are blocking updates</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=71</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass365FD5CCEED846929222CF68F0651001><p>Microsoft has published a page that shows which carriers around the world have let the latest Windows Phone 7 update (NoDo) through, and which carriers are blocking updates from their customers.</p> <p>The blockers are marked as “Testing” – I say this since all indications are that Windows Phone Updates are cumulative, meaning that the carriers cannot choose which updates they will let through (based on their business/competitive interests) as if they let one update through, then all previous updates are installed.  So their basic choice is either to let the customers get updates, or not – and surprisingly many carriers are choosing the former (at least for now).</p> <p>In Australia, Optus clearly seems to be the better carrier when it comes to Windows Phone 7.</p> <p>The page below is located here: <a href="http://www.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx">http://www.microsoft.com/windowsphone/en-us/features/update-schedule-world.aspx</a> </p> <p><a href="/Lists/Posts/Attachments/71/image_2_34504ED2.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=image border=0 alt=image src="/Lists/Posts/Attachments/71/image_thumb_34504ED2.png" width=596 height=137></a></p></div></div>
<div><b>Category:</b> Windows Phone 7</div>
<div><b>Published:</b> 24/03/2011 1:36 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/71/image_2_34504ED2.png">http://wss.boman.biz/Lists/Posts/Attachments/71/image_2_34504ED2.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/71/image_thumb_34504ED2.png">http://wss.boman.biz/Lists/Posts/Attachments/71/image_thumb_34504ED2.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Windows Phone 7</category>
      <pubDate>Thu, 24 Mar 2011 03:06:56 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=71</guid>
    </item>
    <item>
      <title>Windows Phone 7 NoDo Update ready since 19-Nov-2010</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=70</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassFFDB348BADC448D088260F17C624E8AE><p>As the proud owner of a <a href="http://www.omnia7.samsungmobile.com/" target="_blank"><u>Samsung Omnia 7</u></a> since release, I have been eagerly awaiting Microsoft to deliver its promised updates to the product.  Of special note at the release of Windows Phone 7 was the promised addition of <a href="http://www.engadget.com/2010/10/11/copy-and-paste-coming-to-windows-phone-7-in-early-2011/" target="_blank"><u>Copy &amp; Paste “early next year”</u></a>.</p> <p>Since then, some Windows Phone 7 owners have received a preliminary update, the purpose of which was to update the update mechanism itself.  This is fine and many HTC owners have reported the update being received without issue – but Samsung owners are out of luck, as <a href="http://arstechnica.com/microsoft/news/2011/02/everything-that-can-go-wrong-with-windows-phone-7-update-does.ars" target="_blank"><u>reportedly a bug only exhibited by Samsung devices causes the update to fail</u></a>.  My device has not received any updates since launch and so am getting pretty worried nothing will happen, and they will declare it all too hard to update at all.</p> <p>So from an outsider’s point of view, Microsoft seems to be moving at a pace that could be described as slower than molasses uphill in the wintertime – but this leaked internal email from a Microsoft-y shows the NoDo update build 7336 (Copy &amp; Paste, among others) was ready only a few days after the release of the phone, on 19th November last year!  Not only was it released internally but also to “Engineering Partners”.</p> <p>This does make me a little happier, knowing that in the intervening time the Windows Phone development team has had time to work on other features for the <a href="http://www.engadget.com/2010/12/15/windows-phone-7-said-to-be-getting-major-mango-update-in-augus/" target="_blank"><u>upcoming Mango release</u></a> later in the year.</p> <p align=center><a href="/Lists/Posts/Attachments/70/17-3_2_43FACCCF.jpg"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title="17 (3)" border=0 alt="17 (3)" src="/Lists/Posts/Attachments/70/17-3_thumb_43FACCCF.jpg" width=415 height=552></a></p> <p>So I guess the question has shifted to - What’s been holding up the show?  We know its not the development team … but between the phone manufactures and the carriers I’m not sure we are going to get a straight answer for a while to come.</p></div></div>
<div><b>Category:</b> Windows Phone 7</div>
<div><b>Published:</b> 2/03/2011 5:41 PM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/70/17-3_2_43FACCCF.jpg">http://wss.boman.biz/Lists/Posts/Attachments/70/17-3_2_43FACCCF.jpg</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/70/17-3_thumb_43FACCCF.jpg">http://wss.boman.biz/Lists/Posts/Attachments/70/17-3_thumb_43FACCCF.jpg</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>Windows Phone 7</category>
      <pubDate>Wed, 02 Mar 2011 07:11:56 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=70</guid>
    </item>
    <item>
      <title>SharePoint UserProfileManager permission problems</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=23</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClass17B6E5480DC94C18BE6C59C90FF245C4>
<div>Recently I had a problem where I was writing a webpart to modify some user profile values of people other than the logged in user.</div>
<div> </div>
<div>So I do what I usually do, I call:</div>
<div> </div>
<div><span style="color:#2b91af">SPSecurity</span>.RunWithElevatedPrivileges</div>
<div> </div>
<div>and found that even though I was impersonating, I would still get errors saying:</div>
<div> </div>
<div>Property Not Editable. This property can only be modified by an administrator</div>
<div> </div>
<div>or</div>
<div> </div>
<div>You may only modify your own profile, unless you are an administrator</div>
<div> </div>
<div>I then I also tried my other tactic of creating the SPSite using the System Token from:</div>
<div> </div>
<div><span style="color:#2b91af">SPContext</span>.Current.Site.SystemAccount.UserToken</div>
<div> </div>
<div>but again no joy.</div>
<div> </div>
<div>I tried a bunch of different things until I stumbled across <a href="http://www.sharepointblogs.com/nezihtinas/archive/2009/03/24/anonymous-access-and-user-profile-programming.aspx">this post</a>, that suggested setting the HTTPContect to null just before updating the profile.  I thought that could never work, but I tried it anyway.  His post is unavailable and I only managed to get it through Google Cache!  The sample code was:</div>
<div> </div>
<div><span style="color:#2b91af">SPSecurity</span>.RunWithElevatedPrivileges(<span style="color:blue">delegate</span>()<br>{<br>    <span style="color:#2b91af">SPSite </span>sc = <span style="color:blue">new </span><span style="color:#2b91af">SPSite</span>(<span style="color:#2b91af">SPContext</span>.Current.Site.ID);<br>    <span style="color:#2b91af">ServerContext </span>context = <span style="color:#2b91af">ServerContext</span>.GetContext(sc);<br>    <span style="color:#2b91af">HttpContext </span>currentContext = <span style="color:#2b91af">HttpContext</span>.Current;<br>    <span style="color:#2b91af">HttpContext</span>.Current = <span style="color:blue">null</span>;<br>    <span style="color:#2b91af">UserProfileManager </span>profileManager = <span style="color:blue">new </span><span style="color:#2b91af">UserProfileManager</span>(context);<br>    <span style="color:#2b91af">UserProfile </span>user = profileManager.GetUserProfile(<span style="color:#a31515">&quot;DOMAIN\\userName&quot;</span>);<br>    writer.Write(user.PersonalUrl);<br>    <span style="color:#2b91af">HttpContext</span>.Current = currentContext;<br>});</div>
<div> </div>
<div>and to my amazement it works.  It seems with no HTTPContext, SharePoint is unable to determine the current user and so uses the credentials of the actual impersonated user (as it should).</div>
<div> </div>
<div>Disgusting - but it saved the day.</div>
<div> </div>
<div><strong>UPDATE:</strong> Kamilm posted in the comments below a new method for SharePoint 2010:</div>
<div> </div>
<blockquote style="margin-right:0px" dir=ltr>
<div>UserProfileConfigManager upcm = new UserProfileConfigManager(spServiceContext); <br>ProfilePropertyManager ppm = upcm.ProfilePropertyManager; <br>CorePropertyManager cpm = ppm.GetCoreProperties(); <br>CoreProperty cp = cpm.Create(false); <br>ProfileTypePropertyManager ptpm = ppm.GetProfileTypeProperties(ProfileType.User); <br>ProfileTypeProperty ptp = ptpm.Create(cp); <br><br>psp.IsUserEditable = true; // important in this case!</div>
<div> </div>
<div>ProfileSubtypeManager psm = ProfileSubtypeManager.Get(spServerContext); <br>ProfileSubtype ps = psm.GetProfileSubtype(ProfileSubtypeManager.GetDefaultProfileName(ProfileType.User)); <br>ProfileSubtypePropertyManager pspm = ps.Properties; <br>ProfileSubtypeProperty psp = pspm.Create(ptp);</div></blockquote>
<div>I know the User Profile system is different in SPS2010 - so will have to give this a try.  Thanks Kamlin</div>
<div> </div>
<div><strong>UPDATE 25-Feb-2011</strong>:</div>
<div>If you are interested in the cause of this problem see <span style="font-family:'Tahoma','sans-serif';color:black;font-size:8pt">Yohan Belval's comment below - very enlightening.</span></div>
<div> </div></div></div>
<div><b>Category:</b> SharePoint</div>
<div><b>Published:</b> 27/08/2009 12:57 PM</div>
]]></description>
      <author>James Boman</author>
      <category>SharePoint</category>
      <pubDate>Thu, 27 Aug 2009 03:46:15 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=23</guid>
    </item>
    <item>
      <title>SharePoint 2010–Rich Text Validator Bug</title>
      <link>http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=69</link>
      <description><![CDATA[<div><b>Body:</b> <div class=ExternalClassDABF074E28444FAD8F537EBFD48C5087><div class=ExternalClass4186A757DED544E4A7AF5B5F1718D6B8> <p>This one is not particularly exciting, but it might help someone wanting confirmation.  It seems that SharePoint 2010 still has a few bugs that need to be fixed and my colleague <a title="Adrian Bear" href="http://au.linkedin.com/in/adrianbear" target="_blank"><u>Adrian</u></a> actually found this one: </p> <p>On any SharePoint 2010 site:  <ol> <li>Create a new Custom List  <li>Add a Multi-Line Text Box field  <ol> <li>Set type to “Rich Text (Bold, italics, text alignment, hyperlinks)”  <li>Set Required to true.</li></ol> <li>Create a new item  <li>Don’t put any data in and press save</li></ol> <p>The validators fire for title and the new field but also there is a JavaScript bug:  <p><font size=4 face="Courier New">Invalid argument on Line: 2 Char: 141544 in sp.ui.rte.js</font>  <p>or if you have debug switched on:  <p><font size=4 face="Courier New">Invalid argument on Line 7353 in sp.ui.rte.debug.js</font>  <p><a href="/Lists/Posts/Attachments/69/SharePointOOBError_2_5E77B7F7.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px" title=SharePointOOBError border=0 alt=SharePointOOBError src="/Lists/Posts/Attachments/69/SharePointOOBError_thumb_5E77B7F7.png" width=633 height=439></a></p> <p>This is still a problem after the December 2010 CU.</p> <p><strong>*** PROCEED WITH THE FOLLOWING AT YOUR OWN RISK ***</strong></p> <p>If you need an interim fix then we need to fix the offending JavaScript, and doing this breaks my <strong>SharePoint Golden Rule No. 6</strong> – Never Modify the OOB files.  However if you need to do it then you might do something like this:</p> <ol> <li>Navigate to your LAYOUTS folder, usually at C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS  <li>Make a copy of SP.UI.Rte.debug.js and SP.UI.Rte.js to restore for later when this is fixed in an update. (Restore your vanilla copy before running any subsequent CU’s or Service Packs)  <li>Edit the SP.UI.Rte.debug.js around line 7353 …. from this:<br><pre class=code>parentElement: <span style="color:blue">function</span>() {ULSkay:;
    <span style="color:blue">var </span>$v_0 = <span style="color:blue">this</span>.$8;
    <span style="color:blue">if </span>($v_0.parentElement) {
        <span style="color:blue">var </span>$v_2 = $v_0.parentElement();
        <span style="color:blue">var </span>$v_3 = RTE.DomHelper.createRange(window.document);
        <span style="color:blue">if </span>($v_2) {
            $v_3.moveToElementText($v_2);
        }
        <span style="color:blue">while </span>($v_2 &amp;&amp; !$v_3.inRange($v_0)) {
            $v_2 = $v_2.parentNode;
            <span style="color:blue">try </span>{
                $v_3.moveToElementText($v_2);
            }
            <span style="color:blue">catch </span>($$e_3_0) {
            }
        }

</pre>To look like this:<br><pre class=code>parentElement: <span style="color:blue">function </span>() {
        ULSkay: ;
        <span style="color:blue">var </span>$v_0 = <span style="color:blue">this</span>.$8;
        <span style="color:blue">if </span>($v_0.parentElement) {
            <span style="color:blue">var </span>$v_2 = $v_0.parentElement();
            <span style="color:blue">var </span>$v_3 = RTE.DomHelper.createRange(window.document);
            <span style="color:blue">if </span>($v_2) {
<strong><font size=2>                <span style="color:blue">try </span>{
                    $v_3.moveToElementText($v_2);
                } <span style="color:blue">catch </span>(gonk) {
                    </font></strong><strong><font size=2><span style="color:#006400">//Do Nothing - SharePoint Bug.
                </span>}</font></strong>
            }
            <span style="color:blue">while </span>($v_2 &amp;&amp; !$v_3.inRange($v_0)) {
                $v_2 = $v_2.parentNode;
                <span style="color:blue">try </span>{
                    $v_3.moveToElementText($v_2);
                }
                <span style="color:blue">catch </span>($$e_3_0) {
                }
</pre>
<li>Save your changes and copy SP.UI.Rte.debug.js over the top of SP.UI.Rte.js – remembering that you have backups of both of these files to restore before applying future updates.</li></ol>
<p>When testing this, make sure you clear your browser cache.</p>
<p>I really hope they fix this before or in SP1!</p>
<hr>

<p><strong>UPDATE</strong>: Have started a <u><a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/50df5a23-c7c5-4e8b-859f-2a86ef137eb2/">thread on MSDN</a></u> to see if gets any bites: <a href="http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/50df5a23-c7c5-4e8b-859f-2a86ef137eb2/"><u>http://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/50df5a23-c7c5-4e8b-859f-2a86ef137eb2/</u></a></p>
<hr>
</div>
<p><strong>UPDATE 21-Feb-2011:</strong></p>
<p>I have packaged this fix up into a WSP package for easy installation, and more importantly uninstallation prior to installing subsequent cumulative updates or service packs:</p>
<p>
<div style="padding-bottom:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;float:none;padding-top:0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:c499725b-9b15-4279-8726-8e57c4ca3431" class=wlWriterEditableSmartContent><p>Download the package here: <a href="/Lists/Posts/Attachments/69/i-PMO-SharePoint-2010-sp_ui_rte-JavaScript-Fix-1_0_0-Setup_65DC84BA_271e74fa-823d-4568-b784-928f4f6f59fc_65DC84BA.zip" target="_blank"><u>sp.ui.rte JavaScript Fix Package for SharePoint 2010</u></a></p></div></p></div></div>
<div><b>Category:</b> SharePoint 2010</div>
<div><b>Published:</b> 11/02/2011 10:50 AM</div>
<div><b>Attachments:</b> <a href="http://wss.boman.biz/Lists/Posts/Attachments/69/i-PMO-SharePoint-2010-sp_ui_rte-JavaScript-Fix-1_0_0-Setup_65DC84BA_271e74fa-823d-4568-b784-928f4f6f59fc_65DC84BA.zip">http://wss.boman.biz/Lists/Posts/Attachments/69/i-PMO-SharePoint-2010-sp_ui_rte-JavaScript-Fix-1_0_0-Setup_65DC84BA_271e74fa-823d-4568-b784-928f4f6f59fc_65DC84BA.zip</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/69/SharePointOOBError_2_5E77B7F7.png">http://wss.boman.biz/Lists/Posts/Attachments/69/SharePointOOBError_2_5E77B7F7.png</a><br><a href="http://wss.boman.biz/Lists/Posts/Attachments/69/SharePointOOBError_thumb_5E77B7F7.png">http://wss.boman.biz/Lists/Posts/Attachments/69/SharePointOOBError_thumb_5E77B7F7.png</a><br><a href=""></a></div>
]]></description>
      <author>James Boman</author>
      <category>SharePoint 2010</category>
      <pubDate>Fri, 11 Feb 2011 00:20:06 GMT</pubDate>
      <guid isPermaLink="true">http://wss.boman.biz/Lists/Posts/ViewPost.aspx?ID=69</guid>
    </item>
  </channel>
</rss>