<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Geekswithblogs.net</title><link>http://www.geekswithblogs.net/RssPopular.aspx</link><description>Geekswithblogs.net</description><generator>Subtext Version 0.0.0.0</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/geekswithblogs/popular" /><feedburner:info uri="geekswithblogs/popular" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Use the NotMapped Attribute with Entity Framework in Partial Classes</title><category>Entity Framework</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/QUjBtjMGRA0/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx</link><pubDate>Wed, 15 May 2013 09:32:32 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Aligned/archive/2013/05/15/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx</guid><wfw:comment>http://geekswithblogs.net/Aligned/comments/152932.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Aligned/comments/commentRss/152932.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Aligned/archive/2013/05/15/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Aligned/services/trackbacks/152932.aspx</trackback:ping><source url="http://geekswithblogs.net/Aligned/rss.aspx">Programming and Learning from SD</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/Aligned/archive/2013/05/15/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx'&gt;http://geekswithblogs.net/Aligned/archive/2013/05/15/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I wanted to add a property to send to my JavaScript class through WebApi, but didn’t want it in the database. I was getting an error telling me I had an invalid name on the EF 5 selection from the database. Adding the &lt;a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.notmappedattribute(v=vs.103).aspx" target="_blank"&gt;NotMapped attribute&lt;/a&gt; to the property did the trick. I get it on the JavaScript side as well. I found the answer (again) on &lt;a href="http://stackoverflow.com/questions/10389595/ef-code-first-migration-ignore-property" target="_blank"&gt;StackOverflow&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Example:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ComponentAttribute
{
    [NotMapped]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; IsModified { get; set; }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt; &lt;img src="http://geekswithblogs.net/Aligned/aggbug/152932.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/QUjBtjMGRA0" height="1" width="1"/&gt;</description><dc:creator>Aligned</dc:creator><feedburner:origLink>http://geekswithblogs.net/Aligned/archive/2013/05/15/use-the-notmapped-attribute-with-entity-framework-in-partial-classes.aspx</feedburner:origLink></item><item><title>.NET Security Part 3</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/yfpgTTe06nw/.net-security-part-3.aspx</link><pubDate>Thu, 16 May 2013 10:52:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</guid><wfw:comment>http://geekswithblogs.net/simonc/comments/152935.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/simonc/comments/commentRss/152935.aspx</wfw:commentRss><comments>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://geekswithblogs.net/simonc/services/trackbacks/152935.aspx</trackback:ping><source url="http://geekswithblogs.net/simonc/rss.aspx">Simon Cooper</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx'&gt;http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You write a security-related application that allows addins to be used. These addins (as dlls) can be downloaded from anywhere, and, if allowed to run full-trust, could open a security hole in your application. So you want to restrict what the addin dlls can do, using a sandboxed appdomain, as explained in my previous posts.&lt;/p&gt;

&lt;p&gt;But there needs to be an interaction between the code running in the sandbox and the code that created the sandbox, so the sandboxed code can control or react to things that happen in the controlling application. Sandboxed code needs to be able to call code outside the sandbox.&lt;/p&gt;

&lt;p&gt;Now, there are various methods of allowing cross-appdomain calls, the two main ones being &lt;a href="http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx"&gt;.NET Remoting&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx"&gt;MarshalByRefObject&lt;/a&gt;, and WCF named pipes. I'm not going to cover the details of setting up such mechanisms here, or which you should choose for your specific situation; there are plenty of blogs and tutorials covering such issues elsewhere. What I'm going to concentrate on here is the more general problem of running fully-trusted code within a sandbox, which is required in most methods of app-domain communication and control.&lt;/p&gt;

&lt;h4&gt;Defining assemblies as fully-trusted&lt;/h4&gt;

&lt;p&gt;In my last post, I mentioned that when you create a sandboxed appdomain, you can pass in a list of assembly strongnames that run as full-trust within the appdomain:&lt;/p&gt;

&lt;pre&gt;// get the Assembly object for the assembly
Assembly assemblyWithApi = ...    

// get the StrongName from the assembly's collection of evidence
StrongName apiStrongName = assemblyWithApi.Evidence.GetHostEvidence&amp;lt;StrongName&amp;gt;();

// create the sandbox
AppDomain sandbox = AppDomain.CreateDomain(
    "Sandbox", null, appDomainSetup, restrictedPerms, apiStrongName);&lt;/pre&gt;
    
&lt;p&gt;Any assembly that is loaded into the sandbox with a strong name the same as one in the list of full-trust strong names is unconditionally given full-trust permissions within the sandbox, irregardless of permissions and sandbox setup. This is very powerful! You should only use this for assemblies that you trust as much as the code creating the sandbox.&lt;/p&gt;

&lt;p&gt;So now you have a class that you want the sandboxed code to call:&lt;/p&gt;

&lt;pre&gt;// within assemblyWithApi
public class MyApi
{
    public static void MethodToDoThings() { ... }
}

// within the sandboxed dll
public class UntrustedSandboxedClass
{
    public void DodgyMethod()
    {        
        ...
        MyApi.MethodToDoThings();
        ...
    }
}&lt;/pre&gt;

&lt;p&gt;However, if you try to do this, you get quite an ugly exception:
&lt;/p&gt;&lt;blockquote&gt;MethodAccessException: Attempt by security transparent method 'UntrustedSandboxedClass.DodgyMethod()' to access security critical method 'MyApi.MethodToDoThings()' failed.&lt;/blockquote&gt;
Security transparency, which I covered in my first post in the series, has entered the picture. Partially-trusted code runs at the Transparent security level, fully-trusted code runs at the Critical security level, and Transparent code cannot under any circumstances call Critical code.

&lt;h4&gt;Security transparency and AllowPartiallyTrustedCallersAttribute&lt;/h4&gt;

&lt;p&gt;So the solution is easy, right? Make &lt;code&gt;MethodToDoThings&lt;/code&gt; SafeCritical, then the transparent code running in the sandbox can call the api:&lt;/p&gt;
&lt;pre&gt;[SecuritySafeCritical]
public static void MethodToDoThings() { ... }&lt;/pre&gt;
&lt;p&gt;However, this doesn't solve the problem. When you try again, exactly the same exception is thrown; MethodToDoThings is still running as Critical code. What's going on?&lt;/p&gt;

&lt;p&gt;By default, a fully-trusted assembly always runs Critical code, irregardless of any security attributes on its types and methods. This is because it may not have been designed in a secure way when called from transparent code - as we'll see in the next post, it is easy to open a security hole despite all the security protections .NET 4 offers. When exposing an assembly to be called from partially-trusted code, the entire assembly needs a security audit to decide what should be transparent, safe critical, or critical, and close any potential security holes.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrustedCallersAttribute&lt;/a&gt; (APTCA) comes in. Without this attribute, fully-trusted assemblies run Critical code, and partially-trusted assemblies run Transparent code. When this attribute is applied to an assembly, it confirms that the assembly has had a full security audit, and it is safe to be called from untrusted code. All code in that assembly runs as Transparent, but &lt;code&gt;SecurityCriticalAttribute&lt;/code&gt; and &lt;code&gt;SecuritySafeCriticalAttribute&lt;/code&gt; can be applied to individual types and methods to make those run at the Critical or SafeCritical levels, with all the restrictions that entails.&lt;/p&gt;

&lt;p&gt;So, to allow the sandboxed assembly to call the full-trust API assembly, simply add APCTA to the API assembly:&lt;/p&gt;
&lt;pre&gt;[assembly: AllowPartiallyTrustedCallers]&lt;/pre&gt;
&lt;p&gt;and everything works as you expect. The sandboxed dll can call your API dll, and from there communicate with the rest of the application.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;That's the basics of running a full-trust assembly in a sandboxed appdomain, and allowing a sandboxed assembly to access it. The key is AllowPartiallyTrustedCallersAttribute, which is what lets partially-trusted code call a fully-trusted assembly. However, an assembly with APTCA applied to it means that you have run a full security audit of every type and member in the assembly. If you don't, then you could inadvertently open a security hole. I'll be looking at ways this can happen in my next post.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/simonc/aggbug/152935.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/yfpgTTe06nw" height="1" width="1"/&gt;</description><dc:creator>simonc</dc:creator><feedburner:origLink>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</feedburner:origLink></item><item><title>Tech Learning&amp;ndash;Always Start with Hello World</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/5y9V7qCCZUU/152931.aspx</link><pubDate>Wed, 15 May 2013 07:20:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</guid><wfw:comment>http://geekswithblogs.net/dlussier/comments/152931.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dlussier/comments/commentRss/152931.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://geekswithblogs.net/dlussier/services/trackbacks/152931.aspx</trackback:ping><source url="http://geekswithblogs.net/dlussier/rss.aspx">D'Arcy from Winnipeg</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx'&gt;http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Remember Hello World? It was the program that we all started out with at some point. We did something that would make Hello World display somehow. But as we got older and more into our careers as developers, we’ve forgotten Hello World. Instead, we’ve replaced it with Contoso or Pet Store or whatever large, heavy, complex domain we decided would be a much better sandbox to frame learning a new technology with.&lt;/p&gt;  &lt;p&gt;I was talking with an attendee at Prairie Dev Con about this last week, and how we can easily get caught up in fulfilling the domain rather than understanding the underlying tech.&lt;/p&gt;  &lt;p&gt;Consider these two scenarios, both related to learning ASP.NET MVC with EF code first.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="445" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="209"&gt;A doctor’s office wants a web site to schedule patient visits. This site will use forms authentication and will leverage MVC and Entity Framework Code First. We’ll use jQuery on the front end for the UI and SQL Server in the back for storing the data. The datamodel looks like this…&amp;lt;insert data model here&amp;gt; and the class diagram looks like this &amp;lt;insert class diagram here&amp;gt;.&lt;/td&gt;        &lt;td valign="top" width="30"&gt; &lt;/td&gt;        &lt;td valign="top" width="204"&gt;Create a single view in an MVC project that uses EF to retrieve a simple value of “Hello World” from a database table and display it on the screen.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Now, if we were to do both of these we’d come to the same result of understanding EF and MVC, but with one difference – the example on the left comes with a huge and heavy domain that we’ve added in for no other reason than to feel like we’re building something of value. But here’s the thing – we’re not. When we’re learning a technology, its &lt;strong&gt;&lt;em&gt;about the technology&lt;/em&gt;&lt;/strong&gt;. The details of a pretend scenario do nothing but get in the way of the actual learning.&lt;/p&gt;  &lt;p&gt;The value is in us understanding how the technology works &lt;strong&gt;&lt;em&gt;so we can apply it&lt;/em&gt;&lt;/strong&gt; to domain contexts later. Would we expect an apprentice carpenter who’s just learning to build a house as their first project to teach them framing? Of course not. So why do we expect it from ourselves as developers?&lt;/p&gt;  &lt;p&gt;Unburden yourself from complex domain contexts when you’re starting out with something new. Start with Hello World and take it from there.&lt;/p&gt;  &lt;p&gt;D&lt;/p&gt; &lt;img src="http://geekswithblogs.net/dlussier/aggbug/152931.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/5y9V7qCCZUU" height="1" width="1"/&gt;</description><dc:creator>D'Arcy Lussier</dc:creator><feedburner:origLink>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</feedburner:origLink></item><item><title>Live Coding During Presentations&amp;ndash;Good or Bad?</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/sAdwrwnMApE/152933.aspx</link><pubDate>Wed, 15 May 2013 13:37:25 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dlussier/archive/2013/05/15/152933.aspx</guid><wfw:comment>http://geekswithblogs.net/dlussier/comments/152933.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dlussier/comments/commentRss/152933.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dlussier/archive/2013/05/15/152933.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/dlussier/services/trackbacks/152933.aspx</trackback:ping><source url="http://geekswithblogs.net/dlussier/rss.aspx">D'Arcy from Winnipeg</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/dlussier/archive/2013/05/15/152933.aspx'&gt;http://geekswithblogs.net/dlussier/archive/2013/05/15/152933.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is a response/continuation of the discussion &lt;a href="http://rtigger.com/blog/2013/05/15/live-coding-good-or-bad/" target="_blank"&gt;that Chad McCallum started over on his blog.&lt;/a&gt; He wondered what people’s view was on doing live coding within a presentation – for or against.&lt;/p&gt;  &lt;p&gt;Where. To. Begin.&lt;/p&gt;  &lt;p&gt;There is no right answer to the question. As developers, we like to look at things almost from a bit perspective – 0 or 1, yes or no, true or false. But humans aren’t computers and so to say that yes you should or no you shouldn’t use live coding demos isn’t a worthwhile argument because you’ll never get consensus from the most important group of people for a presenter – your audience.&lt;/p&gt;  &lt;p&gt;Consider these two comments:&lt;/p&gt;  &lt;p&gt;“I attended this session based on my experience from his other session. Great demos!”&lt;/p&gt;  &lt;p&gt;and&lt;/p&gt;  &lt;p&gt;“Number of presenters clearly didn't have any developer content prepared and re-used decks of the web and didn't get into any programming. [Speaker]’s was particularly bad.”&lt;/p&gt;  &lt;p&gt;Note the last part of the second comment, about a certain speaker’s sessions being bad because they clearly didn’t have any developer content prepared? Well the first comment is about that speaker’s second session. I was in that session and yes, he showed code but didn’t write any. Huh. Two people, same session, different…expectations?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;It’s Always About Expectations&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have learned this through much trial and tribulation – the sure way to ensure success in life is to set clear expectations as early as possible. Doing live code? Showing slides of code? Using copy/paste or snippets? Not having any code whatsoever at all? There is no discussion about whether one of these styles is better than the other. I’ve seen all these styles work and work well (I’ve also seen them all bomb just as well also, but I’ll get to that in a second).&lt;/p&gt;  &lt;p&gt;So what we’re really talking about is &lt;strong&gt;&lt;em&gt;audience expectations&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;A few years ago some friends and I went out for Chinese food. One of our friends decided to buy a lobster for the table. He was invited into the kitchen to see it prepared. He came out pale and a little shocked. Why? Well, he was going to see a lobster get cooked – y’know, dropped in boiling water. Isn’t that how you cook a lobster? Not in this restaurant. In this place, you chop it with a huge knife while its still alive and then throw its pieces into a pan and stir fry it. Now had the cook set the &lt;strong&gt;&lt;em&gt;expectation&lt;/em&gt;&lt;/strong&gt; that he’d be seeing something else, he may not have gone into the kitchen.&lt;/p&gt;  &lt;p&gt;The same thing happens with presentations. Why do people not like a presentation? Sometimes its because it was just a bad presentation. But most of the time, its because expectations weren’t set up front. If you don’t set expectations up front, you let the audience’s expectations become the baseline and you as a presenter have no ability to meet a room full of different expectations. If you set the expectations of what will be seen and the style, then the audience has two options: accept it (stay) or reject it (leave). Either way, you are in control.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So It Doesn’t Matter What Style I use (Live Coding/Snippits/Slides Of Code)?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Like any presentation, you need to use the best medium for communicating your message and address the risks associated.&lt;/p&gt;  &lt;p&gt;Want to do live coding? Great! Make sure you set your font and IDE colour scheme, ensure that it’ll work and compile in its finished state (use the Julia Childe method*), test out the available wi-fi to ensure its reliable if your presentation requires it, ensure all updates and required components are installed to your machine/VM ahead of time, ensure all background running processes (virus scanner, auto updates, etc.) are turned off ahead of time, etc. etc.&lt;/p&gt;  &lt;p&gt;Want to do slides of codes? Fantastic! Make sure you’re ready to answer questions about how to do things differently/more advanced than what’s on your slides. Make sure you check that your code is readable on your slides, the background/style doesn’t clash, and remember that if you’re using image snapshots of code that you can’t change the font on it so it better be big enough for the guy in the back row to read. Oh, and make sure that your version of PowerPoint or whatever tool you created your presentation with is usable with the version on the presentation computer (if its different than your own).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Presentations are Tools to Communicate Your Idea&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I do a talk on how to give technical presentations as well as a presentation workshop, and the one thing I stress is that your PowerPoint, your code, your demos, your whatever isn’t as important as &lt;strong&gt;&lt;em&gt;you&lt;/em&gt;&lt;/strong&gt;. You and your knowledge is the reason people are coming to a presentation. You need to pick the tools and techniques that will ensure that &lt;strong&gt;&lt;em&gt;you&lt;/em&gt;&lt;/strong&gt; will communicate &lt;strong&gt;&lt;em&gt;your &lt;/em&gt;&lt;/strong&gt;message to the audience.&lt;/p&gt;  &lt;p&gt;You won’t every please everyone that comes to your presentations. But if you set expectations and give thought to the tools/techniques you’ll employ, you can limit the negative comments and ensure more people leave understanding what you were trying to get across.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/dlussier/aggbug/152933.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/sAdwrwnMApE" height="1" width="1"/&gt;</description><dc:creator>D'Arcy Lussier</dc:creator><feedburner:origLink>http://geekswithblogs.net/dlussier/archive/2013/05/15/152933.aspx</feedburner:origLink></item><item><title>Nokia: Your vision is clouded</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/-C6Moglu-Po/nokia-your-vision-is-clouded.aspx</link><pubDate>Tue, 14 May 2013 22:26:24 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</guid><wfw:comment>http://geekswithblogs.net/rodelljr/comments/152928.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/rodelljr/comments/commentRss/152928.aspx</wfw:commentRss><comments>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://geekswithblogs.net/rodelljr/services/trackbacks/152928.aspx</trackback:ping><source url="http://geekswithblogs.net/rodelljr/rss.aspx">Roger O'Dell</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx'&gt;http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the last week or so we have seen two new phones announced by Nokia: the Lumia 928 and 925. The 925 version looks to be the next evolution in Nokia’s lineup of Lumia devices while the 928 at a glance looks like a variation of the original 920, with maybe some parts of the 925 mixed in. You of course get a great camera experience with the low light PurView system.&lt;/p&gt;  &lt;p&gt;While you can view the 925 specs &lt;a href="http://www.nokia.com/global/products/phone/lumia925/specifications/" target="_blank"&gt;here&lt;/a&gt;, I will note that unlike previous Lumia’s (including the 928), the 925 only has 16 GB of storage instead of 32 GB. This wouldn’t be a problem if it had expandable memory, but it doesn’t. That’s right, if you play games that take a lot of storage, or like to save music playlists on your device, this could be an issue. Most likely it won’t for the average user. That is really the only flaw I can see in the hardware itself. It looks stunning and if by some miracle I can get a unit to review, I will defiantly enjoy playing with it. I haven’t really done any phone reviews, but would love the opportunity to begin doing just that. As a developer, its nice to have that ability to play with new hardware and try testing your apps on it.&lt;/p&gt;  &lt;p&gt;Now I mentioned flaw in hardware, but this article is more about Nokia itself. While I love their products; (I own a Lumia 800), I completely disagree with their distribution model. While they seem to be trying to be like Samsung and flood the market with handsets, they are doing it as if they are Apple. Please stop. If you really want to compete with Samsung, follow their model that they had done with their Galaxy S3 and S4 and build it for all the carriers. Stop doing this limited distribution. Releasing the 925 to only T-Mobile in the US is a mistake. Its bad enough that the 920 was restricted to AT&amp;amp;T, but to follow that same model again a year later is wasteful. Now before I get any comments, this also applies to Canada and other countries who are only getting partial carrier coverage&lt;/p&gt;  &lt;p&gt;That whole exclusive type distribution model has only really worked once, and that was by Apple. Even HTC has learned their lesson somewhat with the HTC One, but that is a whole other argument. The Lumia line is basically THE best that Windows Phone has to offer, and as long as your vision is clouded, it may prove to be the end of Windows Phone. We can’t expect Windows Phone to get any market share increases with this limited distribution model.&lt;/p&gt;  &lt;p&gt;This also doesn’t just apply to the 925, but should apply for a few of their other models. The midrange phones like the 820 would defiantly benefit from being on multiple carriers in the US and abroad. You could probably include the lower end tier and include the 620 or 521 in that list. Basically think of it as a small, medium and large model where you have three phones for all carriers. I also wouldn’t stop their. I would include the smaller market carriers like Cricket. Taking this approach will go along way.&lt;/p&gt;  &lt;p&gt;With all this said and done, will I buy a 925 or 928? Unfortunately no. I carry a Galaxy S3 as my carrier doesn’t carry Windows Phone yet. And before any one asks, I can’t switch carriers for another year, and few months. I switched from AT&amp;amp;T for reasons I won’t explain here. Other than my minor rants, I really love the Nokia handsets and can’t wait to either review or use their developer borrow program to test my Windows Phone apps.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rodelljr/aggbug/152928.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/-C6Moglu-Po" height="1" width="1"/&gt;</description><dc:creator>rodelljr</dc:creator><feedburner:origLink>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</feedburner:origLink></item><item><title>Extending Team Explorer 2012 &amp;ndash; Associating Recent Work Items</title><category>Visual Studio 2012</category><category>TFS</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/SXlR60jLyCI/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</link><pubDate>Thu, 16 May 2013 11:29:44 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</guid><wfw:comment>http://geekswithblogs.net/jakob/comments/152934.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/152934.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/152934.aspx</trackback:ping><source url="http://geekswithblogs.net/jakob/rss.aspx">Jakob Ehn</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Extension available at:&lt;/strong&gt; &lt;a title="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c" href="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c"&gt;http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I have been playing around a bit lately with extending Team Explorer 2012, mostly because it is fun but also to fix a little nagging feature that should have been there from the beginning. Often I (and a lot of other people) find myself wanting to associate several consecutive changesets to the same work item. The problem is that Team Explorer does not remember this, instead I have to either remember the ID or use a query that hopefully will match the work item.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb.png" width="327" height="126" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;strong&gt;Where is the work item that I just associated with?&lt;/strong&gt;     &lt;br /&gt;  &lt;br /&gt;True, when using the My Work page and the teams and sprint backlogs are correctly setup, you can find “your” work items there, but every so often this is not the case, and off I go to locate that work item again.&lt;/p&gt;  &lt;p&gt;So this seemed to be a good feature to implement and at the same time learn a little about how to extend Team Explorer in Visual Studio 2012.&lt;/p&gt;  &lt;p&gt;There is a great sample posted by Microsoft over at MSDN, it also talks about the main extension points and classes/interfaces that you need to know about. You can find it here: &lt;a title="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594" href="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594"&gt;http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594&lt;/a&gt;. If you have developed extensions to Visual Studio before, you will be relieved to know that this new extension model for Team Explorer is purely based on standard .NET/WPF and MEF, no weird COM interfaces. &lt;/p&gt;  &lt;p&gt;You can add new pages to Team Explorer, you can add new sections to existing pages and you can add navigation links to the Home screen. All these extensions are discovered by Team Explorer using the Managed Extensibility Framework (MEF). You just need to attribute your classes with the correct attribute and it will be found by Team Explorer. The attributes also control where your extension will appear. This extension is a Section that should appear inside the Pending Changes page:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_10.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_4.png" width="564" height="115" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Example of attributing a Team Explorer extension&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The last property (35) is a priority number that controls when the extension is created and also where it will placed relative to the other sections. The existing Related Work Items section has priority 30, so 35 will place our extension right below it.&lt;/p&gt;  &lt;p&gt;We also need to implement the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.controls.iteamexplorersection.aspx"&gt;ITeamExplorerSection&lt;/a&gt; interface, that contains properties and methods that needs to be implemented for anything to show up.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_8.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_3.png" width="262" height="344" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;ITeamExplorerSection interface&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;The most interesting property here  is the &lt;strong&gt;SectionContent &lt;/strong&gt;property which is where you return the content of your extensions. This is typically a WPF user control in which you can add any controls you like.  &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;This is how the extension appear inside the Pending Changes page. It will analyze your recent changesets in the current team project and extract the last 5 associated work items and show them in a list.     &lt;br /&gt;From the list you can then easily add a work item to the current pending changes by right-clicking on it and select Add. You’ll note that the work item will then disappear from the list, since you are not likely interested in adding it again.     &lt;br /&gt;&lt;/p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_1.png" width="539" height="266" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Recently Associated Work Item section&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I encourage you to read the MSDN article for more information about the possibilities to extend Team Explorer 2012. Also, try out the extension and let me know it you find it useful!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/152934.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/SXlR60jLyCI" height="1" width="1"/&gt;</description><dc:creator>Jakob Ehn</dc:creator><feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</feedburner:origLink></item><item><title>Special Tampa WPUG meeting - How I became a Millionaire writing apps!</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/pPp4clkojd8/152930.aspx</link><pubDate>Wed, 15 May 2013 04:48:44 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/campuskoder/archive/2013/05/15/152930.aspx</guid><wfw:comment>http://geekswithblogs.net/campuskoder/comments/152930.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/campuskoder/comments/commentRss/152930.aspx</wfw:commentRss><comments>http://geekswithblogs.net/campuskoder/archive/2013/05/15/152930.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/campuskoder/services/trackbacks/152930.aspx</trackback:ping><source url="http://geekswithblogs.net/campuskoder/rss.aspx">Nikita Polyakov</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/campuskoder/archive/2013/05/15/152930.aspx'&gt;http://geekswithblogs.net/campuskoder/archive/2013/05/15/152930.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;DO NOT MISS THIS 5/21 6PM : &lt;strong&gt;Special Tampa WPUG meeting - How I became a Millionaire writing apps!&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;If you are in Tampa the night of 5/21 you should not have any excuses not to show up to this event. There should not even be any giveaways (especially this awesome) because I am sure this will be a sold out event. Be there (early) or be square.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://tampawpugmay21.eventbrite.com/" href="http://tampawpugmay21.eventbrite.com/"&gt;http://tampawpugmay21.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tampa Windows Phone User Group&lt;/li&gt;    &lt;li&gt;&lt;i&gt;&lt;/i&gt;Tuesday, May 21, 2013 from 6:00 PM to 8:00 PM (EDT) &lt;/li&gt; &lt;/ul&gt; &lt;img src="http://geekswithblogs.net/campuskoder/aggbug/152930.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/pPp4clkojd8" height="1" width="1"/&gt;</description><dc:creator>Nikita Polyakov</dc:creator><feedburner:origLink>http://geekswithblogs.net/campuskoder/archive/2013/05/15/152930.aspx</feedburner:origLink></item><item><title>Powershell functions to get an xml node, and get and set an xml element&amp;rsquo;s value, even when the element does not already exist</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/m79cjnTKyOY/powershell-functions-to-get-an-xml-node-and-get-and.aspx</link><pubDate>Thu, 16 May 2013 17:18:18 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/deadlydog/archive/2013/05/16/powershell-functions-to-get-an-xml-node-and-get-and.aspx</guid><wfw:comment>http://geekswithblogs.net/deadlydog/comments/152937.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/deadlydog/comments/commentRss/152937.aspx</wfw:commentRss><comments>http://geekswithblogs.net/deadlydog/archive/2013/05/16/powershell-functions-to-get-an-xml-node-and-get-and.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/deadlydog/services/trackbacks/152937.aspx</trackback:ping><source url="http://geekswithblogs.net/deadlydog/rss.aspx">Daniel Schroeder</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/deadlydog/archive/2013/05/16/powershell-functions-to-get-an-xml-node-and-get-and.aspx'&gt;http://geekswithblogs.net/deadlydog/archive/2013/05/16/powershell-functions-to-get-an-xml-node-and-get-and.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I’m new to working with Xml through PowerShell and was so impressed when I discovered how easy it was to read an xml element’s value.  I’m working with reading/writing .nuspec files for working with NuGet.  Here’s a sample xml of a .nuspec xml file:&lt;/p&gt;  &lt;p&gt;Read more at &lt;a title="http://blog.danskingdom.com/powershell-functions-to-get-an-xml-node-and-get-and-set-an-xml-elements-value-even-when-the-element-does-not-already-exist/" href="http://blog.danskingdom.com/powershell-functions-to-get-an-xml-node-and-get-and-set-an-xml-elements-value-even-when-the-element-does-not-already-exist/"&gt;http://blog.danskingdom.com/powershell-functions-to-get-an-xml-node-and-get-and-set-an-xml-elements-value-even-when-the-element-does-not-already-exist/&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/deadlydog/aggbug/152937.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/m79cjnTKyOY" height="1" width="1"/&gt;</description><dc:creator>deadlydog</dc:creator><feedburner:origLink>http://geekswithblogs.net/deadlydog/archive/2013/05/16/powershell-functions-to-get-an-xml-node-and-get-and.aspx</feedburner:origLink></item><item><title>APress Deal of the Day 17/May/2013 - Pro HTML5 with Visual Studio 2012</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/G5RmQQQuvwU/apress-deal-of-the-day-17may2013---pro-html5-with.aspx</link><pubDate>Fri, 17 May 2013 01:40:33 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2013/05/17/apress-deal-of-the-day-17may2013---pro-html5-with.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/152947.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/152947.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2013/05/17/apress-deal-of-the-day-17may2013---pro-html5-with.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/152947.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Tatworth</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/TATWORTH/archive/2013/05/17/apress-deal-of-the-day-17may2013---pro-html5-with.aspx'&gt;http://geekswithblogs.net/TATWORTH/archive/2013/05/17/apress-deal-of-the-day-17may2013---pro-html5-with.aspx&lt;/a&gt;&lt;/p&gt;Today's $10 deal of the day from APress at &lt;a href="http://www.apress.com/9781430246381"&gt;http://www.apress.com/9781430246381&lt;/a&gt; is Pro HTML5 with Visual Studio 2012&lt;br /&gt;&lt;br /&gt;"&lt;em style="margin: 0px; padding: 0px; border: 0px; font-weight: normal; font-style: italic; font-size: 14px; font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; vertical-align: baseline; color: rgb(34, 34, 34); font-variant: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);"&gt;Pro HTML5 with Visual Studio 2012&lt;/em&gt;&lt;span style="color: rgb(34, 34, 34); font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: auto; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); display: inline !important; float: none;"&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;is written to help ASP.NET developers make the leap to the inevitable and exciting world of HTML5.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;
&lt;img alt="book cover" src="http://www.apress.com/media/catalog/product/cache/9/small_image/125x/040ec09b1e35df139433887a97daa66f/A/9/A9781430246381-small_2.png" /&gt;
&lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/152947.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/G5RmQQQuvwU" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2013/05/17/apress-deal-of-the-day-17may2013---pro-html5-with.aspx</feedburner:origLink></item><item><title>Why I Chose WordPress Over Geeks With Blogs, And Moving From WordPress.com To A GoDaddy Hosted Solution</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/wDwie1Xyc70/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx</link><pubDate>Fri, 17 May 2013 17:57:31 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/deadlydog/archive/2013/05/17/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx</guid><wfw:comment>http://geekswithblogs.net/deadlydog/comments/152949.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/deadlydog/comments/commentRss/152949.aspx</wfw:commentRss><comments>http://geekswithblogs.net/deadlydog/archive/2013/05/17/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/deadlydog/services/trackbacks/152949.aspx</trackback:ping><source url="http://geekswithblogs.net/deadlydog/rss.aspx">Daniel Schroeder</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/deadlydog/archive/2013/05/17/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx'&gt;http://geekswithblogs.net/deadlydog/archive/2013/05/17/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A while back I wrote about &lt;a href="http://blog.danskingdom.com/migrating-my-gwb-blog-over-to-wordpress/"&gt;some reasons why I didn’t like GWB (Geeks With Blogs) and was attracted to WordPress&lt;/a&gt;.  6 months later and I am confident that I made the right decision.  GWB was good to me, but…&lt;/p&gt;  &lt;p&gt;Read more at &lt;a title="http://blog.danskingdom.com/why-i-chose-wordpress-over-geeks-with-blogs-and-moving-from-wordpress-com-to-a-godaddy-hosted-solution/" href="http://blog.danskingdom.com/why-i-chose-wordpress-over-geeks-with-blogs-and-moving-from-wordpress-com-to-a-godaddy-hosted-solution/"&gt;http://blog.danskingdom.com/why-i-chose-wordpress-over-geeks-with-blogs-and-moving-from-wordpress-com-to-a-godaddy-hosted-solution/&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/deadlydog/aggbug/152949.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/wDwie1Xyc70" height="1" width="1"/&gt;</description><dc:creator>deadlydog</dc:creator><feedburner:origLink>http://geekswithblogs.net/deadlydog/archive/2013/05/17/why-i-chose-wordpress-over-geeks-with-blogs-and-moving.aspx</feedburner:origLink></item><item><title>Exploiting the Non-Uniqueness of Guids</title><category>.NET</category><category>C#</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/nrLMHzO5Ak8/exploiting-the-non-uniqueness-of-guids.aspx</link><pubDate>Fri, 17 May 2013 08:48:42 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/freestylecoding/archive/2013/05/17/exploiting-the-non-uniqueness-of-guids.aspx</guid><wfw:comment>http://geekswithblogs.net/freestylecoding/comments/152948.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/freestylecoding/comments/commentRss/152948.aspx</wfw:commentRss><comments>http://geekswithblogs.net/freestylecoding/archive/2013/05/17/exploiting-the-non-uniqueness-of-guids.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/freestylecoding/services/trackbacks/152948.aspx</trackback:ping><source url="http://geekswithblogs.net/freestylecoding/rss.aspx">Freestyle Coding</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/freestylecoding/archive/2013/05/17/exploiting-the-non-uniqueness-of-guids.aspx'&gt;http://geekswithblogs.net/freestylecoding/archive/2013/05/17/exploiting-the-non-uniqueness-of-guids.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You know those seemingly random Guids? Guess what? They're not random.&lt;/p&gt;
&lt;p&gt;I'll give your head a moment to recover from that bombshell.&lt;/p&gt;
&lt;p&gt;Ok, back with me? Good.&lt;/p&gt;
&lt;p&gt;I was digging DEEP in some hardcore specs when I stumbled upon this. I had a situation where I have a Guid as a unique identifier. This identifier had some subsequent child data that needed to refer to the global object but required different handling. Yes, I'm being slightly vague. I do have to respect company proprietary data.&lt;/p&gt;&lt;p&gt;
Due to this dilemma, I had a really weird "hash table" to quickly find the identifier from the child object. While this solution worked, and was REALLY fast, it was very messy and complex. I decided I needed to hack something to reduce this complexity.&lt;/p&gt;
&lt;p&gt;I know. I just said I wanted to reduce complexity, and that my solution was to hack Guids. The sick humor of this is not wasted on me. You knew what you're getting into when you read my blog.&lt;/p&gt;
&lt;p&gt;Turns out, there is a status field in the Guid. I was scouring the &lt;a href="http://en.wikipedia.org/wiki/GUID" target="wikiguid"&gt;Wikipedia article on Guids&lt;/a&gt; when I read the &lt;a href="http://en.wikipedia.org/wiki/GUID#Binary_encoding" target="wikiguidencoding"&gt;Binary Encoding&lt;/a&gt; section. Turns out 3 of the bits have a special meaning. More specifically, if you were dealing with the Guid 00000000-0000-0000-x000-000000000000, part of the hex value of x means something. Guids in .NET, generated by the System.Guid structure, are all "standard" Guids. As such, they will always have the bit mask of 00000000-0000-0000-8000-000000000000.&lt;/p&gt;
&lt;p&gt;If you don't believe me, go do a select on your largest database column. That hex value will always be either 8, 9, A or B.&lt;/p&gt;
&lt;p&gt;If we exploit this, we now have 2 bits in our 128 bit number which we can control. We know those 2 bits being 10 will refer to our master identifier. However, since they are fixed, we can use 00, 01 and 11 as attached, but still unique, child Guids. This child Guids will always point back to the parent Guid by restoring those 2 bits to 10.&lt;/p&gt;
&lt;p&gt;Happy Friday, people.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/freestylecoding/aggbug/152948.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/nrLMHzO5Ak8" height="1" width="1"/&gt;</description><dc:creator>Chris Gardner</dc:creator><feedburner:origLink>http://geekswithblogs.net/freestylecoding/archive/2013/05/17/exploiting-the-non-uniqueness-of-guids.aspx</feedburner:origLink></item><item><title>I was surfing io13 and found this interesting article from google</title><category>io13</category><category>jobs</category><category>skills</category><category>career</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/X2xlRerlKPQ/i-was-surfing-io13-and-found-this-interesting-article-from.aspx</link><pubDate>Fri, 17 May 2013 00:08:42 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/foxjazz/archive/2013/05/16/i-was-surfing-io13-and-found-this-interesting-article-from.aspx</guid><wfw:comment>http://geekswithblogs.net/foxjazz/comments/152946.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/foxjazz/comments/commentRss/152946.aspx</wfw:commentRss><comments>http://geekswithblogs.net/foxjazz/archive/2013/05/16/i-was-surfing-io13-and-found-this-interesting-article-from.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/foxjazz/services/trackbacks/152946.aspx</trackback:ping><source url="http://geekswithblogs.net/foxjazz/rss.aspx">FOXJAZZ  </source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/foxjazz/archive/2013/05/16/i-was-surfing-io13-and-found-this-interesting-article-from.aspx'&gt;http://geekswithblogs.net/foxjazz/archive/2013/05/16/i-was-surfing-io13-and-found-this-interesting-article-from.aspx&lt;/a&gt;&lt;/p&gt;&lt;h2 style="font-size: 24px; margin: 19.98px 0px; line-height: 1.1em; padding: 0px; border: 0px; font-family: museo-sans-rounded-n5, museo-sans-rounded, sans-serif; font-weight: 500; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"&gt;&lt;a href="http://readwrite.com/2013/05/01/10-technology-skills-no-longer-in-demand"&gt;http://readwrite.com/2013/05/01/10-technology-skills-no-longer-in-demand&lt;/a&gt;&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;copied here just in case the link breaks.&lt;/div&gt;&lt;h2 style="font-size: 24px; margin: 19.98px 0px; line-height: 1.1em; padding: 0px; border: 0px; font-family: museo-sans-rounded-n5, museo-sans-rounded, sans-serif; font-weight: 500; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/h2&gt;&lt;h2 style="font-size: 24px; margin: 19.98px 0px; line-height: 1.1em; padding: 0px; border: 0px; font-family: museo-sans-rounded-n5, museo-sans-rounded, sans-serif; font-weight: 500; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"&gt;10. Something That Seems Secure Today&lt;/h2&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;The &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank" style="outline: none; color: rgb(198, 38, 39); transition: color 0.2s ease-in-out; -webkit-transition: color 0.2s ease-in-out; text-decoration: none; line-height: 1.538em;"&gt;TIOBE Programming Community Index&lt;/a&gt; lists C, Java, C++ and Objective-C as the programming skills most in demand right now. But here's the thing. In 2009, Objective-C was barely in use. The rapid success of the iPhone and iPad vaulted the language's popularity. Now, however, just over three years later, its popularity is already stabilizing.&lt;/p&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;In today's superheated technology environment, even the most popular, most secure seeming technology skills can suddenly become obsolete. That's just the way it is. No matter how in-demand your current skill set, you can never rest on your resume. &lt;/p&gt;&lt;h2 style="font-size: 24px; margin: 19.98px 0px; line-height: 1.1em; padding: 0px; border: 0px; font-family: museo-sans-rounded-n5, museo-sans-rounded, sans-serif; font-weight: 500; color: rgb(51, 51, 51); background-color: rgb(255, 255, 255);"&gt;Learning Is The Key&lt;/h2&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;Will highlighting the wrong skill set to a recruiter brand you as out of touch - or too expensive to hire? Perhaps. But don't expect anyone to tell you that's what going on. More likely, they may just won't return your call, or let your resume vanish into the ether. (There will probably always be a few legacy jobs in all these areas, but that's about it.)&lt;/p&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;The only solution is to keep learning - and keep showing that you&lt;em style="line-height: 1.538em;"&gt;can&lt;/em&gt; learn. While the pace of skills disruption may well be increasing, learning new skills has never been easier. That includes formal schooling as well as free and low-cost resources like &lt;a href="http://www.khanacademy.org/" target="_blank" style="outline: none; color: rgb(198, 38, 39); transition: color 0.2s ease-in-out; -webkit-transition: color 0.2s ease-in-out; text-decoration: none; line-height: 1.538em;"&gt;Khan Academy&lt;/a&gt; and &lt;a href="http://www.codecademy.com/" target="_blank" style="outline: none; color: rgb(198, 38, 39); transition: color 0.2s ease-in-out; -webkit-transition: color 0.2s ease-in-out; text-decoration: none; line-height: 1.538em;"&gt;CodeAcademy&lt;/a&gt;, for example. &lt;/p&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;Here's the bottom line: Since so much technology is fairly new to everyone, why should a company invest in experienced candidates - rather than someone just starting out? Writing for&lt;a href="http://blogs.wsj.com/accelerators/2013/04/19/weekend-read-vivek-wadhwa-the-truth-about-the-age-premium/" target="_blank" style="outline: none; color: rgb(198, 38, 39); transition: color 0.2s ease-in-out; -webkit-transition: color 0.2s ease-in-out; text-decoration: none;"&gt;The Wall Street Journal&lt;/a&gt;, business professor and entrepreneur &lt;a href="http://readwrite.com/search?keyword=Vivek+Wadhwa" target="_blank" style="outline: none; color: rgb(198, 38, 39); transition: color 0.2s ease-in-out; -webkit-transition: color 0.2s ease-in-out; text-decoration: none;"&gt;Vivek Wadhwa&lt;/a&gt;, was brutally direct:&lt;/p&gt;&lt;blockquote style="margin: 1em 40px 1.618rem; font-size: 16px; line-height: 25.875px; max-width: 30em; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none;"&gt;It may be wrong, but look at this from the point of view of the employer. Why would any company pay a computer programmer with out-of-date skills a salary of say $150,000, when it can hire a fresh graduate — who has no skills — for around $60,000? Even if it spends a month training the younger worker, the company is still far ahead. &lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;It's not just about the money, of course. To justify &lt;em&gt;any&lt;/em&gt; salary, it's not only about what you know - now - but &lt;em&gt;what you can learn&lt;/em&gt;going forward. The key to a long career in Silicon Valley, or anywhere in the tech world, is showing that you can learn and adapt - and &lt;em&gt;master&lt;/em&gt; - constant change.&lt;/p&gt;&lt;p style="margin: 1em 0px; font-size: 14px; line-height: 1.4em; max-width: none; color: rgb(51, 51, 51); font-family: Helvetica, sans-serif; background-color: rgb(255, 255, 255);"&gt;Good luck!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/foxjazz/aggbug/152946.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/X2xlRerlKPQ" height="1" width="1"/&gt;</description><dc:creator>foxjazz</dc:creator><feedburner:origLink>http://geekswithblogs.net/foxjazz/archive/2013/05/16/i-was-surfing-io13-and-found-this-interesting-article-from.aspx</feedburner:origLink></item><item><title>Things to Watch out for with a Production system in Microsoft Azure</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/IDJYBOAwmuU/things-to-watch-out-for-with-a-production-system-in.aspx</link><pubDate>Sun, 19 May 2013 02:27:34 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/ryanabr/archive/2013/05/19/things-to-watch-out-for-with-a-production-system-in.aspx</guid><wfw:comment>http://geekswithblogs.net/ryanabr/comments/152953.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/ryanabr/comments/commentRss/152953.aspx</wfw:commentRss><comments>http://geekswithblogs.net/ryanabr/archive/2013/05/19/things-to-watch-out-for-with-a-production-system-in.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/ryanabr/services/trackbacks/152953.aspx</trackback:ping><source url="http://geekswithblogs.net/ryanabr/rss.aspx">Ryan Abrahamson</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ryanabr/archive/2013/05/19/things-to-watch-out-for-with-a-production-system-in.aspx'&gt;http://geekswithblogs.net/ryanabr/archive/2013/05/19/things-to-watch-out-for-with-a-production-system-in.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;At Industrack,we migrated our production backend to Azure. Our platform is a real-time data collection system of GPS data streaming from remote devices. For the most part it is working well, there are some gaps in services that I am expecting from Azure that hard are hard to find from external vendors. Microsoft has a 99.9% SLA on their Azure services that covers Maintenance windows an transient errors as well that arise from load throttling other intermittent connection failures.&lt;/p&gt;  &lt;p&gt;I have notices that since Microsoft has been trying to get so much out into the hands of developers lately that they are sacrificing some of their historical consistency. For example, we decided to upgrade our Enterprise Library from 4.1 to 5.0. Ent Lib 6.0 was not an option for us at this point as we had dependencies on shard libs that have to work on Windows XP. Ent Lib 6.0 is compiled with .NET 4.5, which is not supported on Windows XP. That said, I ended up having to recompile the Azure TransientFaultHandling Block locally anyway as it had dependencies on an earlier version of the Azure SDK that I was using. &lt;/p&gt;  &lt;p&gt;For those that are using any Azure services, you should be using the TransientFaultHandling block for handling retries to the service. It has some nice classes for allowing you to define different retry strategies.&lt;/p&gt;  &lt;p&gt;SQL Azure has been working well, although we ran in to an instance where we ran our of space in the tier of database that we had (5GB) and we lost 2 hours of data before we noticed that connections were failing with an exception that described the problem, however, it seems like the admin on the Azure account SHOULD have received a notification of the condition so it could be resolved. It is an easy fix, go to the admin screen and pick the next tier of SQL and click save! But some notification here would have saved me some big headaches.&lt;/p&gt;  &lt;p&gt;We are using the Service Bus to consolidate the data from the different endpoints we support which has also been working well. However, I recommend spending time learning about Prefetch, Deadlettering, and PeekLock to use the queues in an efficient manner&lt;/p&gt;  &lt;p&gt;We are just starting to use SQL Reporting in Azure and so far this looks promising. If you do have a current installation of SSRS that you are thinking of migrating, make sure you look at the list of things NOT supported in SSRS for Azure to make sure you are aware of all the things in your current reports that might not work as well as scheduling and delivery.&lt;/p&gt;  &lt;p&gt;So far my only real disappointment is in the Azure VM area. so far this has proven very unreliable with the VMs restarting unannounced on the order of 1 time per week or so. I have no idea why it restarts, but from what I have read it can happen due to hardware failures and the platform moving the VM to different hardware and restarting it. but again, with NO NOTIFICATION! We cannot manage something that does not alert us when actions like this are being taken.&lt;/p&gt;  &lt;p&gt;In general the whole Monitoring area of Azure is missing. When you consider the tools that Microsoft has for monitoring, System Center, and the capabilities it brings to table, the fact that these features are missing from Azure is really disappointing. If that kind of monitoring was available out of the box, Azure would truly be a Word Class platform differentiating itself from Amazon, Google, etc.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ryanabr/aggbug/152953.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/IDJYBOAwmuU" height="1" width="1"/&gt;</description><dc:creator>ryanabr</dc:creator><feedburner:origLink>http://geekswithblogs.net/ryanabr/archive/2013/05/19/things-to-watch-out-for-with-a-production-system-in.aspx</feedburner:origLink></item><item><title>SCCM2012SP1 – How to download prerequisites for offline installation</title><category>SCCM 2012</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/zJh16DLS-T8/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx</link><pubDate>Sun, 19 May 2013 01:28:29 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Wchrabaszcz/archive/2013/05/19/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx</guid><wfw:comment>http://geekswithblogs.net/Wchrabaszcz/comments/152952.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Wchrabaszcz/comments/commentRss/152952.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Wchrabaszcz/archive/2013/05/19/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Wchrabaszcz/services/trackbacks/152952.aspx</trackback:ping><source url="http://geekswithblogs.net/Wchrabaszcz/rss.aspx">Waclaw Chrabaszcz</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/Wchrabaszcz/archive/2013/05/19/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx'&gt;http://geekswithblogs.net/Wchrabaszcz/archive/2013/05/19/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Sometimes your datacenter polices disallows to have Internet access from servers. Let's prepare ourselves for offline installation.
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Go to ADK download site and save on your PC ADKsetup.exe &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=30652"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=30652&lt;/a&gt;&lt;br /&gt;
		&lt;/li&gt;&lt;li&gt;&lt;div&gt;Execute it with parameter
&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;adksetup.exe /layout c:\ADK&lt;br /&gt;
				&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Mount SCCM ISO and execute
&lt;/div&gt;&lt;blockquote&gt;&lt;p&gt;H:\SMSSETUP\BIN\X64\setupdl.exe C:\SCMMprereq &lt;br /&gt;
				&lt;/p&gt;&lt;/blockquote&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;time for coffee …
&lt;/p&gt; &lt;img src="http://geekswithblogs.net/Wchrabaszcz/aggbug/152952.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/zJh16DLS-T8" height="1" width="1"/&gt;</description><dc:creator>Waclaw Chrabaszcz</dc:creator><feedburner:origLink>http://geekswithblogs.net/Wchrabaszcz/archive/2013/05/19/sccm2012sp1--how-to-download-prerequisites-for-offline-installation.aspx</feedburner:origLink></item><item><title>PowerShell Idiosyncrasy Explained</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/9MljcwHeEwo/powershell-idiosyncrasy-explained.aspx</link><pubDate>Sun, 19 May 2013 03:59:23 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/PointsToShare/archive/2013/05/19/powershell-idiosyncrasy-explained.aspx</guid><wfw:comment>http://geekswithblogs.net/PointsToShare/comments/152954.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/PointsToShare/comments/commentRss/152954.aspx</wfw:commentRss><comments>http://geekswithblogs.net/PointsToShare/archive/2013/05/19/powershell-idiosyncrasy-explained.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/PointsToShare/services/trackbacks/152954.aspx</trackback:ping><source url="http://geekswithblogs.net/PointsToShare/rss.aspx">Points To Share</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/PointsToShare/archive/2013/05/19/powershell-idiosyncrasy-explained.aspx'&gt;http://geekswithblogs.net/PointsToShare/archive/2013/05/19/powershell-idiosyncrasy-explained.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Doug Finke, A PowerShell MVP tested it in .Net where it fails as well. He explained that The call is ambiguous between the following methods or properties: 'System.Math.Floor(decimal)' and 'System.Math.Floor(double)'&lt;/p&gt;  &lt;p&gt;My understanding is that PowerShell convert variables as it "pleases". 1/5 will most likely convert to float. &lt;/p&gt;  &lt;p&gt;There maybe another approach to doing it w/o the [Math]::Floor. It is the format it with "{0:N0}", then use the D2 format. &lt;/p&gt;  &lt;p&gt;$i = 1   &lt;br /&gt;$j = "{0:N0}" -f $i/5    &lt;br /&gt;$k = "{0:D2}" -f $j&lt;/p&gt;  &lt;p&gt;AND IT WORKS!! This is probably better than the [Math]::Floor&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;That’s All Folks&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/PointsToShare/aggbug/152954.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/9MljcwHeEwo" height="1" width="1"/&gt;</description><dc:creator>PointsToShare</dc:creator><feedburner:origLink>http://geekswithblogs.net/PointsToShare/archive/2013/05/19/powershell-idiosyncrasy-explained.aspx</feedburner:origLink></item><item><title>Enterprise Architecture &amp;ndash; SOA with a Dash of PubSub</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/xnIxAW1rWZE/152956.aspx</link><pubDate>Sun, 19 May 2013 13:40:50 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Optikal/archive/2013/05/19/152956.aspx</guid><wfw:comment>http://geekswithblogs.net/Optikal/comments/152956.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Optikal/comments/commentRss/152956.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Optikal/archive/2013/05/19/152956.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Optikal/services/trackbacks/152956.aspx</trackback:ping><source url="http://geekswithblogs.net/Optikal/rss.aspx">Dylan Smith</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/Optikal/archive/2013/05/19/152956.aspx'&gt;http://geekswithblogs.net/Optikal/archive/2013/05/19/152956.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;The past few weeks I’ve been helping a client come up with an Enterprise Architecture and I realized that I seem to have zero’d in on an EA that I would probably use at most places.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;First off what do I mean by Enterprise Architecture?  I know lots of people use this to mean different things, for this post I’m using the term Enterprise Architecture to describe how the various applications and systems in an Enterprise will interconnect and integrate with each other (where necessary). Effective Enterprise Architecture should enable powerful integration scenarios and application re-use, while encouraging loose coupling to minimize the cost of change and impact of change on other systems.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The EA described below relies on Web Services and a SOA approach, while also leveraging the PubSub (Publish/Subscribe) pattern common in Message-Based Architecture.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;While this Enterprise Architecture describes the external interfaces each system exposes, and how data flows between them, it does not describe the inner workings of each specific System (that’s the Application Architecture). Having a well-thought out Enterprise Architecture enables flexibility in choosing Application Architectures. Within each system you can choose to use a different Application Architecture, or even change a System’s Application Architecture in the future with minimal impact on other systems.&lt;/font&gt;&lt;/p&gt;  &lt;h2&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/h2&gt;  &lt;h1&gt;Integration at the Database&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;Most teams I encounter do integration exclusively by reading/writing directly from each Systems’ databases.  Although the majority of software teams out there probably do integration by database, in my experience the majority of software teams also deeply regret this decision.  Integrating at the DB level tightly couples Applications to the database schema design, making it risky to ever change that design.  It also limits reuse of application logic limiting you to the reuse of data only.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h1&gt;Service Oriented Architecture&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;Enterprise Architecture consists of breaking down the software ecosystem into independent Systems, and defining a well-known way for those Systems to integrate and/or exchange data. A common approach to manage this integration is to take a SOA approach, and wrap each system in a (Web) Service with a well-defined Service Contract. This moves the inter-system dependencies to the Service Layer rather than the Database layer. At first glance this would seem to simply move the coupling from the DB to the Service Contract, making it risky to ever change the Service Contract. However, it does enable re-use of application logic in addition to data. But more importantly there are well-known techniques to evolve Service Contracts while maintaining compatibility.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The most common approach to Service evolution is to expose separate End-Points for each version of the Service Contract. This way if you wish to modify the Service Contract, you publish a new End-Point with the new Service Contract while leaving the End-Point with the previous Service Contract active. Then implement a compatibility layer that translates service calls from the old Service Contract to the new Service Contract. This way the core System logic needs only support the most recent version of the Service Contract. It also provides a convenient place to introduce logging to understand which Systems are still depending on the old Service Contracts and plan the upgrade work required to move them to the new Service Contract, enabling the eventual retirement of older Service Contracts/End-Points.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;h1&gt;PubSub Pattern&lt;/h1&gt;  &lt;p&gt;&lt;font size="2"&gt;The introduction of an SOA approach, would be a marked improvement over integration at the DB level, however there are still challenges with a Service only approach to integration:&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;Availability - Service-level integration introduces availability concerns. Imagine a scenario where System A depends on Systems B, C, and D via their Service Contract. System A either needs to retrieve data from B/C/D to perform some work, or some operation in System A needs to request B/C/D to perform an operation as part of the System A operation (or often both of the above). If any of the B/C/D systems become un-available it will also impact the availability of System A, as now any System A operations that interact with B/C/D will also fail. System A’s availability is now tied to B, C, and D’s availability. &lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="2"&gt;Coupling - Let’s imagine that we’re System A developers, and when some important operation in System A occurs, Systems B, C and D need to be notified so they can perform some related action. There are really two options, either B, C and D can poll the System A’s Service constantly querying to see when the relevant data in A has changed. This will have significant performance impacts on System A. The alternative is for System A to explicitly call some Service method in B/C/D when the relevant operation in System A happens. This not only incurs the availability concerns noted above, but what happens when another team develops System E that also wishes to be notified? Does the System E development team now need to ask System A’s development team to make changes to System A in order for System E to work? This is not a good situation to be in. &lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;My approach is that in addition to wrapping every System with a Web Service, we also borrow from Message-Based Architecture and use a PubSub (Publish/Subscribe) pattern. In this pattern each System would publish “Domain Events” when things of interest occur within the System (ideally a System would publish an event every time any data owned by that System changes). Using one of the readily available messaging frameworks, this makes it easy for any System to subscribe to Events from any other System. Whenever anything of note happens in System A it simply publishes an event with the related data, and any other interested systems can subscribe to that Event and react accordingly. This way System A (from the above example) has no knowledge or dependency on the other Systems that may subscribe to its events (System E developers can create their System without having to ask System A developers to make any changes). If System A goes down it will not affect Systems B/C/D, and if System B/C/D go down it will not affect System A.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;The other scenario is if System A requires some data from Systems B/C/D to perform an operation in System A. Rather than calling Service methods on B/C/D when that data is required, instead System A can subscribe to the relevant events in System B/C/D when that data changes and System A can maintain its own data cache of data “owned” by B/C/D updating it when the relevant B/C/D events are received. This way the System A operation can complete, even if B/C/D are all unavailable at the time. The important principle to keep in mind with this approach is that a given piece of data can only be “owned” by a single system. System A is free to cache data from B/C/D, but if System A wishes to change any data owned by B/C/D it must “ask” those systems to change it via the B/C/D Web Service. We also need to ensure that the messaging infrastructure we put in place has guaranteed delivery; meaning if System A happens to be down, when it comes back online it will still receive any Events that occurred while it was offline (modern messaging frameworks mostly handle this for us).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Each System under this Enterprise Architecture should look like the following:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/optikal/Windows-Live-Writer/Enterprise-ArchitectureSOA-with-a-Dash-o_8008/Custom%20System_2.png"&gt;&lt;font size="2"&gt;&lt;img title="Custom System" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Custom System" src="https://gwb.blob.core.windows.net/optikal/Windows-Live-Writer/Enterprise-ArchitectureSOA-with-a-Dash-o_8008/Custom%20System_thumb.png" width="787" height="351" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In this case the “Core Domain” is the actual implementation of that system (we’re assuming in the above diagram that there is some Domain DB contained within it, but that’s not necessary). The actual Application Architecture contained within the Core Domain is irrelevant to the Enterprise Architecture. The “Core Domain” in this case may even be a Commercial Software package such as AX or SAP.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In the case of a Commercial Software system, it often won’t support the Enterprise Architecture proposed here. In that case we need to wrap it with the appropriate integration layer to support the Enterprise Architecture. Consider the below example of a Dynamics AX System:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/optikal/Windows-Live-Writer/Enterprise-ArchitectureSOA-with-a-Dash-o_8008/AX%20System_2.png"&gt;&lt;font size="2"&gt;&lt;img title="AX System" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="AX System" src="https://gwb.blob.core.windows.net/optikal/Windows-Live-Writer/Enterprise-ArchitectureSOA-with-a-Dash-o_8008/AX%20System_thumb.png" width="795" height="358" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;In the case of AX I believe it already exposes a Web Service, however, in the case that it didn’t and AX Integration was performed some other way (e.g. DB integration, copying files in a specific format to a specific directory, etc) we would create a custom Web Service that exposed those integration methods over a Service Contract (we don’t want any non-AX Systems talking directly to the AX Database except AX itself, and any Integration Layer we would write). Likewise, AX doesn’t publish Domain Events (and even if it did it wouldn’t do so using the Messaging framework we chose), again we can write some plumbing code to add support for this. In the above diagram we are writing a custom component “AX Event Generator” that would poll the AX Database looking for interesting changes in data and would raise the appropriate Domain Events that other Systems could subscribe to (some COTS Systems may have some notification system or way to “hook” system events eliminating the need to poll the DB). If we wanted AX to respond to Domain Events from other Systems, we would write a simple Event Consumer component that subscribed to Domain Events from other systems and executed the appropriate action in AX.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Using this approach, for other Systems to integrate with AX they no longer need to understand AX Database schema, they don’t need to understand any unusual integration mechanism that AX may use, they only need to understand the Web Service Contract and the Domain Events raised by the AX System (just like every other System).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Typically System-To-System Communication is done primarily via Domain Events. Clients (i.e. UI’s) primarily communicate via the Web Service(s).&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/Optikal/aggbug/152956.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/xnIxAW1rWZE" height="1" width="1"/&gt;</description><dc:creator>Dylan Smith</dc:creator><feedburner:origLink>http://geekswithblogs.net/Optikal/archive/2013/05/19/152956.aspx</feedburner:origLink></item><item><title>SharePoint QuicLaunch Maker with PowerShell</title><category>SharePoint</category><category>PowerShell</category><category>QuickLaunch</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/Tt-PgvJ9eZs/sharepoint-quiclaunch-maker-with-powershell.aspx</link><pubDate>Sun, 19 May 2013 05:44:04 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/PointsToShare/archive/2013/05/19/sharepoint-quiclaunch-maker-with-powershell.aspx</guid><wfw:comment>http://geekswithblogs.net/PointsToShare/comments/152955.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/PointsToShare/comments/commentRss/152955.aspx</wfw:commentRss><comments>http://geekswithblogs.net/PointsToShare/archive/2013/05/19/sharepoint-quiclaunch-maker-with-powershell.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/PointsToShare/services/trackbacks/152955.aspx</trackback:ping><source url="http://geekswithblogs.net/PointsToShare/rss.aspx">Points To Share</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/PointsToShare/archive/2013/05/19/sharepoint-quiclaunch-maker-with-powershell.aspx'&gt;http://geekswithblogs.net/PointsToShare/archive/2013/05/19/sharepoint-quiclaunch-maker-with-powershell.aspx&lt;/a&gt;&lt;/p&gt;&lt;div align="left"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;

&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;At times I create so many sites and sub-sites that the Top-Nav cannot handle it. It is better to add the new links to the Quick Launch.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;The function below makes it a snap.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;Here is how it is used:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;The first line inserts a heading "OrgSites" under the "Lists" heading (already there) in the QuickLaunch.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;o:OfficeDocumentSettings&gt;
  &lt;o:AllowPNG/&gt;
 &lt;/o:OfficeDocumentSettings&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;#xD;&amp;#xA;&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;New-SPNode&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -Web &lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$siteurl&lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;
-NodeText &lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;#xD;&amp;#xA;&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"OrgSites"&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -NodeLink &lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"Head"&lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;
-NodeParent &lt;/span&gt;&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;#xD;&amp;#xA;&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"Lists"&lt;/span&gt;&lt;/p&gt;

&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;&lt;font color="#000000"&gt;TAnd this line inserts the URL of a site named $web1name and the URL $web1url unter the new "OrgSites" heading&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;

&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;New-SPNode&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -Web &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$siteurl&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -NodeText &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$web1name&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -NodeLink &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$web1url&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; -NodeParent &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"OrgSites"&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;Here (FINALLY!!) is the function&lt;br /&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;# New-SPNode creates an entry in
the QuickLaunch navigation&lt;br /&gt;# $Web is the URL of the site&lt;br /&gt;# A node is made of text -
$NodeText and link - $NodeLink&lt;br /&gt;# If the link says
"Head", then the node is a heading, else it is assumed a URL&lt;br /&gt;# If "Head" then the
heading is added immediately under The parent heading ($NodeParent)&lt;br /&gt;# No checking for a URL being a
URL&lt;br /&gt;# Nodes are always added last&lt;br /&gt;# Nodes are added under
$NodeParent&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:blue"&gt;function&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;New-SPNode&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; {&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[CmdletBinding()]&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:blue"&gt;Param&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;(&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[Parameter(Mandatory&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$true&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;,ValueFromPipeline&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$true&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)]&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:teal"&gt;string&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;]&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$Web&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;,&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[Parameter(Mandatory&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$true&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)]&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:teal"&gt;string&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;]&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeText&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;, &lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:green"&gt;#"Head" if Heading&lt;br /&gt;&lt;/span&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[Parameter(Mandatory&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$true&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)]&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:teal"&gt;string&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;]&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeLink&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;,&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[Parameter(Mandatory&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$true&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)]&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:teal"&gt;string&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;]&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeParent&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;&lt;br /&gt;&lt;span style="mso-spacerun:yes"&gt;    &lt;/span&gt;)&lt;br /&gt;Start-SPAssignment -Global&lt;br /&gt;$SPWeb&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; Get-SPWeb
-Identity &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;color:purple"&gt;$Web&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;&lt;br /&gt;$QL&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$SPWeb&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;.Navigation.QuickLaunch
&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;#
QuickLaunch&lt;br /&gt;$PrevHead&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$QL&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; | &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; {&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$_&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;.Title &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;-eq&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeParent&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:blue"&gt;}&lt;br /&gt;# Check if heading&lt;br /&gt;If&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; (&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeLink&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;-eq&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"Head"&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;span style="mso-tab-count:1"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NewHead&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;New-Object&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;Microsoft.SharePoint.Navigation.SPNavigationNode&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;(&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeText&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;, &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;""&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)&lt;span style="mso-tab-count:1"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$QL&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;.Add(&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NewHead&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;, &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$PrevHead&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;) | &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;Out-Null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;}&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:blue"&gt;&lt;br /&gt;else&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;/span&gt;
&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;br /&gt;{&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;br /&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NewNode&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:red"&gt;=&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;New-Object&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;Microsoft.SharePoint.Navigation.SPNavigationNode&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;(&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeText&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;, &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeLink&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;)&lt;/span&gt;&lt;p class="MsoNormal" style="margin-bottom:0in;margin-bottom:.0001pt;line-height:&amp;#xD;&amp;#xA;normal;mso-layout-grid-align:none;text-autospace:none"&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;&lt;span style="mso-tab-count:1"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;Write-Host&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;"New-SPNode:
"&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;color:purple"&gt;$Web&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;color:maroon"&gt;" "&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;#xD;&amp;#xA;&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;#xD;&amp;#xA;&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeText&lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;&amp;#xD;&amp;#xA;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;" "&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NodeParent&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;-ForegroundColor&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:maroon"&gt;Blue&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;i&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;-Backgroundcolor&lt;/span&gt;&lt;/i&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt; &lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;magenta&lt;br /&gt;&lt;span style="mso-tab-count:1"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$PrevHead&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;.Children.AddAsLast(&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;$NewNode&lt;/span&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;) | &lt;/span&gt;&lt;b&gt;&lt;span style="font-size:10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:cadetblue"&gt;Out-Null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:purple"&gt;&lt;br /&gt;}&lt;br /&gt;$SPWeb&lt;/span&gt;&lt;span style="font-size:&amp;#xD;&amp;#xA;10.0pt;font-family:&amp;quot;Courier New&amp;quot;;color:black"&gt;.Dispose()&lt;br /&gt;Stop-SPAssignment -Global&lt;/span&gt;&lt;/p&gt;

&lt;span style="font-size:10.0pt;line-height:115%;font-family:&amp;quot;Courier New&amp;quot;;&amp;#xD;&amp;#xA;mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin;color:black;&amp;#xD;&amp;#xA;mso-ansi-language:EN-US;mso-fareast-language:EN-US;mso-bidi-language:AR-SA"&gt;}&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font color="#FF0000" size="4"&gt;That's All Folks!!&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:WordDocument&gt;
  &lt;w:View&gt;Normal&lt;/w:View&gt;
  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
  &lt;w:TrackMoves/&gt;
  &lt;w:TrackFormatting/&gt;
  &lt;w:PunctuationKerning/&gt;
  &lt;w:ValidateAgainstSchemas/&gt;
  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;
  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;
  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;
  &lt;w:DoNotPromoteQF/&gt;
  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;
  &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;
  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;
  &lt;w:Compatibility&gt;
   &lt;w:BreakWrappedTables/&gt;
   &lt;w:SnapToGridInCell/&gt;
   &lt;w:WrapTextWithPunct/&gt;
   &lt;w:UseAsianBreakRules/&gt;
   &lt;w:DontGrowAutofit/&gt;
   &lt;w:SplitPgBreakAndParaMark/&gt;
   &lt;w:EnableOpenTypeKerning/&gt;
   &lt;w:DontFlipMirrorIndents/&gt;
   &lt;w:OverrideTableStyleHps/&gt;
  &lt;/w:Compatibility&gt;
  &lt;m:mathPr&gt;
   &lt;m:mathFont m:val="Cambria Math"/&gt;
   &lt;m:brkBin m:val="before"/&gt;
   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;
   &lt;m:smallFrac m:val="off"/&gt;
   &lt;m:dispDef/&gt;
   &lt;m:lMargin m:val="0"/&gt;
   &lt;m:rMargin m:val="0"/&gt;
   &lt;m:defJc m:val="centerGroup"/&gt;
   &lt;m:wrapIndent m:val="1440"/&gt;
   &lt;m:intLim m:val="subSup"/&gt;
   &lt;m:naryLim m:val="undOvr"/&gt;
  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;
 &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="267"&gt;
  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;
  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;
  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;
  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;
  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;
  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;
  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;
  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;
  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;
  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;
  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;
  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;
  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;
  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;
  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;
 &lt;/w:LatentStyles&gt;
&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;
&lt;style&gt;
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0in 5.4pt 0in 5.4pt;
	mso-para-margin-top:0in;
	mso-para-margin-right:0in;
	mso-para-margin-bottom:10.0pt;
	mso-para-margin-left:0in;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;}
&lt;/style&gt;
&lt;![endif]--&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/PointsToShare/aggbug/152955.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/Tt-PgvJ9eZs" height="1" width="1"/&gt;</description><dc:creator>PointsToShare</dc:creator><feedburner:origLink>http://geekswithblogs.net/PointsToShare/archive/2013/05/19/sharepoint-quiclaunch-maker-with-powershell.aspx</feedburner:origLink></item><item><title>ReadOnlyObservableCollection</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/fiIBi6oSwss/152957.aspx</link><pubDate>Sun, 19 May 2013 11:38:22 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Patware/archive/2013/05/19/152957.aspx</guid><wfw:comment>http://geekswithblogs.net/Patware/comments/152957.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Patware/comments/commentRss/152957.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Patware/archive/2013/05/19/152957.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Patware/services/trackbacks/152957.aspx</trackback:ping><source url="http://geekswithblogs.net/Patware/rss.aspx">Patrice Calve</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/Patware/archive/2013/05/19/152957.aspx'&gt;http://geekswithblogs.net/Patware/archive/2013/05/19/152957.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Use a ReadOnlyObservableCollection when you allow people to subscribe to changes to a collection, without allowing them to make changes to the collection.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms668620.aspx"&gt;ReadOnlyObservableCollection&lt;/a&gt; is a object from &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.objectmodel.aspx"&gt;System.Collections.ObjectModel&lt;/a&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;ReadOnly: Because there's no Add/Remove method &lt;/li&gt;    &lt;li&gt;Observable: When an item is added or removed, it will fire an event (INotifyCollectionChanged). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But, if it's ReadOnly, how can it be Observable?  Because the object is actually a wrapper to a "real" collection.  When you create a new instance of this object, in the constructor, you need to specify a "real" collection.&lt;/p&gt;  &lt;p&gt;So, you actually need two objects:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;A private, modifyable, observable collection &lt;/li&gt;    &lt;li&gt;A public, ReadOnlyObservableCollection &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here's a simple console app example to illustrate the use.  Persons is public but ReadOnly, whereas _myPeople is private, unexposed, but modifiable.&lt;/p&gt; &lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;       &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9D7513F9-C04C-4721-824A-2B34F0212519:ffec4203-d832-4112-b87c-731c1ee897e2" class="wlWriterEditableSmartContent"&gt;&lt;pre style=" width: 871px; height: 734px;background-color:White;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Collections.Generic;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Linq;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Text;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&lt;span style="color: #000000;"&gt; System.Collections.ObjectModel;
&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000;"&gt; ConsoleApplicationForTestingCollections
{
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Program
    {
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Main(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] args)
        {
            var ds &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataService();
            ds.Init();
            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Note 1: here that we're using a "readonly" collection...&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            Console.WriteLine(ds.Persons[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].FullName);
            Console.Read();
        }
    }
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; Person
    {
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; FirstName { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; LastName { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; FullName
        {
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt; { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Format(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;{0} {1}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, FirstName, LastName); }
        }
    }
    &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataService
    {
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; ReadOnlyObservableCollection&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Person&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; Persons { &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;; }
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; ObservableCollection&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Person&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; _myPeople;
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataService()
        {
            _myPeople &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ObservableCollection&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Person&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;();
            &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.Persons &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; ReadOnlyObservableCollection&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;Person&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;(_myPeople);
        }
        &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Init()
        {
            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; Note 2: here, we're adding an item in a private, unexposed, collection&lt;/span&gt;&lt;span style="color: #008000;"&gt;
&lt;/span&gt;&lt;span style="color: #000000;"&gt;            _myPeople.Add(&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Person() { FirstName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Foo&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, LastName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Bar&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; });

        }
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
    &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&lt;/font&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/Patware/aggbug/152957.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/fiIBi6oSwss" height="1" width="1"/&gt;</description><dc:creator>Patrice Calvé</dc:creator><feedburner:origLink>http://geekswithblogs.net/Patware/archive/2013/05/19/152957.aspx</feedburner:origLink></item><item><title>Windows 8 for Developers Online Camp</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/ir-5hVS4FUI/windows-8-for-developers-online-camp.aspx</link><pubDate>Mon, 20 May 2013 10:01:52 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/WinAZ/archive/2013/05/20/windows-8-for-developers-online-camp.aspx</guid><wfw:comment>http://geekswithblogs.net/WinAZ/comments/152965.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/WinAZ/comments/commentRss/152965.aspx</wfw:commentRss><comments>http://geekswithblogs.net/WinAZ/archive/2013/05/20/windows-8-for-developers-online-camp.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/WinAZ/services/trackbacks/152965.aspx</trackback:ping><source url="http://geekswithblogs.net/WinAZ/rss.aspx">Joe Mayo</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/WinAZ/archive/2013/05/20/windows-8-for-developers-online-camp.aspx'&gt;http://geekswithblogs.net/WinAZ/archive/2013/05/20/windows-8-for-developers-online-camp.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;On May 21st, Ziff Davis is hosting an eSeminar, &lt;a href="http://www.eseminarslive.com/c/a/application-development/MSFT-052113/" target="_blank"&gt;Windows 8 for Developers Online Camp&lt;/a&gt;. Speakers include Greg Levenhagen, &lt;a href="https://twitter.com/GregLevenhagen" target="_blank"&gt;@GregLevenhagen&lt;/a&gt;, and myself. Here’s the agenda:&lt;/p&gt;  &lt;p&gt;- Building a Windows 8 App in 15 minutes or less.    &lt;br /&gt;- Where is Microsoft headed, how it differs from others (Apple/Google), and why it makes sense.     &lt;br /&gt;- Win8 Development versus Android, iOS, and Pre-Win8 Dev   &lt;br /&gt;- What’s Different in Building for Windows 8?     &lt;br /&gt;- Understanding the potential to Make Money With Windows 8     &lt;br /&gt;- What it takes to submit an app (It’s not that hard)     &lt;br /&gt;- What help is available? (There is some very good, free help and tools available)     &lt;br /&gt;- Next Steps / Getting Started&lt;/p&gt;  &lt;p&gt;&lt;a href="https://twitter.com/#!/JoeMayo" target="_blank"&gt;@JoeMayo&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/WinAZ/aggbug/152965.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/ir-5hVS4FUI" height="1" width="1"/&gt;</description><dc:creator>Joe Mayo</dc:creator><feedburner:origLink>http://geekswithblogs.net/WinAZ/archive/2013/05/20/windows-8-for-developers-online-camp.aspx</feedburner:origLink></item><item><title>Another cause of Internal Error 2761 - BizTalk 2013</title><category>BizTalk</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/0slZomUSxbo/152964.aspx</link><pubDate>Mon, 20 May 2013 15:45:49 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/michaelstephenson/archive/2013/05/20/152964.aspx</guid><wfw:comment>http://geekswithblogs.net/michaelstephenson/comments/152964.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/michaelstephenson/comments/commentRss/152964.aspx</wfw:commentRss><comments>http://geekswithblogs.net/michaelstephenson/archive/2013/05/20/152964.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/michaelstephenson/services/trackbacks/152964.aspx</trackback:ping><source url="http://geekswithblogs.net/michaelstephenson/rss.aspx">Michael Stephenson</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/michaelstephenson/archive/2013/05/20/152964.aspx'&gt;http://geekswithblogs.net/michaelstephenson/archive/2013/05/20/152964.aspx&lt;/a&gt;&lt;/p&gt;&lt;div&gt;I had another occasion where I was getting the internal error 2761 error when trying to install BizTalk 2013.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This time it was not related to the "Run as Administrator" trap I fell into a couple of weeks ago.  This time the cause was that I had not activated MS Office 2013.  So before installing BizTalk 2013 remember to open and activate your install of Office 2013&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/michaelstephenson/aggbug/152964.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/0slZomUSxbo" height="1" width="1"/&gt;</description><dc:creator>Michael Stephenson</dc:creator><feedburner:origLink>http://geekswithblogs.net/michaelstephenson/archive/2013/05/20/152964.aspx</feedburner:origLink></item><item><title>Capturing HTTP traffic on an iPhone with Fiddler</title><category>fiddler</category><category>iphone</category><category>http proxy</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/wb52vXxgAGo/152961.aspx</link><pubDate>Mon, 20 May 2013 02:26:53 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/wojan/archive/2013/05/20/152961.aspx</guid><wfw:comment>http://geekswithblogs.net/wojan/comments/152961.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/wojan/comments/commentRss/152961.aspx</wfw:commentRss><comments>http://geekswithblogs.net/wojan/archive/2013/05/20/152961.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/wojan/services/trackbacks/152961.aspx</trackback:ping><source url="http://geekswithblogs.net/wojan/rss.aspx">Scott Wojan</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/wojan/archive/2013/05/20/152961.aspx'&gt;http://geekswithblogs.net/wojan/archive/2013/05/20/152961.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;
This is a simple update to the &lt;b&gt;&lt;u&gt;great &lt;/u&gt;&lt;/b&gt;entry at &lt;a href="http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html"&gt;http://conceptdev.blogspot.com/2009/01/monitoring-iphone-web-traffic-with.html&lt;/a&gt; with the new Fiddler interface.
&lt;/p&gt;
&lt;div class="post-body"&gt;
  &lt;p&gt;
    &lt;br /&gt;
    &lt;b&gt;1. Get Fiddler&lt;/b&gt;&lt;br /&gt;
    &lt;a href="http://www.fiddler2.com/Fiddler2/version.asp" target="20090201"&gt;Download Fiddler&lt;/a&gt; &lt;br /&gt;
    &lt;br /&gt;
    &lt;b&gt;2. Set-up Fiddler&lt;/b&gt;&lt;br /&gt;
    Start Fiddler then open the &lt;code&gt;Tools &amp;gt; Fiddler Options...&lt;/code&gt; window&lt;br /&gt;
    &lt;a href="http://1.bp.blogspot.com/_Ba76y6K7kvs/SYU_H5JSdrI/AAAAAAAAAs4/S2zZe8_e0z4/s1600-h/options-menu.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand;" src="http://gwb.blob.core.windows.net/wojan/Monitoring-HTTP-traffic-with-Fiddler_152961/untitled_1869004160.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297709941502670514" /&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    and in the &lt;code&gt;Connections&lt;/code&gt; tab, ensure: 
    &lt;/p&gt;&lt;ul&gt;
      &lt;li&gt;&lt;code&gt;"Allow remote computers to connect"&lt;/code&gt; is checked.&lt;/li&gt;
      &lt;li&gt;&lt;code&gt;"Act as system proxy on startup&lt;/code&gt;" is checked.&lt;/li&gt;
      &lt;li&gt;Note or change what port is set (eg. &lt;code&gt;8888&lt;/code&gt;).&lt;/li&gt;
    &lt;/ul&gt;
    &lt;br /&gt;
    &lt;a href="http://2.bp.blogspot.com/_Ba76y6K7kvs/SYU_HyP72dI/AAAAAAAAAtA/MjgxzEV4AjE/s1600-h/options-general.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand;" src="http://gwb.blob.core.windows.net/wojan/Monitoring-HTTP-traffic-with-Fiddler_152961/untitled_-1728700224.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297709939651500498" /&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Once you've saved those settings you need to &lt;b&gt;stop&lt;/b&gt; and &lt;b&gt;re-start&lt;/b&gt; Fiddler.&lt;br /&gt;
    &lt;br /&gt;
    &lt;b&gt;3. Ensure Fiddler is 'listening'&lt;/b&gt;&lt;br /&gt;
    Once Fiddler has re-started, verify that the &lt;code&gt;Capture Traffic&lt;/code&gt; menuitem is ticked.&lt;br /&gt;
    &lt;a href="http://4.bp.blogspot.com/_Ba76y6K7kvs/SYU_H7F5ezI/AAAAAAAAAsw/a82sh6Jp7mg/s1600-h/capture.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand;" src="https://gwb.blob.core.windows.net/wojan/Monitoring-HTTP-traffic-with-Fiddler_152961/untitled_240060416.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297709942025321266" /&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;b&gt;4. Check the 'listening' IP&lt;/b&gt;&lt;br /&gt;
    You need to know your computer's wireless-network IP address to configure the iPhone. This screenshots shows the &lt;code&gt;Command Prompt &amp;gt; ipconfig&lt;/code&gt; output:&lt;br /&gt;
    &lt;a href="http://2.bp.blogspot.com/_Ba76y6K7kvs/SYU_y1Rzj4I/AAAAAAAAAtY/ANYHKx8Dqm8/s1600-h/cmd+ipconfig.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand; width: 400px; height: 103px;" src="http://2.bp.blogspot.com/_Ba76y6K7kvs/SYU_y1Rzj4I/AAAAAAAAAtY/ANYHKx8Dqm8/s400/cmd+ipconfig.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297710679199027074" /&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    &lt;b&gt;5. Set-up iPhone Settings&lt;/b&gt;&lt;br /&gt;
    With the computer IP address and Fiddler port, go to your iPhone's &lt;code&gt;Wifi Settings&lt;/code&gt; and scroll down to the &lt;code&gt;HTTP Proxy&lt;/code&gt;, choose &lt;code&gt;Manual&lt;/code&gt; and input the Fiddler proxy info:&lt;br /&gt;
    &lt;a href="http://2.bp.blogspot.com/_Ba76y6K7kvs/SYU_IJ-elYI/AAAAAAAAAtQ/UQmw4qO-dwQ/s1600-h/iPhone+Network+Proxy-zoom.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_Ba76y6K7kvs/SYU_IJ-elYI/AAAAAAAAAtQ/UQmw4qO-dwQ/s400/iPhone+Network+Proxy-zoom.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297709946020730242" /&gt;&lt;/a&gt;&lt;br /&gt;
    (remember to switch back to &lt;b&gt;Off&lt;/b&gt; when you're done)&lt;br /&gt;
    &lt;br /&gt;
    &lt;b&gt;6. 'sniff' away&lt;/b&gt;&lt;br /&gt;
    If everything has been setup right, anything you do in &lt;b&gt;Safari&lt;/b&gt; or other internet based applications will be logged in the Fiddler window.
    &lt;br /&gt;
    &lt;a href="http://1.bp.blogspot.com/_Ba76y6K7kvs/SYVCa3wSatI/AAAAAAAAAtg/MHB2HVfjXBo/s1600-h/Fiddler+window.png"&gt;
      &lt;img style="cursor: pointer; cursor: hand;" src="https://gwb.blob.core.windows.net/wojan/Monitoring-HTTP-traffic-with-Fiddler_152961/untitled_592774912.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5297713566081772242" /&gt;&lt;/a&gt;&lt;br /&gt;
    &lt;br /&gt;
    It's extremely useful for testing/debugging - have fun!&lt;br /&gt;
    &lt;br /&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;div style="background-color: #cccccc; padding: 5px;"&gt;Don't forget to &lt;b&gt;UNDO the iPhone settings&lt;/b&gt; when you're finished!!&lt;/div&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;div style="clear: both;"&gt;&lt;/div&gt;
&lt;/div&gt;
 &lt;img src="http://geekswithblogs.net/wojan/aggbug/152961.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/wb52vXxgAGo" height="1" width="1"/&gt;</description><dc:creator>Scott Wojan</dc:creator><feedburner:origLink>http://geekswithblogs.net/wojan/archive/2013/05/20/152961.aspx</feedburner:origLink></item><item><title>What is Application Domain (AppDomain)...?</title><category>ASP.NET</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/KXlarouM3gc/what-is-application-domain-appdomain.aspx</link><pubDate>Mon, 20 May 2013 08:10:22 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/pabothu/archive/2013/05/20/what-is-application-domain-appdomain.aspx</guid><wfw:comment>http://geekswithblogs.net/pabothu/comments/152960.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/pabothu/comments/commentRss/152960.aspx</wfw:commentRss><comments>http://geekswithblogs.net/pabothu/archive/2013/05/20/what-is-application-domain-appdomain.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/pabothu/services/trackbacks/152960.aspx</trackback:ping><source url="http://geekswithblogs.net/pabothu/rss.aspx">Absolute Thoughts....</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/pabothu/archive/2013/05/20/what-is-application-domain-appdomain.aspx'&gt;http://geekswithblogs.net/pabothu/archive/2013/05/20/what-is-application-domain-appdomain.aspx&lt;/a&gt;&lt;/p&gt;&lt;font face="Tahoma" size="2"&gt;When we launch the Notepad program in Windows, the program executes inside of a container known as a process. We can launch multiple instances of Notepad, and each instance will run in a dedicated process. Using the Task Manager application, we can see a list of all processes currently executing in the system.&lt;br /&gt;&lt;br /&gt;A process contains the executable code and data of a program inside memory it has reserved from the operating system. There will be at least one thread executing instructions inside of the process, and in most cases there are multiple threads. If the program opens any files or other resources, those resources will belong to the process.&lt;br /&gt;&lt;br /&gt;A process is also boundary. Erroneous code inside of a process cannot corrupt areas outside of the current process. It is easy to communicate inside of a process, but special techniques are required to communicate from one process to another. Each process also runs under a specific security context which can dictate what the process can do on the machine and network.  &lt;br /&gt;&lt;br /&gt;A process is the smallest unit of isolation available on the Windows operating system. This could pose a problem for an ISP who wants to host hundreds of ASP.NET applications on a single server. The ISP will want to isolate each ASP.NET application to prevent one application from interfering with another company’s application on the same server, but the relative cost of launching and executing a process for hundreds of applications may be prohibitive.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Introducing the Application Domain&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;.NET introduces the concept of an application domain, or AppDomain. Like a process, the AppDomain is both a container and a boundary. The .NET runtime uses an AppDomain as a container for code and data, just like the operating system uses a process as a container for code and data. As the operating system uses a process to isolate misbehaving code, the .NET runtime uses an AppDomain to isolate code inside of a secure boundary.&lt;br /&gt;&lt;br /&gt;Note,&lt;i&gt; &lt;font color="#0000FF"&gt;however, that the application domain is not a secure boundary when the application runs with full trust. Applications running with full trust can execute native code and circumvent all security checks by the .NET runtime. ASP.NET applications run with full trust by default.&lt;/font&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;An AppDomain belongs to only a single process, but single process can hold multiple AppDomains. An AppDomain is relatively cheap to create (compared to a process), and has relatively less overhead to maintain than a process. For these reasons, an AppDomain is a great solution for the ISP who is hosting hundreds of applications. Each application can exist inside an isolated AppDomain, and many of these AppDomains can exist inside of a single process – a cost savings.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AppDomains And You&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You’ve created two ASP.NET applications on the same server, and have not done any special configuration. What is happening?&lt;br /&gt;&lt;br /&gt;A single ASP.NET worker process will host both of the ASP.NET applications. On Windows XP and Windows 2000 this process is named aspnet_wp.exe, and the process runs under the security context of the local ASPNET account. On Windows 2003 the worker process has the name w3wp.exe and runs under the NETWORK SERVICE account by default.&lt;br /&gt;&lt;br /&gt;An object lives in one AppDomain. Each ASP.NET application will have it’s own set of global variables: Cache, Application, and Session objects are not shared. Even though the code for both of the applications resides inside the same process, the unit of isolation is the .NET AppDomain. If there are classes with shared or static members, and those classes exist in both applications, each AppDomain will have it’s own copy of the static fields – the data is not shared. The code and data for each application is safely isolated and inside of a boundary provided by the AppDomain&lt;br /&gt;&lt;br /&gt;In order to communicate or pass objects between AppDomains, you’ll need to look at techniques in .NET for communication across boundaries, such as .NET remoting or web services.&lt;br /&gt;&lt;br /&gt;Note again: &lt;i&gt;&lt;font color="#0000FF"&gt;the one caveat to the idea of an AppDomain as a boundary is that ASP.NET applications will run with full trust by default. Fully trusted code can execute native code, and native code can essentially have access to anything inside the process. You’ll need to run applications with partial trust to restrict access to unmanged code and verify all managed code to secure AppDomains.&lt;/font&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Shadow Copies and Restarts&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once an assembly is loaded into an AppDomain, there is no way to remove the assembly from the AppDomain. It is possible, however, to remove an AppDomain from a process.&lt;br /&gt;&lt;br /&gt;If you copy an updated dll into an application’s bin subdirectory, the ASP.NET runtime recognizes there is new code to execute. Since ASP.NET cannot swap the dll into the existing AppDomain , it starts a new AppDomain. The old application domain is “drain stopped”, that is, existing requests are allowed to finish executing, and once they are all finished the AppDomain can unload. The new AppDomain starts with the new code and begins taking all new requests.&lt;br /&gt;&lt;br /&gt;Typically, when a dll loads into a process, the process locks the dll and you cannot overwrite the file on disk. However, AppDomains have a feature known as Shadow Copy that allows assemblies to remain unlocked and replaceable on disk.&lt;br /&gt;&lt;br /&gt;The runtime initializes ASP.NET with Shadow Copy enabled for the bin directory. The AppDomain will copy any dll it needs from the bin directory to a temporary location before locking and loading the dll into memory. Shadow Copy allows us to overwrite any dll in the bin directory during an update without taking the web application offline.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Master Of Your Domain&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Application domains replace the OS process as the unit of isolation for .NET code. An understanding of application domains will give you an idea of the work taking place behind the scenes of an ASP.NET application. Using the CurrentDomain property of the AppDomain class you can inspect properties about the AppDomain your code is executing in, including the Shadow Copy settings we discussed in this article.&lt;br /&gt;&lt;br /&gt;&lt;font size="2"&gt;Source: &lt;a href="http://odetocode.com/articles/305.aspx"&gt;http://odetocode.com/articles/305.aspx&lt;/a&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/pabothu/aggbug/152960.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/KXlarouM3gc" height="1" width="1"/&gt;</description><dc:creator>Pavan Kumar Pabothu</dc:creator><feedburner:origLink>http://geekswithblogs.net/pabothu/archive/2013/05/20/what-is-application-domain-appdomain.aspx</feedburner:origLink></item><item><title>Uncaught SyntaxError: Unexpected token u. file JavaScript Error in MVC</title><category>JavaScript</category><category>MVC 4</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/ADoceqAGrk8/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx</link><pubDate>Mon, 20 May 2013 06:45:39 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/Aligned/archive/2013/05/20/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx</guid><wfw:comment>http://geekswithblogs.net/Aligned/comments/152962.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/Aligned/comments/commentRss/152962.aspx</wfw:commentRss><comments>http://geekswithblogs.net/Aligned/archive/2013/05/20/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/Aligned/services/trackbacks/152962.aspx</trackback:ping><source url="http://geekswithblogs.net/Aligned/rss.aspx">Programming and Learning from SD</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/Aligned/archive/2013/05/20/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx'&gt;http://geekswithblogs.net/Aligned/archive/2013/05/20/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I was getting a JavaScript error that pointed to line number 1 of my MVC page. I have a form on the page and expected the Unobtrusive Validation to work with the Data Annotations. It took me a while to realize the validation messages weren't showing. After I while I found that I was missing the&lt;strong&gt; @Html.ValidationMessageFor(m =&amp;gt; m.Name)&lt;/strong&gt;. Adding that for each field fixed it.&lt;/p&gt;  &lt;p&gt;My password reset with token example. I was missing line 12 and 17.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;@using (Html.BeginForm("PasswordReset", "Home"))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    @Html.AntiForgeryToken()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    @Html.ValidationSummary()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fieldset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;legend&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;@HomeViewResource.ChangePasswordFormTitle&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;legend&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                @Html.LabelFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.NewPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                @Html.PasswordFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.NewPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                @Html.ValidationMessageFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.NewPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                @Html.LabelFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.ConfirmPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;                @Html.PasswordFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.ConfirmPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;                @Html.ValidationMessageFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetModel.ConfirmPassword)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;li&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ol&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="submit"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="btn btn-primary"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="@HomeViewResource.ChangePasswordButtonText"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fieldset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    @Html.HiddenFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.PasswordResetToken)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    @Html.HiddenFor(m =&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; m.UserId)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;


&lt;font color="#000000" size="2" face="Consolas"&gt;&lt;/font&gt; &lt;img src="http://geekswithblogs.net/Aligned/aggbug/152962.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/ADoceqAGrk8" height="1" width="1"/&gt;</description><dc:creator>Aligned</dc:creator><feedburner:origLink>http://geekswithblogs.net/Aligned/archive/2013/05/20/uncaught-syntaxerror-unexpected-token-u.-file-javascript-error-in-mvc.aspx</feedburner:origLink></item><item><title>New Book: Pro Team Foundation Service</title><category>Visual Studio 2012</category><category>TFS</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/8i1OOfjul5Q/new-book-pro-team-foundation-service.aspx</link><pubDate>Mon, 20 May 2013 16:27:33 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx</guid><wfw:comment>http://geekswithblogs.net/jakob/comments/152963.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/152963.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/152963.aspx</trackback:ping><source url="http://geekswithblogs.net/jakob/rss.aspx">Jakob Ehn</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The last couple of months I have been working together with &lt;a href="http://msmvps.com/blogs/molausson/"&gt;Mathias Olausson&lt;/a&gt;, &lt;a href="http://mskold.blogspot.se/"&gt;Mattias Sköld&lt;/a&gt; and &lt;a href="https://www.apress.com/index.php/author/author/view/id/2328"&gt;Joachim Rossberg&lt;/a&gt; on a new book project for &lt;a href="http://www.apress.com/"&gt;Apress&lt;/a&gt; that has just been published. The book is called &lt;strong&gt;&lt;a href="http://www.apress.com/microsoft/workflow/9781430259954"&gt;Pro Team Foundation Service&lt;/a&gt;&lt;/strong&gt; and covers all aspects of working with Team Foundation Service, Microsoft's hosted version of Team Foundation Server in the cloud. I have mainly worked on the chapter related to automated build and continuous deployment, but also with some of the other chapters.&lt;/p&gt;  &lt;p&gt;It has been a quite hectic  project due to a tight schedule, but at the same time it has been a lot of fun to work on this book together with late night meetings and weekends filled with book writing and chapter editing. &lt;/p&gt;  &lt;p&gt;During the project we’ve had great help from several people at Microsoft, Jamie Cool, Will Smythe, &lt;a href="http://blogs.msdn.com/b/anutthara/"&gt;Anutthara Bharadwaj&lt;/a&gt;, &lt;a href="http://www.edsquared.com/"&gt;Ed Blankenship&lt;/a&gt; and Vijay Machiraju. Also a big thanks to &lt;a href="http://blogs.msdn.com/b/bharry/"&gt;Brian Harry&lt;/a&gt; for writing the foreword to the book. In addition I’d like to thank my colleague &lt;a href="http://geekswithblogs.net/terje/"&gt;Terje Sandstrøm&lt;/a&gt; for helping out with Technical Review of large parts of the book.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Here is some information about the book, you can find it on Amazon here:    &lt;br /&gt;&lt;a href="http://www.amazon.com/Team-Foundation-Service-Mathias-Olausson/dp/1430259957#_"&gt;http://www.amazon.com/Team-Foundation-Service-Mathias-Olausson/dp/1430259957#_&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Check it out and let us know what you think!   &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/NewBookProTeamFoundationService_149E2/clip_image001_2.jpg"&gt;&lt;img title="clip_image001" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="clip_image001" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/NewBookProTeamFoundationService_149E2/clip_image001_thumb.jpg" width="300" height="300" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Pro Team Foundation Service&lt;/i&gt; gives you a jump-start into Microsoft’s cloud-based ALM platform, taking you through the different stages of software development. Every project needs to plan, develop, test and release software and with agile practices often at a higher pace than ever before.     &lt;br /&gt;Microsoft's Team Foundation Service is a cloud-based platform that gives you tools for agile planning and work tracking. It has a code repository that can be used not only from Visual Studio but from Java platforms and Mac OS X. The testing tools allow testers to start testing at the same time as developers start developing. The book also covers how to set up automated practices such as build, deploy and test workflows.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;This book:&lt;/p&gt;  &lt;p&gt;· Takes you through the major stages in a software development project. &lt;/p&gt;  &lt;p&gt;· Gives practical development guidance for the whole team. &lt;/p&gt;  &lt;p&gt;· Enables you to quickly get started with modern development practices. &lt;/p&gt;  &lt;p&gt;With Microsoft Team Foundation Service comes a collaboration platform that gives you and your team the tools to better perform your tasks in a fully integrated way. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;What you’ll learn&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;· What ALM is and what it can do for you. &lt;/p&gt;  &lt;p&gt;· Leverage a cloud-based ALM platform for quick improvements in your development process. &lt;/p&gt;  &lt;p&gt;· Improve your agile development process using integrated tools and practices. &lt;/p&gt;  &lt;p&gt;· Develop automated build, deployment and testing processes. &lt;/p&gt;  &lt;p&gt;· Integrate different development tools with one collaboration platform. &lt;/p&gt;  &lt;p&gt;· Get started with ALM best-practices first time round. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Who this book is for&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;i&gt;Pro Team Foundation Service&lt;/i&gt; is for any development team that wants to take their development practices to the next level. Microsoft Team Foundation Service is an excellent platform for managing the entire application development lifecycle and being a cloud-based offering it is very easy to get started. &lt;i&gt;Pro Team Foundation Service&lt;/i&gt; is a great guide for anyone in a team who wants to get started with the service and wants to get expert guidance to do it right.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;     &lt;br /&gt;Table of Contents&lt;/b&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1. Introduction to Application Lifecycle Management &lt;/p&gt;    &lt;p&gt;2. Introduction to Agile Planning, Development, and Testing &lt;/p&gt;    &lt;p&gt;3. Deciding on a Hosted Service &lt;/p&gt;    &lt;p&gt;4. Getting Started &lt;/p&gt;    &lt;p&gt;5. Working with the Initial Product Backlog &lt;/p&gt;    &lt;p&gt;6. Managing Team and Alerts &lt;/p&gt;    &lt;p&gt;7. Initial Sprint Planning &lt;/p&gt;    &lt;p&gt;8. Running the Sprint  &lt;/p&gt;    &lt;p&gt;9. Kanban &lt;/p&gt;    &lt;p&gt;10. Engaging the Customer &lt;/p&gt;    &lt;p&gt;11. Choosing Source Control Options &lt;/p&gt;    &lt;p&gt;12. Working with Team Foundation Version Control in Visual Studio &lt;/p&gt;    &lt;p&gt;13. Working with Git in Visual Studio &lt;/p&gt;    &lt;p&gt;14. Working in Heterogeneous Environments &lt;/p&gt;    &lt;p&gt;15. Configuring Build Services &lt;/p&gt;    &lt;p&gt;16. Working with Builds &lt;/p&gt;    &lt;p&gt;17. Customizing Builds &lt;/p&gt;    &lt;p&gt;18. Continuous Deployment &lt;/p&gt;    &lt;p&gt;19. Agile Testing &lt;/p&gt;    &lt;p&gt;20. Test Management &lt;/p&gt;    &lt;p&gt;21. Lab Management &lt;/p&gt;&lt;/blockquote&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/152963.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/8i1OOfjul5Q" height="1" width="1"/&gt;</description><dc:creator>Jakob Ehn</dc:creator><feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/05/20/new-book-pro-team-foundation-service.aspx</feedburner:origLink></item><item><title>New version of Syncfusion Metro Studio V2</title><category>Windows 8</category><category>Modern UI</category><category>Icon templates</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/vaUfIajBINU/new-version-of-syncfusion-metro-studio.aspx</link><pubDate>Tue, 21 May 2013 07:52:11 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/ihaynes/archive/2013/05/21/new-version-of-syncfusion-metro-studio.aspx</guid><wfw:comment>http://geekswithblogs.net/ihaynes/comments/152972.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/ihaynes/comments/commentRss/152972.aspx</wfw:commentRss><comments>http://geekswithblogs.net/ihaynes/archive/2013/05/21/new-version-of-syncfusion-metro-studio.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/ihaynes/services/trackbacks/152972.aspx</trackback:ping><source url="http://geekswithblogs.net/ihaynes/rss.aspx">expression(web.blog)</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ihaynes/archive/2013/05/21/new-version-of-syncfusion-metro-studio.aspx'&gt;http://geekswithblogs.net/ihaynes/archive/2013/05/21/new-version-of-syncfusion-metro-studio.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Syncfusion have released an updated version of their free Metro Studio V2.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;If you've not seen it before it's a collection of 2500 'Modern UI' style icons which you can edit/modify and use without restriction in apps, websites etc.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;See &lt;/font&gt;&lt;a href="http://www.syncfusion.com/downloads/metrostudio" target="_blank"&gt;&lt;font face="Tahoma" size="2"&gt;http://www.syncfusion.com/downloads/metrostudio&lt;/font&gt;&lt;/a&gt;&lt;/p&gt; &lt;img src="http://geekswithblogs.net/ihaynes/aggbug/152972.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/vaUfIajBINU" height="1" width="1"/&gt;</description><dc:creator>ihaynes</dc:creator><feedburner:origLink>http://geekswithblogs.net/ihaynes/archive/2013/05/21/new-version-of-syncfusion-metro-studio.aspx</feedburner:origLink></item><item><title>ssis error deploying package</title><category>all tech stuff</category><category>SQL Server</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/EFxBLPG3Qv8/152966.aspx</link><pubDate>Mon, 20 May 2013 17:13:57 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/influent1/archive/2013/05/20/152966.aspx</guid><wfw:comment>http://geekswithblogs.net/influent1/comments/152966.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/influent1/comments/commentRss/152966.aspx</wfw:commentRss><comments>http://geekswithblogs.net/influent1/archive/2013/05/20/152966.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/influent1/services/trackbacks/152966.aspx</trackback:ping><source url="http://geekswithblogs.net/influent1/rss.aspx">The Wrecking Bawl</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/influent1/archive/2013/05/20/152966.aspx'&gt;http://geekswithblogs.net/influent1/archive/2013/05/20/152966.aspx&lt;/a&gt;&lt;/p&gt;&lt;div&gt;I was getting the error below when trying to deploy to my SQL 2008 R2 cluster, which was odd since I had never had any trouble before.  The problem ended up being that when I double clicked on the SSISDeploymentManifest file my computer was using the SQL 2012 version of the deployment utility because I had recently installed it.  Once I used the 2008 utility everything worked fine.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Exception details: Microsoft.SqlServer.Dts.Runtime.DtsRuntimeException: Storing or modifying packages in SQL Server requires the SSIS runtime and database to be the same version. Storing packages in earlier versions is not supported.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt; ---&amp;gt; System.Runtime.InteropServices.COMException: Storing or modifying packages in SQL Server requires the SSIS runtime and database to be the same version. Storing packages in earlier versions is not supported.&lt;/b&gt;&lt;/div&gt; &lt;img src="http://geekswithblogs.net/influent1/aggbug/152966.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/EFxBLPG3Qv8" height="1" width="1"/&gt;</description><dc:creator>Alex Bransky</dc:creator><feedburner:origLink>http://geekswithblogs.net/influent1/archive/2013/05/20/152966.aspx</feedburner:origLink></item><item><title>Xat.com Image Optimiser -  a little known tool for RWD</title><category>RWD</category><category>Image Optimization</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/nDQz5rB4lPY/152970.aspx</link><pubDate>Tue, 21 May 2013 03:30:40 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/ihaynes/archive/2013/05/20/152970.aspx</guid><wfw:comment>http://geekswithblogs.net/ihaynes/comments/152970.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/ihaynes/comments/commentRss/152970.aspx</wfw:commentRss><comments>http://geekswithblogs.net/ihaynes/archive/2013/05/20/152970.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/ihaynes/services/trackbacks/152970.aspx</trackback:ping><source url="http://geekswithblogs.net/ihaynes/rss.aspx">expression(web.blog)</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/ihaynes/archive/2013/05/20/152970.aspx'&gt;http://geekswithblogs.net/ihaynes/archive/2013/05/20/152970.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;An article in the July 2013 issue of .Net Magazine, "Optimise your site for mobile", highlights the importance of image optimisation and has a link to a list of tools for the job.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;This mentions several well known tools but misses one of the oldest and best, Xat's Image Optimiser. I've used this for many years and, despite having more modern tools, still come back to this when I want the tightest optimisation.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;&lt;img title="xat1_1355585792.png" id="ctl00_pageContent_Editor_Edit_ctl00_uploadedImg" style="width: 85%; float: left;" src="https://gwb.blob.core.windows.net/ihaynes/Xatcom-Image-Optimiser----a-little-know-tool_152970/xat1_1355585792.png" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt; &lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;It handles jpegs, gifs and pngs with appropriate settings for each. For jpegs it has a 'MagiCompression' mode as well as the normal settings. This applies different levels of compression to areas of an image depending on the complexity of the content. It works very well and can make a big difference. The only thing you need to be aware of is that if you open such an image again in an ordinary editor, this variable compression will be lost.&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt; &lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;img title="xat2_-425534720.png" id="ctl00_pageContent_Editor_Edit_ctl01_uploadedImg" src="https://gwb.blob.core.windows.net/ihaynes/Xatcom-Image-Optimiser----a-little-know-tool_152970/xat2_-425534720.png" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt; &lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;There is a batch wizard and are also tools for image resizing, cropping, adding text to images, filling areas with colour etc.&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;The product costs $49 which seems expensive in todays market but I've definitely had my moneys worth over the years and with image optimisation being critical for responsive design, will do so again and again.&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;Download the trial and try it out. You'll be impressed with the results.&lt;/font&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;a href="http://www.xat.com/io/" target="_blank"&gt;&lt;font face="Tahoma" size="2"&gt;http://www.xat.com/io/&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="clear: both;"&gt;&lt;font face="Tahoma" size="2"&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt; &lt;img src="http://geekswithblogs.net/ihaynes/aggbug/152970.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/nDQz5rB4lPY" height="1" width="1"/&gt;</description><dc:creator>ihaynes</dc:creator><feedburner:origLink>http://geekswithblogs.net/ihaynes/archive/2013/05/20/152970.aspx</feedburner:origLink></item><item><title>APress Deal of the Day 21/May/2013 - Pro Application Lifecycle Management with Visual Studio 2012</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/NfAuRyl-Xss/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx</link><pubDate>Tue, 21 May 2013 12:03:49 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/TATWORTH/archive/2013/05/21/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx</guid><wfw:comment>http://geekswithblogs.net/TATWORTH/comments/152973.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/TATWORTH/comments/commentRss/152973.aspx</wfw:commentRss><comments>http://geekswithblogs.net/TATWORTH/archive/2013/05/21/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://geekswithblogs.net/TATWORTH/services/trackbacks/152973.aspx</trackback:ping><source url="http://geekswithblogs.net/TATWORTH/rss.aspx">Tatworth</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/TATWORTH/archive/2013/05/21/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx'&gt;http://geekswithblogs.net/TATWORTH/archive/2013/05/21/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx&lt;/a&gt;&lt;/p&gt;Today's $10 Deal of the Day from APress at &lt;a href="http://www.apress.com/9781430243441"&gt;http://www.apress.com/9781430243441&lt;/a&gt; is Pro Application Lifecycle Management with Visual Studio 2012&lt;br /&gt;&lt;br /&gt;"&lt;i&gt;Pro Application Lifecycle Management with Visual Studio 2012&lt;/i&gt; focuses on the most powerful application lifecycle management tool available for the Microsoft .NET Framework: Visual Studio Team Foundation Server."&lt;br /&gt;&lt;br /&gt;
&lt;img alt="book cover" src="http://www.apress.com/media/catalog/product/cache/9/small_image/125x/040ec09b1e35df139433887a97daa66f/A/9/A9781430243441-small_3.png" /&gt;
&lt;br /&gt; &lt;img src="http://geekswithblogs.net/TATWORTH/aggbug/152973.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/NfAuRyl-Xss" height="1" width="1"/&gt;</description><dc:creator>TATWORTH</dc:creator><feedburner:origLink>http://geekswithblogs.net/TATWORTH/archive/2013/05/21/apress-deal-of-the-day-21may2013---pro-application-lifecycle.aspx</feedburner:origLink></item><item><title>Tech Learning&amp;ndash;Always Start with Hello World</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/5y9V7qCCZUU/152931.aspx</link><pubDate>Wed, 15 May 2013 07:20:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</guid><wfw:comment>http://geekswithblogs.net/dlussier/comments/152931.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dlussier/comments/commentRss/152931.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://geekswithblogs.net/dlussier/services/trackbacks/152931.aspx</trackback:ping><source url="http://geekswithblogs.net/dlussier/rss.aspx">D'Arcy from Winnipeg</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx'&gt;http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Remember Hello World? It was the program that we all started out with at some point. We did something that would make Hello World display somehow. But as we got older and more into our careers as developers, we’ve forgotten Hello World. Instead, we’ve replaced it with Contoso or Pet Store or whatever large, heavy, complex domain we decided would be a much better sandbox to frame learning a new technology with.&lt;/p&gt;  &lt;p&gt;I was talking with an attendee at Prairie Dev Con about this last week, and how we can easily get caught up in fulfilling the domain rather than understanding the underlying tech.&lt;/p&gt;  &lt;p&gt;Consider these two scenarios, both related to learning ASP.NET MVC with EF code first.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="445" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="209"&gt;A doctor’s office wants a web site to schedule patient visits. This site will use forms authentication and will leverage MVC and Entity Framework Code First. We’ll use jQuery on the front end for the UI and SQL Server in the back for storing the data. The datamodel looks like this…&amp;lt;insert data model here&amp;gt; and the class diagram looks like this &amp;lt;insert class diagram here&amp;gt;.&lt;/td&gt;        &lt;td valign="top" width="30"&gt; &lt;/td&gt;        &lt;td valign="top" width="204"&gt;Create a single view in an MVC project that uses EF to retrieve a simple value of “Hello World” from a database table and display it on the screen.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Now, if we were to do both of these we’d come to the same result of understanding EF and MVC, but with one difference – the example on the left comes with a huge and heavy domain that we’ve added in for no other reason than to feel like we’re building something of value. But here’s the thing – we’re not. When we’re learning a technology, its &lt;strong&gt;&lt;em&gt;about the technology&lt;/em&gt;&lt;/strong&gt;. The details of a pretend scenario do nothing but get in the way of the actual learning.&lt;/p&gt;  &lt;p&gt;The value is in us understanding how the technology works &lt;strong&gt;&lt;em&gt;so we can apply it&lt;/em&gt;&lt;/strong&gt; to domain contexts later. Would we expect an apprentice carpenter who’s just learning to build a house as their first project to teach them framing? Of course not. So why do we expect it from ourselves as developers?&lt;/p&gt;  &lt;p&gt;Unburden yourself from complex domain contexts when you’re starting out with something new. Start with Hello World and take it from there.&lt;/p&gt;  &lt;p&gt;D&lt;/p&gt; &lt;img src="http://geekswithblogs.net/dlussier/aggbug/152931.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/5y9V7qCCZUU" height="1" width="1"/&gt;</description><dc:creator>D'Arcy Lussier</dc:creator><feedburner:origLink>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</feedburner:origLink></item><item><title>Tech Learning&amp;ndash;Always Start with Hello World</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/5y9V7qCCZUU/152931.aspx</link><pubDate>Wed, 15 May 2013 07:20:01 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</guid><wfw:comment>http://geekswithblogs.net/dlussier/comments/152931.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/dlussier/comments/commentRss/152931.aspx</wfw:commentRss><comments>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx#comment</comments><slash:comments>5</slash:comments><trackback:ping>http://geekswithblogs.net/dlussier/services/trackbacks/152931.aspx</trackback:ping><source url="http://geekswithblogs.net/dlussier/rss.aspx">D'Arcy from Winnipeg</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx'&gt;http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Remember Hello World? It was the program that we all started out with at some point. We did something that would make Hello World display somehow. But as we got older and more into our careers as developers, we’ve forgotten Hello World. Instead, we’ve replaced it with Contoso or Pet Store or whatever large, heavy, complex domain we decided would be a much better sandbox to frame learning a new technology with.&lt;/p&gt;  &lt;p&gt;I was talking with an attendee at Prairie Dev Con about this last week, and how we can easily get caught up in fulfilling the domain rather than understanding the underlying tech.&lt;/p&gt;  &lt;p&gt;Consider these two scenarios, both related to learning ASP.NET MVC with EF code first.&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="445" border="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="209"&gt;A doctor’s office wants a web site to schedule patient visits. This site will use forms authentication and will leverage MVC and Entity Framework Code First. We’ll use jQuery on the front end for the UI and SQL Server in the back for storing the data. The datamodel looks like this…&amp;lt;insert data model here&amp;gt; and the class diagram looks like this &amp;lt;insert class diagram here&amp;gt;.&lt;/td&gt;        &lt;td valign="top" width="30"&gt; &lt;/td&gt;        &lt;td valign="top" width="204"&gt;Create a single view in an MVC project that uses EF to retrieve a simple value of “Hello World” from a database table and display it on the screen.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;Now, if we were to do both of these we’d come to the same result of understanding EF and MVC, but with one difference – the example on the left comes with a huge and heavy domain that we’ve added in for no other reason than to feel like we’re building something of value. But here’s the thing – we’re not. When we’re learning a technology, its &lt;strong&gt;&lt;em&gt;about the technology&lt;/em&gt;&lt;/strong&gt;. The details of a pretend scenario do nothing but get in the way of the actual learning.&lt;/p&gt;  &lt;p&gt;The value is in us understanding how the technology works &lt;strong&gt;&lt;em&gt;so we can apply it&lt;/em&gt;&lt;/strong&gt; to domain contexts later. Would we expect an apprentice carpenter who’s just learning to build a house as their first project to teach them framing? Of course not. So why do we expect it from ourselves as developers?&lt;/p&gt;  &lt;p&gt;Unburden yourself from complex domain contexts when you’re starting out with something new. Start with Hello World and take it from there.&lt;/p&gt;  &lt;p&gt;D&lt;/p&gt; &lt;img src="http://geekswithblogs.net/dlussier/aggbug/152931.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/5y9V7qCCZUU" height="1" width="1"/&gt;</description><dc:creator>D'Arcy Lussier</dc:creator><feedburner:origLink>http://geekswithblogs.net/dlussier/archive/2013/05/15/152931.aspx</feedburner:origLink></item><item><title>.NET Security Part 3</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/yfpgTTe06nw/.net-security-part-3.aspx</link><pubDate>Thu, 16 May 2013 10:52:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</guid><wfw:comment>http://geekswithblogs.net/simonc/comments/152935.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/simonc/comments/commentRss/152935.aspx</wfw:commentRss><comments>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://geekswithblogs.net/simonc/services/trackbacks/152935.aspx</trackback:ping><source url="http://geekswithblogs.net/simonc/rss.aspx">Simon Cooper</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx'&gt;http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You write a security-related application that allows addins to be used. These addins (as dlls) can be downloaded from anywhere, and, if allowed to run full-trust, could open a security hole in your application. So you want to restrict what the addin dlls can do, using a sandboxed appdomain, as explained in my previous posts.&lt;/p&gt;

&lt;p&gt;But there needs to be an interaction between the code running in the sandbox and the code that created the sandbox, so the sandboxed code can control or react to things that happen in the controlling application. Sandboxed code needs to be able to call code outside the sandbox.&lt;/p&gt;

&lt;p&gt;Now, there are various methods of allowing cross-appdomain calls, the two main ones being &lt;a href="http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx"&gt;.NET Remoting&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx"&gt;MarshalByRefObject&lt;/a&gt;, and WCF named pipes. I'm not going to cover the details of setting up such mechanisms here, or which you should choose for your specific situation; there are plenty of blogs and tutorials covering such issues elsewhere. What I'm going to concentrate on here is the more general problem of running fully-trusted code within a sandbox, which is required in most methods of app-domain communication and control.&lt;/p&gt;

&lt;h4&gt;Defining assemblies as fully-trusted&lt;/h4&gt;

&lt;p&gt;In my last post, I mentioned that when you create a sandboxed appdomain, you can pass in a list of assembly strongnames that run as full-trust within the appdomain:&lt;/p&gt;

&lt;pre&gt;// get the Assembly object for the assembly
Assembly assemblyWithApi = ...    

// get the StrongName from the assembly's collection of evidence
StrongName apiStrongName = assemblyWithApi.Evidence.GetHostEvidence&amp;lt;StrongName&amp;gt;();

// create the sandbox
AppDomain sandbox = AppDomain.CreateDomain(
    "Sandbox", null, appDomainSetup, restrictedPerms, apiStrongName);&lt;/pre&gt;
    
&lt;p&gt;Any assembly that is loaded into the sandbox with a strong name the same as one in the list of full-trust strong names is unconditionally given full-trust permissions within the sandbox, irregardless of permissions and sandbox setup. This is very powerful! You should only use this for assemblies that you trust as much as the code creating the sandbox.&lt;/p&gt;

&lt;p&gt;So now you have a class that you want the sandboxed code to call:&lt;/p&gt;

&lt;pre&gt;// within assemblyWithApi
public class MyApi
{
    public static void MethodToDoThings() { ... }
}

// within the sandboxed dll
public class UntrustedSandboxedClass
{
    public void DodgyMethod()
    {        
        ...
        MyApi.MethodToDoThings();
        ...
    }
}&lt;/pre&gt;

&lt;p&gt;However, if you try to do this, you get quite an ugly exception:
&lt;/p&gt;&lt;blockquote&gt;MethodAccessException: Attempt by security transparent method 'UntrustedSandboxedClass.DodgyMethod()' to access security critical method 'MyApi.MethodToDoThings()' failed.&lt;/blockquote&gt;
Security transparency, which I covered in my first post in the series, has entered the picture. Partially-trusted code runs at the Transparent security level, fully-trusted code runs at the Critical security level, and Transparent code cannot under any circumstances call Critical code.

&lt;h4&gt;Security transparency and AllowPartiallyTrustedCallersAttribute&lt;/h4&gt;

&lt;p&gt;So the solution is easy, right? Make &lt;code&gt;MethodToDoThings&lt;/code&gt; SafeCritical, then the transparent code running in the sandbox can call the api:&lt;/p&gt;
&lt;pre&gt;[SecuritySafeCritical]
public static void MethodToDoThings() { ... }&lt;/pre&gt;
&lt;p&gt;However, this doesn't solve the problem. When you try again, exactly the same exception is thrown; MethodToDoThings is still running as Critical code. What's going on?&lt;/p&gt;

&lt;p&gt;By default, a fully-trusted assembly always runs Critical code, irregardless of any security attributes on its types and methods. This is because it may not have been designed in a secure way when called from transparent code - as we'll see in the next post, it is easy to open a security hole despite all the security protections .NET 4 offers. When exposing an assembly to be called from partially-trusted code, the entire assembly needs a security audit to decide what should be transparent, safe critical, or critical, and close any potential security holes.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrustedCallersAttribute&lt;/a&gt; (APTCA) comes in. Without this attribute, fully-trusted assemblies run Critical code, and partially-trusted assemblies run Transparent code. When this attribute is applied to an assembly, it confirms that the assembly has had a full security audit, and it is safe to be called from untrusted code. All code in that assembly runs as Transparent, but &lt;code&gt;SecurityCriticalAttribute&lt;/code&gt; and &lt;code&gt;SecuritySafeCriticalAttribute&lt;/code&gt; can be applied to individual types and methods to make those run at the Critical or SafeCritical levels, with all the restrictions that entails.&lt;/p&gt;

&lt;p&gt;So, to allow the sandboxed assembly to call the full-trust API assembly, simply add APCTA to the API assembly:&lt;/p&gt;
&lt;pre&gt;[assembly: AllowPartiallyTrustedCallers]&lt;/pre&gt;
&lt;p&gt;and everything works as you expect. The sandboxed dll can call your API dll, and from there communicate with the rest of the application.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;That's the basics of running a full-trust assembly in a sandboxed appdomain, and allowing a sandboxed assembly to access it. The key is AllowPartiallyTrustedCallersAttribute, which is what lets partially-trusted code call a fully-trusted assembly. However, an assembly with APTCA applied to it means that you have run a full security audit of every type and member in the assembly. If you don't, then you could inadvertently open a security hole. I'll be looking at ways this can happen in my next post.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/simonc/aggbug/152935.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/yfpgTTe06nw" height="1" width="1"/&gt;</description><dc:creator>simonc</dc:creator><feedburner:origLink>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</feedburner:origLink></item><item><title>.NET Security Part 3</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/yfpgTTe06nw/.net-security-part-3.aspx</link><pubDate>Thu, 16 May 2013 10:52:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</guid><wfw:comment>http://geekswithblogs.net/simonc/comments/152935.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/simonc/comments/commentRss/152935.aspx</wfw:commentRss><comments>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://geekswithblogs.net/simonc/services/trackbacks/152935.aspx</trackback:ping><source url="http://geekswithblogs.net/simonc/rss.aspx">Simon Cooper</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx'&gt;http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You write a security-related application that allows addins to be used. These addins (as dlls) can be downloaded from anywhere, and, if allowed to run full-trust, could open a security hole in your application. So you want to restrict what the addin dlls can do, using a sandboxed appdomain, as explained in my previous posts.&lt;/p&gt;

&lt;p&gt;But there needs to be an interaction between the code running in the sandbox and the code that created the sandbox, so the sandboxed code can control or react to things that happen in the controlling application. Sandboxed code needs to be able to call code outside the sandbox.&lt;/p&gt;

&lt;p&gt;Now, there are various methods of allowing cross-appdomain calls, the two main ones being &lt;a href="http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx"&gt;.NET Remoting&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx"&gt;MarshalByRefObject&lt;/a&gt;, and WCF named pipes. I'm not going to cover the details of setting up such mechanisms here, or which you should choose for your specific situation; there are plenty of blogs and tutorials covering such issues elsewhere. What I'm going to concentrate on here is the more general problem of running fully-trusted code within a sandbox, which is required in most methods of app-domain communication and control.&lt;/p&gt;

&lt;h4&gt;Defining assemblies as fully-trusted&lt;/h4&gt;

&lt;p&gt;In my last post, I mentioned that when you create a sandboxed appdomain, you can pass in a list of assembly strongnames that run as full-trust within the appdomain:&lt;/p&gt;

&lt;pre&gt;// get the Assembly object for the assembly
Assembly assemblyWithApi = ...    

// get the StrongName from the assembly's collection of evidence
StrongName apiStrongName = assemblyWithApi.Evidence.GetHostEvidence&amp;lt;StrongName&amp;gt;();

// create the sandbox
AppDomain sandbox = AppDomain.CreateDomain(
    "Sandbox", null, appDomainSetup, restrictedPerms, apiStrongName);&lt;/pre&gt;
    
&lt;p&gt;Any assembly that is loaded into the sandbox with a strong name the same as one in the list of full-trust strong names is unconditionally given full-trust permissions within the sandbox, irregardless of permissions and sandbox setup. This is very powerful! You should only use this for assemblies that you trust as much as the code creating the sandbox.&lt;/p&gt;

&lt;p&gt;So now you have a class that you want the sandboxed code to call:&lt;/p&gt;

&lt;pre&gt;// within assemblyWithApi
public class MyApi
{
    public static void MethodToDoThings() { ... }
}

// within the sandboxed dll
public class UntrustedSandboxedClass
{
    public void DodgyMethod()
    {        
        ...
        MyApi.MethodToDoThings();
        ...
    }
}&lt;/pre&gt;

&lt;p&gt;However, if you try to do this, you get quite an ugly exception:
&lt;/p&gt;&lt;blockquote&gt;MethodAccessException: Attempt by security transparent method 'UntrustedSandboxedClass.DodgyMethod()' to access security critical method 'MyApi.MethodToDoThings()' failed.&lt;/blockquote&gt;
Security transparency, which I covered in my first post in the series, has entered the picture. Partially-trusted code runs at the Transparent security level, fully-trusted code runs at the Critical security level, and Transparent code cannot under any circumstances call Critical code.

&lt;h4&gt;Security transparency and AllowPartiallyTrustedCallersAttribute&lt;/h4&gt;

&lt;p&gt;So the solution is easy, right? Make &lt;code&gt;MethodToDoThings&lt;/code&gt; SafeCritical, then the transparent code running in the sandbox can call the api:&lt;/p&gt;
&lt;pre&gt;[SecuritySafeCritical]
public static void MethodToDoThings() { ... }&lt;/pre&gt;
&lt;p&gt;However, this doesn't solve the problem. When you try again, exactly the same exception is thrown; MethodToDoThings is still running as Critical code. What's going on?&lt;/p&gt;

&lt;p&gt;By default, a fully-trusted assembly always runs Critical code, irregardless of any security attributes on its types and methods. This is because it may not have been designed in a secure way when called from transparent code - as we'll see in the next post, it is easy to open a security hole despite all the security protections .NET 4 offers. When exposing an assembly to be called from partially-trusted code, the entire assembly needs a security audit to decide what should be transparent, safe critical, or critical, and close any potential security holes.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrustedCallersAttribute&lt;/a&gt; (APTCA) comes in. Without this attribute, fully-trusted assemblies run Critical code, and partially-trusted assemblies run Transparent code. When this attribute is applied to an assembly, it confirms that the assembly has had a full security audit, and it is safe to be called from untrusted code. All code in that assembly runs as Transparent, but &lt;code&gt;SecurityCriticalAttribute&lt;/code&gt; and &lt;code&gt;SecuritySafeCriticalAttribute&lt;/code&gt; can be applied to individual types and methods to make those run at the Critical or SafeCritical levels, with all the restrictions that entails.&lt;/p&gt;

&lt;p&gt;So, to allow the sandboxed assembly to call the full-trust API assembly, simply add APCTA to the API assembly:&lt;/p&gt;
&lt;pre&gt;[assembly: AllowPartiallyTrustedCallers]&lt;/pre&gt;
&lt;p&gt;and everything works as you expect. The sandboxed dll can call your API dll, and from there communicate with the rest of the application.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;That's the basics of running a full-trust assembly in a sandboxed appdomain, and allowing a sandboxed assembly to access it. The key is AllowPartiallyTrustedCallersAttribute, which is what lets partially-trusted code call a fully-trusted assembly. However, an assembly with APTCA applied to it means that you have run a full security audit of every type and member in the assembly. If you don't, then you could inadvertently open a security hole. I'll be looking at ways this can happen in my next post.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/simonc/aggbug/152935.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/yfpgTTe06nw" height="1" width="1"/&gt;</description><dc:creator>simonc</dc:creator><feedburner:origLink>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</feedburner:origLink></item><item><title>.NET Security Part 3</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/yfpgTTe06nw/.net-security-part-3.aspx</link><pubDate>Thu, 16 May 2013 10:52:00 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</guid><wfw:comment>http://geekswithblogs.net/simonc/comments/152935.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/simonc/comments/commentRss/152935.aspx</wfw:commentRss><comments>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx#comment</comments><slash:comments>4</slash:comments><trackback:ping>http://geekswithblogs.net/simonc/services/trackbacks/152935.aspx</trackback:ping><source url="http://geekswithblogs.net/simonc/rss.aspx">Simon Cooper</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx'&gt;http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You write a security-related application that allows addins to be used. These addins (as dlls) can be downloaded from anywhere, and, if allowed to run full-trust, could open a security hole in your application. So you want to restrict what the addin dlls can do, using a sandboxed appdomain, as explained in my previous posts.&lt;/p&gt;

&lt;p&gt;But there needs to be an interaction between the code running in the sandbox and the code that created the sandbox, so the sandboxed code can control or react to things that happen in the controlling application. Sandboxed code needs to be able to call code outside the sandbox.&lt;/p&gt;

&lt;p&gt;Now, there are various methods of allowing cross-appdomain calls, the two main ones being &lt;a href="http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx"&gt;.NET Remoting&lt;/a&gt; with &lt;a href="http://msdn.microsoft.com/en-us/library/system.marshalbyrefobject.aspx"&gt;MarshalByRefObject&lt;/a&gt;, and WCF named pipes. I'm not going to cover the details of setting up such mechanisms here, or which you should choose for your specific situation; there are plenty of blogs and tutorials covering such issues elsewhere. What I'm going to concentrate on here is the more general problem of running fully-trusted code within a sandbox, which is required in most methods of app-domain communication and control.&lt;/p&gt;

&lt;h4&gt;Defining assemblies as fully-trusted&lt;/h4&gt;

&lt;p&gt;In my last post, I mentioned that when you create a sandboxed appdomain, you can pass in a list of assembly strongnames that run as full-trust within the appdomain:&lt;/p&gt;

&lt;pre&gt;// get the Assembly object for the assembly
Assembly assemblyWithApi = ...    

// get the StrongName from the assembly's collection of evidence
StrongName apiStrongName = assemblyWithApi.Evidence.GetHostEvidence&amp;lt;StrongName&amp;gt;();

// create the sandbox
AppDomain sandbox = AppDomain.CreateDomain(
    "Sandbox", null, appDomainSetup, restrictedPerms, apiStrongName);&lt;/pre&gt;
    
&lt;p&gt;Any assembly that is loaded into the sandbox with a strong name the same as one in the list of full-trust strong names is unconditionally given full-trust permissions within the sandbox, irregardless of permissions and sandbox setup. This is very powerful! You should only use this for assemblies that you trust as much as the code creating the sandbox.&lt;/p&gt;

&lt;p&gt;So now you have a class that you want the sandboxed code to call:&lt;/p&gt;

&lt;pre&gt;// within assemblyWithApi
public class MyApi
{
    public static void MethodToDoThings() { ... }
}

// within the sandboxed dll
public class UntrustedSandboxedClass
{
    public void DodgyMethod()
    {        
        ...
        MyApi.MethodToDoThings();
        ...
    }
}&lt;/pre&gt;

&lt;p&gt;However, if you try to do this, you get quite an ugly exception:
&lt;/p&gt;&lt;blockquote&gt;MethodAccessException: Attempt by security transparent method 'UntrustedSandboxedClass.DodgyMethod()' to access security critical method 'MyApi.MethodToDoThings()' failed.&lt;/blockquote&gt;
Security transparency, which I covered in my first post in the series, has entered the picture. Partially-trusted code runs at the Transparent security level, fully-trusted code runs at the Critical security level, and Transparent code cannot under any circumstances call Critical code.

&lt;h4&gt;Security transparency and AllowPartiallyTrustedCallersAttribute&lt;/h4&gt;

&lt;p&gt;So the solution is easy, right? Make &lt;code&gt;MethodToDoThings&lt;/code&gt; SafeCritical, then the transparent code running in the sandbox can call the api:&lt;/p&gt;
&lt;pre&gt;[SecuritySafeCritical]
public static void MethodToDoThings() { ... }&lt;/pre&gt;
&lt;p&gt;However, this doesn't solve the problem. When you try again, exactly the same exception is thrown; MethodToDoThings is still running as Critical code. What's going on?&lt;/p&gt;

&lt;p&gt;By default, a fully-trusted assembly always runs Critical code, irregardless of any security attributes on its types and methods. This is because it may not have been designed in a secure way when called from transparent code - as we'll see in the next post, it is easy to open a security hole despite all the security protections .NET 4 offers. When exposing an assembly to be called from partially-trusted code, the entire assembly needs a security audit to decide what should be transparent, safe critical, or critical, and close any potential security holes.&lt;/p&gt;

&lt;p&gt;This is where &lt;a href="http://msdn.microsoft.com/en-us/library/system.security.allowpartiallytrustedcallersattribute.aspx"&gt;AllowPartiallyTrustedCallersAttribute&lt;/a&gt; (APTCA) comes in. Without this attribute, fully-trusted assemblies run Critical code, and partially-trusted assemblies run Transparent code. When this attribute is applied to an assembly, it confirms that the assembly has had a full security audit, and it is safe to be called from untrusted code. All code in that assembly runs as Transparent, but &lt;code&gt;SecurityCriticalAttribute&lt;/code&gt; and &lt;code&gt;SecuritySafeCriticalAttribute&lt;/code&gt; can be applied to individual types and methods to make those run at the Critical or SafeCritical levels, with all the restrictions that entails.&lt;/p&gt;

&lt;p&gt;So, to allow the sandboxed assembly to call the full-trust API assembly, simply add APCTA to the API assembly:&lt;/p&gt;
&lt;pre&gt;[assembly: AllowPartiallyTrustedCallers]&lt;/pre&gt;
&lt;p&gt;and everything works as you expect. The sandboxed dll can call your API dll, and from there communicate with the rest of the application.&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;That's the basics of running a full-trust assembly in a sandboxed appdomain, and allowing a sandboxed assembly to access it. The key is AllowPartiallyTrustedCallersAttribute, which is what lets partially-trusted code call a fully-trusted assembly. However, an assembly with APTCA applied to it means that you have run a full security audit of every type and member in the assembly. If you don't, then you could inadvertently open a security hole. I'll be looking at ways this can happen in my next post.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/simonc/aggbug/152935.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/yfpgTTe06nw" height="1" width="1"/&gt;</description><dc:creator>simonc</dc:creator><feedburner:origLink>http://geekswithblogs.net/simonc/archive/2013/05/16/.net-security-part-3.aspx</feedburner:origLink></item><item><title>Nokia: Your vision is clouded</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/-C6Moglu-Po/nokia-your-vision-is-clouded.aspx</link><pubDate>Tue, 14 May 2013 22:26:24 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</guid><wfw:comment>http://geekswithblogs.net/rodelljr/comments/152928.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/rodelljr/comments/commentRss/152928.aspx</wfw:commentRss><comments>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://geekswithblogs.net/rodelljr/services/trackbacks/152928.aspx</trackback:ping><source url="http://geekswithblogs.net/rodelljr/rss.aspx">Roger O'Dell</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx'&gt;http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the last week or so we have seen two new phones announced by Nokia: the Lumia 928 and 925. The 925 version looks to be the next evolution in Nokia’s lineup of Lumia devices while the 928 at a glance looks like a variation of the original 920, with maybe some parts of the 925 mixed in. You of course get a great camera experience with the low light PurView system.&lt;/p&gt;  &lt;p&gt;While you can view the 925 specs &lt;a href="http://www.nokia.com/global/products/phone/lumia925/specifications/" target="_blank"&gt;here&lt;/a&gt;, I will note that unlike previous Lumia’s (including the 928), the 925 only has 16 GB of storage instead of 32 GB. This wouldn’t be a problem if it had expandable memory, but it doesn’t. That’s right, if you play games that take a lot of storage, or like to save music playlists on your device, this could be an issue. Most likely it won’t for the average user. That is really the only flaw I can see in the hardware itself. It looks stunning and if by some miracle I can get a unit to review, I will defiantly enjoy playing with it. I haven’t really done any phone reviews, but would love the opportunity to begin doing just that. As a developer, its nice to have that ability to play with new hardware and try testing your apps on it.&lt;/p&gt;  &lt;p&gt;Now I mentioned flaw in hardware, but this article is more about Nokia itself. While I love their products; (I own a Lumia 800), I completely disagree with their distribution model. While they seem to be trying to be like Samsung and flood the market with handsets, they are doing it as if they are Apple. Please stop. If you really want to compete with Samsung, follow their model that they had done with their Galaxy S3 and S4 and build it for all the carriers. Stop doing this limited distribution. Releasing the 925 to only T-Mobile in the US is a mistake. Its bad enough that the 920 was restricted to AT&amp;amp;T, but to follow that same model again a year later is wasteful. Now before I get any comments, this also applies to Canada and other countries who are only getting partial carrier coverage&lt;/p&gt;  &lt;p&gt;That whole exclusive type distribution model has only really worked once, and that was by Apple. Even HTC has learned their lesson somewhat with the HTC One, but that is a whole other argument. The Lumia line is basically THE best that Windows Phone has to offer, and as long as your vision is clouded, it may prove to be the end of Windows Phone. We can’t expect Windows Phone to get any market share increases with this limited distribution model.&lt;/p&gt;  &lt;p&gt;This also doesn’t just apply to the 925, but should apply for a few of their other models. The midrange phones like the 820 would defiantly benefit from being on multiple carriers in the US and abroad. You could probably include the lower end tier and include the 620 or 521 in that list. Basically think of it as a small, medium and large model where you have three phones for all carriers. I also wouldn’t stop their. I would include the smaller market carriers like Cricket. Taking this approach will go along way.&lt;/p&gt;  &lt;p&gt;With all this said and done, will I buy a 925 or 928? Unfortunately no. I carry a Galaxy S3 as my carrier doesn’t carry Windows Phone yet. And before any one asks, I can’t switch carriers for another year, and few months. I switched from AT&amp;amp;T for reasons I won’t explain here. Other than my minor rants, I really love the Nokia handsets and can’t wait to either review or use their developer borrow program to test my Windows Phone apps.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rodelljr/aggbug/152928.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/-C6Moglu-Po" height="1" width="1"/&gt;</description><dc:creator>rodelljr</dc:creator><feedburner:origLink>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</feedburner:origLink></item><item><title>Nokia: Your vision is clouded</title><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/-C6Moglu-Po/nokia-your-vision-is-clouded.aspx</link><pubDate>Tue, 14 May 2013 22:26:24 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</guid><wfw:comment>http://geekswithblogs.net/rodelljr/comments/152928.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/rodelljr/comments/commentRss/152928.aspx</wfw:commentRss><comments>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx#comment</comments><slash:comments>3</slash:comments><trackback:ping>http://geekswithblogs.net/rodelljr/services/trackbacks/152928.aspx</trackback:ping><source url="http://geekswithblogs.net/rodelljr/rss.aspx">Roger O'Dell</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx'&gt;http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In the last week or so we have seen two new phones announced by Nokia: the Lumia 928 and 925. The 925 version looks to be the next evolution in Nokia’s lineup of Lumia devices while the 928 at a glance looks like a variation of the original 920, with maybe some parts of the 925 mixed in. You of course get a great camera experience with the low light PurView system.&lt;/p&gt;  &lt;p&gt;While you can view the 925 specs &lt;a href="http://www.nokia.com/global/products/phone/lumia925/specifications/" target="_blank"&gt;here&lt;/a&gt;, I will note that unlike previous Lumia’s (including the 928), the 925 only has 16 GB of storage instead of 32 GB. This wouldn’t be a problem if it had expandable memory, but it doesn’t. That’s right, if you play games that take a lot of storage, or like to save music playlists on your device, this could be an issue. Most likely it won’t for the average user. That is really the only flaw I can see in the hardware itself. It looks stunning and if by some miracle I can get a unit to review, I will defiantly enjoy playing with it. I haven’t really done any phone reviews, but would love the opportunity to begin doing just that. As a developer, its nice to have that ability to play with new hardware and try testing your apps on it.&lt;/p&gt;  &lt;p&gt;Now I mentioned flaw in hardware, but this article is more about Nokia itself. While I love their products; (I own a Lumia 800), I completely disagree with their distribution model. While they seem to be trying to be like Samsung and flood the market with handsets, they are doing it as if they are Apple. Please stop. If you really want to compete with Samsung, follow their model that they had done with their Galaxy S3 and S4 and build it for all the carriers. Stop doing this limited distribution. Releasing the 925 to only T-Mobile in the US is a mistake. Its bad enough that the 920 was restricted to AT&amp;amp;T, but to follow that same model again a year later is wasteful. Now before I get any comments, this also applies to Canada and other countries who are only getting partial carrier coverage&lt;/p&gt;  &lt;p&gt;That whole exclusive type distribution model has only really worked once, and that was by Apple. Even HTC has learned their lesson somewhat with the HTC One, but that is a whole other argument. The Lumia line is basically THE best that Windows Phone has to offer, and as long as your vision is clouded, it may prove to be the end of Windows Phone. We can’t expect Windows Phone to get any market share increases with this limited distribution model.&lt;/p&gt;  &lt;p&gt;This also doesn’t just apply to the 925, but should apply for a few of their other models. The midrange phones like the 820 would defiantly benefit from being on multiple carriers in the US and abroad. You could probably include the lower end tier and include the 620 or 521 in that list. Basically think of it as a small, medium and large model where you have three phones for all carriers. I also wouldn’t stop their. I would include the smaller market carriers like Cricket. Taking this approach will go along way.&lt;/p&gt;  &lt;p&gt;With all this said and done, will I buy a 925 or 928? Unfortunately no. I carry a Galaxy S3 as my carrier doesn’t carry Windows Phone yet. And before any one asks, I can’t switch carriers for another year, and few months. I switched from AT&amp;amp;T for reasons I won’t explain here. Other than my minor rants, I really love the Nokia handsets and can’t wait to either review or use their developer borrow program to test my Windows Phone apps.&lt;/p&gt; &lt;img src="http://geekswithblogs.net/rodelljr/aggbug/152928.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/-C6Moglu-Po" height="1" width="1"/&gt;</description><dc:creator>rodelljr</dc:creator><feedburner:origLink>http://geekswithblogs.net/rodelljr/archive/2013/05/15/nokia-your-vision-is-clouded.aspx</feedburner:origLink></item><item><title>Extending Team Explorer 2012 &amp;ndash; Associating Recent Work Items</title><category>Visual Studio 2012</category><category>TFS</category><link>http://feedproxy.google.com/~r/geekswithblogs/popular/~3/SXlR60jLyCI/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</link><pubDate>Thu, 16 May 2013 11:29:44 GMT</pubDate><guid isPermaLink="false">http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</guid><wfw:comment>http://geekswithblogs.net/jakob/comments/152934.aspx</wfw:comment><wfw:commentRss>http://geekswithblogs.net/jakob/comments/commentRss/152934.aspx</wfw:commentRss><comments>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://geekswithblogs.net/jakob/services/trackbacks/152934.aspx</trackback:ping><source url="http://geekswithblogs.net/jakob/rss.aspx">Jakob Ehn</source><description>&lt;p&gt;Originally posted on: &lt;a href='http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx'&gt;http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Extension available at:&lt;/strong&gt; &lt;a title="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c" href="http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c"&gt;http://visualstudiogallery.msdn.microsoft.com/9ed2d30c-a692-42b0-a21d-cdc8d2bf322c&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I have been playing around a bit lately with extending Team Explorer 2012, mostly because it is fun but also to fix a little nagging feature that should have been there from the beginning. Often I (and a lot of other people) find myself wanting to associate several consecutive changesets to the same work item. The problem is that Team Explorer does not remember this, instead I have to either remember the ID or use a query that hopefully will match the work item.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_2.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb.png" width="327" height="126" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;strong&gt;Where is the work item that I just associated with?&lt;/strong&gt;     &lt;br /&gt;  &lt;br /&gt;True, when using the My Work page and the teams and sprint backlogs are correctly setup, you can find “your” work items there, but every so often this is not the case, and off I go to locate that work item again.&lt;/p&gt;  &lt;p&gt;So this seemed to be a good feature to implement and at the same time learn a little about how to extend Team Explorer in Visual Studio 2012.&lt;/p&gt;  &lt;p&gt;There is a great sample posted by Microsoft over at MSDN, it also talks about the main extension points and classes/interfaces that you need to know about. You can find it here: &lt;a title="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594" href="http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594"&gt;http://code.msdn.microsoft.com/windowsdesktop/Extending-Explorer-in-9dccd594&lt;/a&gt;. If you have developed extensions to Visual Studio before, you will be relieved to know that this new extension model for Team Explorer is purely based on standard .NET/WPF and MEF, no weird COM interfaces. &lt;/p&gt;  &lt;p&gt;You can add new pages to Team Explorer, you can add new sections to existing pages and you can add navigation links to the Home screen. All these extensions are discovered by Team Explorer using the Managed Extensibility Framework (MEF). You just need to attribute your classes with the correct attribute and it will be found by Team Explorer. The attributes also control where your extension will appear. This extension is a Section that should appear inside the Pending Changes page:    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_10.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_4.png" width="564" height="115" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;Example of attributing a Team Explorer extension&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The last property (35) is a priority number that controls when the extension is created and also where it will placed relative to the other sections. The existing Related Work Items section has priority 30, so 35 will place our extension right below it.&lt;/p&gt;  &lt;p&gt;We also need to implement the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.controls.iteamexplorersection.aspx"&gt;ITeamExplorerSection&lt;/a&gt; interface, that contains properties and methods that needs to be implemented for anything to show up.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_8.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_3.png" width="262" height="344" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;strong&gt;ITeamExplorerSection interface&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;The most interesting property here  is the &lt;strong&gt;SectionContent &lt;/strong&gt;property which is where you return the content of your extensions. This is typically a WPF user control in which you can add any controls you like.  &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;This is how the extension appear inside the Pending Changes page. It will analyze your recent changesets in the current team project and extract the last 5 associated work items and show them in a list.     &lt;br /&gt;From the list you can then easily add a work item to the current pending changes by right-clicking on it and select Add. You’ll note that the work item will then disappear from the list, since you are not likely interested in adding it again.     &lt;br /&gt;&lt;/p&gt; &lt;a href="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_4.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="image" src="https://gwb.blob.core.windows.net/jakob/WindowsLiveWriter/ExtendingTeamExplorer2012AssociatingRece_1040F/image_thumb_1.png" width="539" height="266" /&gt;&lt;/a&gt;   &lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Recently Associated Work Item section&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I encourage you to read the MSDN article for more information about the possibilities to extend Team Explorer 2012. Also, try out the extension and let me know it you find it useful!&lt;/p&gt; &lt;img src="http://geekswithblogs.net/jakob/aggbug/152934.aspx" width="1" height="1" /&gt;&lt;img src="http://feeds.feedburner.com/~r/geekswithblogs/popular/~4/SXlR60jLyCI" height="1" width="1"/&gt;</description><dc:creator>Jakob Ehn</dc:creator><feedburner:origLink>http://geekswithblogs.net/jakob/archive/2013/05/16/extending-team-explorer-2012-ndash-associating-recent-work-items.aspx</feedburner:origLink></item></channel></rss>
