<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Joel&#039;s SharePoint Architect Blog &#187; Development</title> <atom:link href="http://joelblogs.co.uk/category/development/feed/" rel="self" type="application/rss+xml" /><link>http://joelblogs.co.uk</link> <description>SharePoint 2010, MOSS &#38; WSS Tips and Consultancy Tales</description> <lastBuildDate>Fri, 03 Feb 2012 15:39:19 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=495</generator> <item><title>Restoring Group By Content Type to SharePoint 2010 List Views</title><link>http://joelblogs.co.uk/2011/10/29/restoring-group-by-content-type-to-sharepoint-2010-list-views/</link> <comments>http://joelblogs.co.uk/2011/10/29/restoring-group-by-content-type-to-sharepoint-2010-list-views/#comments</comments> <pubDate>Sat, 29 Oct 2011 16:42:23 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[Content Types]]></category> <category><![CDATA[SharePoint]]></category> <category><![CDATA[SharePoint Development]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/10/29/restoring-group-by-content-type-to-sharepoint-2010-list-views/</guid> <description><![CDATA[<p>SharePoint 2007 had a commonly used feature that enabled users to create views on lists that grouped by Content Type.</p><p>For some reason, this feature was removed from the user interface in SharePoint 2010.</p><h2>Solution 1: The Easy Method</h2><p>If you wish to do this today, you can do this using SharePoint Designer to create a view and then change the Xsl to specify a different field name to group by (e.g. “ContentType”).</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8xMC9pbWFnZTMucG5n"><img
style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Overriding the Field Used for Grouping" border="0" alt="Overriding the Field Used for Grouping" src="http://joelblogs.co.uk/wp-content/uploads/2011/10/image_thumb3.png" width="404" height="291" /></a></p><h2>Solution 2: The Better Method</h2><p>Alternative, we could try and get our options added to the ViewEdit.aspx page. Options aren’t great for this as it’s a _layouts (application) page, and therefore we can’t just edit it in the browser or SharePoint Designer.</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzEwLzI5L3Jlc3RvcmluZy1ncm91cC1ieS1jb250ZW50LXR5cGUtdG8tc2hhcmVwb2ludC0yMDEwLWxpc3Qtdmlld3Mv" class=\"more-link\">Read more on Restoring Group By Content Type to SharePoint 2010 List Views&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10906" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Content+Types' rel='tag,nofollow' target='_blank'>Content Types</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a></p>]]></description> <content:encoded><![CDATA[<p>SharePoint 2007 had a commonly used feature that enabled users to create views on lists that grouped by Content Type.</p><p>For some reason, this feature was removed from the user interface in SharePoint 2010.</p><h2>Solution 1: The Easy Method</h2><p>If you wish to do this today, you can do this using SharePoint Designer to create a view and then change the Xsl to specify a different field name to group by (e.g. “ContentType”).</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8xMC9pbWFnZTMucG5n"><img
style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Overriding the Field Used for Grouping" border="0" alt="Overriding the Field Used for Grouping" src="http://joelblogs.co.uk/wp-content/uploads/2011/10/image_thumb3.png" width="404" height="291" /></a></p><h2>Solution 2: The Better Method</h2><p>Alternative, we could try and get our options added to the ViewEdit.aspx page. Options aren’t great for this as it’s a _layouts (application) page, and therefore we can’t just edit it in the browser or SharePoint Designer.</p><p>You could add a piece of JavaScript to do this though. Plan a) would be to add this to the bottom of you v4.master, and customise this for the whole site/site collection.</p><p>Plan b) would be to create something like a sandbox solution that deploys a “scriptlink” element, placing the script on every page that gets rendered.</p><p>I’ve create a CodePlex project for plan b). Here’s some of the code. Firstly, here’s the JavaScript I’d like to run on every page. It simply creates a new &lt;option&gt; tag in HTML and adds it to the drop down list if it exists on the page. Let’s call it “ListViewEdit.js”.</p><pre class="csharpcode">_spBodyOnLoadFunctionNames.push(<span class="str">&quot;jbCTFix&quot;</span>);

<span class="kwrd">function</span> jbCTFix() {
    jbCTKludge(<span class="str">'idGroupField1'</span>);
    jbCTKludge(<span class="str">'idGroupField2'</span>);
}
<span class="kwrd">function</span> jbCTKludge(selName) {
    <span class="kwrd">var</span> sel = document.getElementById(selName);
    <span class="kwrd">if</span> (sel) {
        <span class="kwrd">if</span> (sel.selectedIndex &gt;= 0) {

            <span class="kwrd">var</span> o = document.createElement(<span class="str">'option'</span>);
            o.text = <span class="str">'Content Type'</span>;
            o.value = <span class="str">'tp_ContentType'</span>;

            <span class="kwrd">var</span> prev = sel.options[sel.selectedIndex];
            <span class="kwrd">try</span> {
                sel.add(o, prev);
            }
            <span class="kwrd">catch</span> (ex) {
                sel.add(o, sel.selectedIndex);
            }
        }
    }
}</pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>Next, here’s the element manifest to apply this on each page in the site collection.</p><pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">=&quot;1.0&quot;</span> <span class="attr">encoding</span><span class="kwrd">=&quot;utf-8&quot;</span>?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">Elements</span> <span class="attr">xmlns</span><span class="kwrd">=&quot;http://schemas.microsoft.com/sharepoint/&quot;</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">CustomAction</span> <span class="attr">Id</span><span class="kwrd">=&quot;Ribbon.Library.Actions.Scripts&quot;</span>
              <span class="attr">Location</span> <span class="kwrd">=&quot;ScriptLink&quot;</span>
              <span class="attr">ScriptSrc</span><span class="kwrd">=&quot;~site/ListViewEdit/ListViewEdit.js&quot;</span> <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">Module</span> <span class="attr">Name</span><span class="kwrd">=&quot;ListViewEdit&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">File</span> <span class="attr">Path</span><span class="kwrd">=&quot;ListViewEdit\ListViewEdit.js&quot;</span> <span class="attr">Url</span><span class="kwrd">=&quot;ListViewEdit/ListViewEdit.js&quot;</span> <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">Module</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">Elements</span><span class="kwrd">&gt;</span></pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>You can download the full project and source code for the <a
rel=\"nofollow\" title=\"SharePoint 2010 ViewEdit Group by Content Type\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwMTBjdGdyb3VwaW5nLmNvZGVwbGV4LmNvbQ==" rel=\"nofollow\" target=\"_blank\">SharePoint 2010 ViewEdit Group by Content Type</a> project from the CodePlex project here: <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwMTBjdGdyb3VwaW5nLmNvZGVwbGV4LmNvbS8=">sp10ctgrouping.codeplex.com</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10906" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Content+Types' rel='tag,nofollow' target='_blank'>Content Types</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/10/29/restoring-group-by-content-type-to-sharepoint-2010-list-views/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>SharePoint 2010 Audience Membership Workflow Activity Condition for Designer Workflows</title><link>http://joelblogs.co.uk/2011/10/29/sharepoint-2010-audience-membership-workflow-activity-condition-for-designer-workflows/</link> <comments>http://joelblogs.co.uk/2011/10/29/sharepoint-2010-audience-membership-workflow-activity-condition-for-designer-workflows/#comments</comments> <pubDate>Sat, 29 Oct 2011 00:45:13 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[SharePoint]]></category> <category><![CDATA[SharePoint Designer 2010]]></category> <category><![CDATA[SharePoint Development]]></category> <category><![CDATA[Workflow]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/10/29/sharepoint-2010-audience-membership-workflow-activity-condition-for-designer-workflows/</guid> <description><![CDATA[<p>One of my students tonight asked if it was possible to add a condition to a SharePoint Designer 2010 declarative workflow to detect if the initiating user is a member of a particular audience.</p><p>There’s nothing built-in to deliver this in SharePoint 2010.</p><p>So I knocked-up the following solution based upon the excellent reference implementations of workflows from the SharePoint Prescriptive Guidance Pack at <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwZy5jb2RlcGxleC5jb20=">spg.codeplex.com</a>.</p><p>I’ve put the <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwYW13YWZ0LmNvZGVwbGV4LmNvbS8=" target=\"_blank\">full version of my source code and a completed release</a> up on CodePlex.</p><p>Firstly, the .Actions file, which must be deployed to 14\\Template\\Xml\\1033\\Workflow:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzEwLzI5L3NoYXJlcG9pbnQtMjAxMC1hdWRpZW5jZS1tZW1iZXJzaGlwLXdvcmtmbG93LWFjdGl2aXR5LWNvbmRpdGlvbi1mb3ItZGVzaWduZXItd29ya2Zsb3dzLw==" class=\"more-link\">Read more on SharePoint 2010 Audience Membership Workflow Activity Condition for Designer Workflows&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10900" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Designer+2010' rel='tag,nofollow' target='_blank'>SharePoint Designer 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/Workflow' rel='tag,nofollow' target='_blank'>Workflow</a></p>]]></description> <content:encoded><![CDATA[<p>One of my students tonight asked if it was possible to add a condition to a SharePoint Designer 2010 declarative workflow to detect if the initiating user is a member of a particular audience.</p><p>There’s nothing built-in to deliver this in SharePoint 2010.</p><p>So I knocked-up the following solution based upon the excellent reference implementations of workflows from the SharePoint Prescriptive Guidance Pack at <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwZy5jb2RlcGxleC5jb20=">spg.codeplex.com</a>.</p><p>I’ve put the <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwYW13YWZ0LmNvZGVwbGV4LmNvbS8=" target=\"_blank\">full version of my source code and a completed release</a> up on CodePlex.</p><p>Firstly, the .Actions file, which must be deployed to 14\\Template\\Xml\\1033\\Workflow:</p><pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">xml</span> <span class="attr">version</span><span class="kwrd">=&quot;1.0&quot;</span> <span class="attr">encoding</span><span class="kwrd">=&quot;utf-8&quot;</span> ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">WorkflowInfo</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">Conditions</span> <span class="attr">And</span><span class="kwrd">=&quot;and&quot;</span> <span class="attr">Or</span><span class="kwrd">=&quot;or&quot;</span> <span class="attr">Not</span><span class="kwrd">=&quot;not&quot;</span> <span class="attr">When</span><span class="kwrd">=&quot;If&quot;</span> <span class="attr">Else</span><span class="kwrd">=&quot;Else if&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">Condition</span> <span class="attr">Name</span><span class="kwrd">=&quot;User is member of audience&quot;</span>
        <span class="attr">FunctionName</span><span class="kwrd">=&quot;IsUserMemberOfAudienceCondition&quot;</span>
        <span class="attr">ClassName</span><span class="kwrd">=&quot;joelblogs.co.uk.WorkflowActivities.AudienceActivity.AudienceMemberActivity&quot;</span>
        <span class="attr">Assembly</span><span class="kwrd">=&quot;joelblogs.co.uk.WorkflowActivities.AudienceActivity,
          Version=1.0.0.0, Culture=neutral, PublicKeyToken=d926d259b11539d4&quot;</span>
        <span class="attr">AppliesTo</span><span class="kwrd">=&quot;all&quot;</span>
            <span class="attr">UsesCurrentItem</span><span class="kwrd">=&quot;True&quot;</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">RuleDesigner</span> <span class="attr">Sentence</span><span class="kwrd">=&quot;The user is a member of audience %1&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">FieldBind</span> <span class="attr">Id</span><span class="kwrd">=&quot;1&quot;</span> <span class="attr">Field</span><span class="kwrd">=&quot;_1_&quot;</span> <span class="attr">Text</span><span class="kwrd">=&quot;&quot;</span><span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">RuleDesigner</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">Parameters</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">Parameter</span> <span class="attr">Name</span><span class="kwrd">=&quot;_1_&quot;</span> <span class="attr">Type</span><span class="kwrd">=&quot;System.String, mscorlib&quot;</span> <span class="attr">Direction</span><span class="kwrd">=&quot;In&quot;</span> <span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">Parameters</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">Condition</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">Conditions</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">WorkflowInfo</span><span class="kwrd">&gt;</span></pre><p>Next, the workflow activity class itself:</p><pre class="csharpcode"><span class="kwrd">using</span> System;
<span class="kwrd">using</span> Microsoft.SharePoint;
<span class="kwrd">using</span> Microsoft.SharePoint.WorkflowActions;
<span class="kwrd">using</span> Microsoft.Office.Server.Audience;
<span class="kwrd">using</span> System.Workflow.ComponentModel;
<span class="kwrd">using</span> System.ComponentModel;

<span class="kwrd">namespace</span> joelblogs.co.uk.WorkflowActivities.AudienceActivity
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Windows Workflow Activity for SharePoint 2010. Checks if</span>
    <span class="rem">/// Initiating User is a member of the specified Audience.</span>
    <span class="rem">/// Written by Joel Jeffery, 2011-10-28.</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">class</span> AudienceMemberActivity : Activity
    {
        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Returns whether the user exists in the specified audience or not</span>
        <span class="rem">/// -- signature to match SharePoint Designer Requirement</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name=&quot;workflowContext&quot;&gt;Environment for activity&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name=&quot;listId&quot;&gt;ID of the list the workflow is running on (unused)&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name=&quot;itemId&quot;&gt;Item ID of the item the workflow is running on (unused)&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name=&quot;siteUrl&quot;&gt;The audience name to determine whether the user is in it or not&lt;/param&gt;</span>
        <span class="rem">/// &lt;returns&gt;True if site exists, false if not &lt;/returns&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> IsUserMemberOfAudienceCondition(
            WorkflowContext workflowContext, <span class="kwrd">string</span> listId, <span class="kwrd">int</span> itemId, <span class="kwrd">string</span> audienceName)
        {
            <span class="kwrd">string</span> exception;
            <span class="kwrd">return</span> (IsUserMemberOfAudience(
                workflowContext.InitiatorUser.LoginName, audienceName, <span class="kwrd">out</span> exception));
        }

        <span class="rem">/// &lt;summary&gt;</span>
        <span class="rem">/// Determines whether [is user member of audience] [the specified login name].</span>
        <span class="rem">/// &lt;/summary&gt;</span>
        <span class="rem">/// &lt;param name=&quot;loginName&quot;&gt;Name of the login.&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name=&quot;audienceName&quot;&gt;Name of the audience.&lt;/param&gt;</span>
        <span class="rem">/// &lt;param name=&quot;exception&quot;&gt;The exception.&lt;/param&gt;</span>
        <span class="rem">/// &lt;returns&gt;</span>
        <span class="rem">///   &lt;c&gt;true&lt;/c&gt; if [is user member of audience] [the specified login name]; otherwise, &lt;c&gt;false&lt;/c&gt;.</span>
        <span class="rem">/// &lt;/returns&gt;</span>
        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">bool</span> IsUserMemberOfAudience(<span class="kwrd">string</span> loginName, <span class="kwrd">string</span> audienceName, <span class="kwrd">out</span> <span class="kwrd">string</span> exception)
        {
            <span class="kwrd">try</span>
            {
                exception = <span class="kwrd">null</span>;
                SPServiceContext context = SPServiceContext.Current;
                AudienceManager audManager = <span class="kwrd">new</span> AudienceManager(context);
                <span class="kwrd">return</span> audManager.IsMemberOfAudience(loginName, audienceName);
            }
            <span class="kwrd">catch</span> (Exception e)
            {
                exception = e.ToString();
                <span class="kwrd">return</span> (<span class="kwrd">false</span>);
            }
        }

        <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty AudienceNameProperty =
            DependencyProperty.Register(<span class="str">&quot;AudienceName&quot;</span>, <span class="kwrd">typeof</span>(<span class="kwrd">string</span>), <span class="kwrd">typeof</span>(AudienceMemberActivity));

        [Description(<span class="str">&quot;The absolute URL of the site or site collection to create&quot;</span>)]
        [Browsable(<span class="kwrd">true</span>)]
        [Category(<span class="str">&quot;joelblogs.co.uk Activities&quot;</span>)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        <span class="kwrd">public</span> <span class="kwrd">string</span> SiteUrl
        {
            get { <span class="kwrd">return</span> ((<span class="kwrd">string</span>)<span class="kwrd">base</span>.GetValue(AudienceNameProperty)); }
            set { <span class="kwrd">base</span>.SetValue(AudienceNameProperty, <span class="kwrd">value</span>); }
        }

        <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty ExistsProperty =
            DependencyProperty.Register(<span class="str">&quot;Exists&quot;</span>, <span class="kwrd">typeof</span>(<span class="kwrd">bool</span>), <span class="kwrd">typeof</span>(AudienceMemberActivity));
        [Description(<span class="str">&quot;The result of the operation indicating whether the site exists or not&quot;</span>)]
        [Browsable(<span class="kwrd">true</span>)]
        [Category(<span class="str">&quot;joelblogs.co.uk Activities&quot;</span>)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        <span class="kwrd">public</span> <span class="kwrd">bool</span> Exists
        {
            get { <span class="kwrd">return</span> ((<span class="kwrd">bool</span>)<span class="kwrd">base</span>.GetValue(ExistsProperty)); }
            set { <span class="kwrd">base</span>.SetValue(ExistsProperty, <span class="kwrd">value</span>); }
        }

        <span class="kwrd">public</span> <span class="kwrd">static</span> DependencyProperty ExceptionProperty =
            DependencyProperty.Register(<span class="str">&quot;Exception&quot;</span>, <span class="kwrd">typeof</span>(<span class="kwrd">string</span>), <span class="kwrd">typeof</span>(AudienceMemberActivity));
        [Description(<span class="str">&quot;The exception generated while testing for the existance of the site&quot;</span>)]
        [Browsable(<span class="kwrd">true</span>)]
        [Category(<span class="str">&quot;joelblogs.co.uk Activities&quot;</span>)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
        <span class="kwrd">public</span> <span class="kwrd">string</span> Exception
        {
            get { <span class="kwrd">return</span> ((<span class="kwrd">string</span>)<span class="kwrd">base</span>.GetValue(ExceptionProperty)); }
            set { <span class="kwrd">base</span>.SetValue(ExceptionProperty, <span class="kwrd">value</span>); }
        }
    }
}</pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>&#160;</p><p>You’ll also need a terribly clever feature receiver implementation from the SPG that uses the SPWebConfigModification class to add AuthorizedType blocks to the web.configs throughout our farm, or our class won’t be loaded by WF.</p><pre class="csharpcode"><span class="kwrd">using</span> System;
<span class="kwrd">using</span> System.Diagnostics;
<span class="kwrd">using</span> System.Globalization;
<span class="kwrd">using</span> System.Runtime.InteropServices;
<span class="kwrd">using</span> Microsoft.SharePoint;
<span class="kwrd">using</span> Microsoft.SharePoint.Administration;

<span class="kwrd">namespace</span> joelblogs.co.uk.WorkflowActivities.AudienceActivity.Features.AudienceTestActivity
{
    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// This class handles events raised during feature activation, deactivation, </span>
    <span class="rem">/// installation, uninstallation, and upgrade.</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="rem">/// &lt;remarks&gt;</span>
    <span class="rem">/// The GUID attached to this class may be used during packaging and should not be modified.</span>
    <span class="rem">/// &lt;/remarks&gt;</span>

    [Guid(<span class="str">&quot;a91d2258-b39b-4ca4-8282-2565c061378d&quot;</span>)]
    <span class="kwrd">public</span> <span class="kwrd">class</span> AudienceTestActivityEventReceiver : SPFeatureReceiver
    {
        <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> FeatureActivated(SPFeatureReceiverProperties properties)
        {
            <span class="kwrd">try</span>
            {
                SPWebService contentService = SPWebService.ContentService;
                contentService.WebConfigModifications.Add(GetConfigModification());
                <span class="rem">// Serialize the web application state and propagate changes across the farm. </span>
                contentService.Update();
                <span class="rem">// Save web.config changes.</span>
                contentService.ApplyWebConfigModifications();
            }
            <span class="kwrd">catch</span> (Exception e)
            {
                Console.WriteLine(e.ToString());
                <span class="kwrd">throw</span>;
            }
        }

        <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            <span class="kwrd">try</span>
            {
                SPWebService contentService = SPWebService.ContentService;
                contentService.WebConfigModifications.Remove(GetConfigModification());
                <span class="rem">// Serialize the web application state and propagate changes across the farm. </span>
                contentService.Update();
                <span class="rem">// Save web.config changes.</span>
                contentService.ApplyWebConfigModifications();
            }
            <span class="kwrd">catch</span> (Exception e)
            {
                Console.WriteLine(e.ToString());
                <span class="kwrd">throw</span>;
            }
        }

        <span class="kwrd">public</span> SPWebConfigModification GetConfigModification()
        {
            <span class="kwrd">string</span> assemblyValue = <span class="kwrd">typeof</span>(AudienceMemberActivity).Assembly.FullName;
            <span class="kwrd">string</span> namespaceValue = <span class="kwrd">typeof</span>(AudienceMemberActivity).Namespace;

            SPWebConfigModification modification = <span class="kwrd">new</span> SPWebConfigModification(
                <span class="kwrd">string</span>.Format(CultureInfo.CurrentCulture,
                    <span class="str">&quot;authorizedType[@Assembly='{0}'][@Namespace='{1}']&quot;</span> +
                    <span class="str">&quot;[@TypeName='*'][@Authorized='True']&quot;</span>, assemblyValue, namespaceValue),
                <span class="str">&quot;configuration/System.Workflow.ComponentModel.WorkflowCompiler/authorizedTypes&quot;</span>);

            modification.Owner = <span class="str">&quot;joelblogs.co.uk&quot;</span>;
            modification.Sequence = 0;
            modification.Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
            modification.Value =
                <span class="kwrd">string</span>.Format(CultureInfo.CurrentCulture,
                <span class="str">&quot;&lt;authorizedType Assembly=\&quot;{0}\&quot; Namespace=\&quot;{1}\&quot; &quot;</span> +
                <span class="str">&quot;TypeName=\&quot;*\&quot; Authorized=\&quot;True\&quot; /&gt;&quot;</span>, assemblyValue, namespaceValue);

            Trace.TraceInformation(<span class="str">&quot;SPWebConfigModification value: {0}&quot;</span>, modification.Value);

            <span class="kwrd">return</span> modification;
        }
    }
}</pre><p><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style></p><p>You can download the full source code to my SharePoint 2010 Audience Membership Workflow Activity (Full Trust) here: <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3NwYW13YWZ0LmNvZGVwbGV4LmNvbQ==">http://spamwaft.codeplex.com</a>.</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10900" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Designer+2010' rel='tag,nofollow' target='_blank'>SharePoint Designer 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/Workflow' rel='tag,nofollow' target='_blank'>Workflow</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/10/29/sharepoint-2010-audience-membership-workflow-activity-condition-for-designer-workflows/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Stop, Collaborate, Listen: SharePoint Songs from the Show!</title><link>http://joelblogs.co.uk/2011/09/07/stop-collaborate-listen-sharepoint-songs-from-the-show/</link> <comments>http://joelblogs.co.uk/2011/09/07/stop-collaborate-listen-sharepoint-songs-from-the-show/#comments</comments> <pubDate>Wed, 07 Sep 2011 08:24:31 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[Training]]></category> <category><![CDATA[Whimsy]]></category> <category><![CDATA[Comedy]]></category> <category><![CDATA[SharePoint 2010 Training]]></category> <category><![CDATA[Songs]]></category> <category><![CDATA[Videos]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/09/07/stop-collaborate-listen-sharepoint-songs-from-the-show/</guid> <description><![CDATA[<p>After much persuasion, I’ve decided to fly in the face of public opinion and record one of the songs from my SharePoint show <img
style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://joelblogs.co.uk/wp-content/uploads/2011/09/wlEmoticon-smile.png" /></p><p>Stop, Collaborate and Listen: <br
/>SharePoint’s Back with a Brand New Invention.</p><p> <iframe
height="375" src="http://blip.tv/play/hYVegtHAPQA.html" frameborder="0" width="500" allowfullscreen="allowfullscreen"></iframe><embed
type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#hYVegtHAPQA" style="display:none"></embed></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10788" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Comedy' rel='tag,nofollow' target='_blank'>Comedy</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/Songs' rel='tag,nofollow' target='_blank'>Songs</a>, <a
class='technorati-link' href='http://technorati.com/tag/Videos' rel='tag,nofollow' target='_blank'>Videos</a></p>]]></description> <content:encoded><![CDATA[<p>After much persuasion, I’ve decided to fly in the face of public opinion and record one of the songs from my SharePoint show <img
style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://joelblogs.co.uk/wp-content/uploads/2011/09/wlEmoticon-smile.png" /></p><p>Stop, Collaborate and Listen: <br
/>SharePoint’s Back with a Brand New Invention.</p><p> <iframe
height="375" src="http://blip.tv/play/hYVegtHAPQA.html" frameborder="0" width="500" allowfullscreen="allowfullscreen"></iframe><embed
type="application/x-shockwave-flash" src="http://a.blip.tv/api.swf#hYVegtHAPQA" style="display:none"></embed></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10788" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Comedy' rel='tag,nofollow' target='_blank'>Comedy</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/Songs' rel='tag,nofollow' target='_blank'>Songs</a>, <a
class='technorati-link' href='http://technorati.com/tag/Videos' rel='tag,nofollow' target='_blank'>Videos</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/09/07/stop-collaborate-listen-sharepoint-songs-from-the-show/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>Removing the Default Editor Parts from SharePoint Web Parts</title><link>http://joelblogs.co.uk/2011/09/06/removing-the-default-editor-parts-from-sharepoint-web-parts/</link> <comments>http://joelblogs.co.uk/2011/09/06/removing-the-default-editor-parts-from-sharepoint-web-parts/#comments</comments> <pubDate>Tue, 06 Sep 2011 11:29:19 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[SharePoint 2010 Training]]></category> <category><![CDATA[SharePoint Developer]]></category> <category><![CDATA[SharePoint Development]]></category> <category><![CDATA[WebParts]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/09/06/removing-the-default-editor-parts-from-sharepoint-web-parts/</guid> <description><![CDATA[<p>I was recently asked how to remove the Editor Parts (Appearance, Layout, Advanced, etc) from custom Web Parts.</p><p>One strategy is to implement your own Editor Part and mark the built-in ones as not Visible.</p><p>Firstly, we need to create our Editor Part class:</p><pre class="csharpcode"><span class="kwrd">class</span> MyEditorPart : EditorPart
{
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> CreateChildControls()
    {        <span class="rem">// this line hides the default EditorParts</span>
        Parent.Controls[2].Visible = <span class="kwrd">false</span>;
        <span class="kwrd">base</span>.CreateChildControls();
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">bool</span> ApplyChanges()
    {
        <span class="rem">// do stuff here</span>
        <span class="kwrd">return</span> <span class="kwrd">true</span>;
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> SyncChanges()
    {
        <span class="rem">// do stuff here</span>
    }
}</pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>And here’s how we invoke our Editor Part from our Web Part:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA5LzA2L3JlbW92aW5nLXRoZS1kZWZhdWx0LWVkaXRvci1wYXJ0cy1mcm9tLXNoYXJlcG9pbnQtd2ViLXBhcnRzLw==" class=\"more-link\">Read more on Removing the Default Editor Parts from SharePoint Web Parts&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10786" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/WebParts' rel='tag,nofollow' target='_blank'>WebParts</a></p>]]></description> <content:encoded><![CDATA[<p>I was recently asked how to remove the Editor Parts (Appearance, Layout, Advanced, etc) from custom Web Parts.</p><p>One strategy is to implement your own Editor Part and mark the built-in ones as not Visible.</p><p>Firstly, we need to create our Editor Part class:</p><pre class="csharpcode"><span class="kwrd">class</span> MyEditorPart : EditorPart
{
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> CreateChildControls()
    {        <span class="rem">// this line hides the default EditorParts</span>
        Parent.Controls[2].Visible = <span class="kwrd">false</span>;
        <span class="kwrd">base</span>.CreateChildControls();
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">bool</span> ApplyChanges()
    {
        <span class="rem">// do stuff here</span>
        <span class="kwrd">return</span> <span class="kwrd">true</span>;
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> SyncChanges()
    {
        <span class="rem">// do stuff here</span>
    }
}</pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>And here’s how we invoke our Editor Part from our Web Part:</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> MyWebPart : WebPart
{
    <span class="kwrd">public</span> <span class="kwrd">override</span> EditorPartCollection CreateEditorParts()
    {
        ArrayList aryParts = <span class="kwrd">new</span> ArrayList();

        MyEditorPart myEditor = <span class="kwrd">new</span> MyEditorPart();
        myEditor.ID = <span class="kwrd">this</span>.ID + <span class="str">&quot;_myEditorPart&quot;</span>;
        aryParts.Add(myEditor);

        <span class="kwrd">return</span> <span class="kwrd">new</span> EditorPartCollection(aryParts);
    }
    <span class="rem">// do more stuff here...</span>
}</pre><style type="text/css">.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}</style><p>Hopefully, when you edit the Web Part it should look something like this:</p><p><img
src="http://cdn.joelblogs.com/wp-content/uploads/2011/09/NoEditorParts.png" /></p><p>The next step would be to extend CreateChildControls(), ApplyChanges() and SyncChanges() to get and set any properties you’d like to allow users to edit.</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10786" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Development' rel='tag,nofollow' target='_blank'>SharePoint Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/WebParts' rel='tag,nofollow' target='_blank'>WebParts</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/09/06/removing-the-default-editor-parts-from-sharepoint-web-parts/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Workflow Initiation and Association Forms in SharePoint 2010: GetInitiationData, Seralize&lt;T&gt;() and Deserialize&lt;T&gt;()</title><link>http://joelblogs.co.uk/2011/08/17/workflow-initiation-and-association-forms-in-sharepoint-2010-getinitiationdata-seralizet-and-deserializet/</link> <comments>http://joelblogs.co.uk/2011/08/17/workflow-initiation-and-association-forms-in-sharepoint-2010-getinitiationdata-seralizet-and-deserializet/#comments</comments> <pubDate>Wed, 17 Aug 2011 16:55:51 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[Training]]></category> <category><![CDATA[SharePoint]]></category> <category><![CDATA[SharePoint 2010 Training]]></category> <category><![CDATA[SharePoint Developer]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/08/17/workflow-initiation-and-association-forms-in-sharepoint-2010-getinitiationdata-seralizet-and-deserializet/</guid> <description><![CDATA[<p>SharePoint 2010 in Visual Studio 2010 has made creating Windows Workflow Foundation (WF) workflows an awful lot easier. There are still one or two areas that can be confusing to new developers</p><p>One such region of confusion surrounds the Initiation Form – the form displayed whenever a user launches your workflow, that you can use to prompt for more information required to run your workflow. Similar uncertainty surrounds the Association Form – one that is displayed whenever a list administrator attaches your workflow to their list.</p><p>Thanks to the tooling in Visual Studio, it’s now easy to add either of these forms. Right-clicking your Workflow item in Solution Explorer and choosing “Add-&#62; New Item” will give you:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA4LzE3L3dvcmtmbG93LWluaXRpYXRpb24tYW5kLWFzc29jaWF0aW9uLWZvcm1zLWluLXNoYXJlcG9pbnQtMjAxMC1nZXRpbml0aWF0aW9uZGF0YS1zZXJhbGl6ZXQtYW5kLWRlc2VyaWFsaXpldC8=" class=\"more-link\">Read more on Workflow Initiation and Association Forms in SharePoint 2010: GetInitiationData, Seralize&#60;T&#62;() and Deserialize&#60;T&#62;()&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10755" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a></p>]]></description> <content:encoded><![CDATA[<p>SharePoint 2010 in Visual Studio 2010 has made creating Windows Workflow Foundation (WF) workflows an awful lot easier. There are still one or two areas that can be confusing to new developers</p><p>One such region of confusion surrounds the Initiation Form – the form displayed whenever a user launches your workflow, that you can use to prompt for more information required to run your workflow. Similar uncertainty surrounds the Association Form – one that is displayed whenever a list administrator attaches your workflow to their list.</p><p>Thanks to the tooling in Visual Studio, it’s now easy to add either of these forms. Right-clicking your Workflow item in Solution Explorer and choosing “Add-&gt; New Item” will give you:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8wOC9pbWFnZTEucG5n"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Adding a New SharePoint Item in Visual Studio 2010" border="0" alt="Adding a New SharePoint Item in Visual Studio 2010" src="http://joelblogs.co.uk/wp-content/uploads/2011/08/image_thumb1.png" width="325" height="267" /></a></p><p>Selecting either Initiation Form or Association Form will add the appropriate artefacts to your code and also configures the Element manifest of the Workflow accordingly:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8wOC9pbWFnZTIucG5n"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Element Manifest Changes to view Initiation Forms" border="0" alt="Element Manifest Changes to view Initiation Forms" src="http://joelblogs.co.uk/wp-content/uploads/2011/08/image_thumb2.png" width="333" height="66" /></a></p><p>Let’s say we wanted to ask the user a series of extra questions when they launch our workflow, such as their manager’s First Name, Last Name and Email Address, such that we can have access to that data within our running workflow later on.</p><p>We can now edit our new Initiation Form as an aspx page in Visual Studio. Let’s add some text boxes to capture the extra information:</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8wOC9pbWFnZTMucG5n"><img
style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://joelblogs.co.uk/wp-content/uploads/2011/08/image_thumb3.png" width="495" height="200" /></a></p><p>The next question is often “how do we get this information to the workflow?” Inside the workflow itself is a SPWorkflowActivationProperties object which exposes two strings: InitiationData and AssociationData, which is respectively the data captured from the user during launch and association phases of the workflow.</p><p>The code behind for the Initiation Form has a string method called GetInitiationData(). Whatever string you return here is then available from inside your workflow using workflowProperties.InitiationData. It’s the same principle with Association Forms, GetAssociationData and AssociationData properties.</p><p>Clearly, we could go low-rent here and return a semi-colon delimited string or something naff of that ilk.</p><p>Alternatively you could store your properties temporarily in a class and then serialise that class to a string and return that. Then later in your workflow you could deserialise that back to an instance of your object.</p><p>You could put a lot of effort into this to get it really efficient, but the general principle is why not create a utility class to hold Serialise and Deserialise methods?</p><p>I’ve implemented the following candidate code using Generics to show how powerful the technique is:</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">string</span> Serialise&lt;T&gt;(T item)
{
    XmlSerializer ser = <span class="kwrd">new</span> XmlSerializer(item.GetType());
    TextWriter sw = <span class="kwrd">new</span> StringWriter();
    ser.Serialize(sw, item);
    <span class="kwrd">return</span> sw.ToString();
}

<span class="kwrd">public</span> <span class="kwrd">static</span> T Deserialise&lt;T&gt;(<span class="kwrd">string</span> xml) <span class="kwrd">where</span> T : <span class="kwrd">new</span>()
{
    T returnObject = <span class="kwrd">new</span> T();
    XmlSerializer ser = <span class="kwrd">new</span> XmlSerializer(returnObject.GetType());
    XmlTextReader xtr = <span class="kwrd">new</span> XmlTextReader(<span class="kwrd">new</span> StringReader(xml));
    <span class="kwrd">return</span> (T)ser.Deserialize(xtr);
}</pre><style type="text/css">/*<![CDATA[*/<p>.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}/*]]>*/</style><p>So, given a class, for example, to hold contact information:</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> Contact
{
    <span class="kwrd">public</span> <span class="kwrd">string</span> FirstName;
    <span class="kwrd">public</span> <span class="kwrd">string</span> LastName;
    <span class="kwrd">public</span> <span class="kwrd">string</span> Email;
}</pre><style type="text/css">/*<![CDATA[*/<p>.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}/*]]>*/</style><p>You could put the following in your code behind for the Initiation Form:</p><pre class="csharpcode"><span class="rem">// This method is called when the user clicks the button to start the workflow.</span>
<span class="kwrd">private</span> <span class="kwrd">string</span> GetInitiationData()
{
    contact.FirstName = firstName.Text;
    contact.LastName = lastName.Text;
    contact.Email = email.Text;
    <span class="kwrd">return</span> Serialise&lt;Contact&gt;(contact);
}</pre><style type="text/css">/*<![CDATA[*/<p>.csharpcode, .csharpcode
pre{font-size:small;color:black;font-family:consolas,"Courier New",courier,monospace;background-color:#fff}.csharpcode
pre{margin:0em}.csharpcode
.rem{color:#008000}.csharpcode
.kwrd{color:#00f}.csharpcode
.str{color:#006080}.csharpcode
.op{color:#0000c0}.csharpcode
.preproc{color:#c63}.csharpcode
.asp{background-color:#ff0}.csharpcode
.html{color:#800000}.csharpcode
.attr{color:#f00}.csharpcode
.alt{background-color:#f4f4f4;width:100%;margin:0em}.csharpcode
.lnum{color:#606060}/*]]>*/</style><p>Then in the code beside for your workflow you can get at the data again like this:</p><pre class="csharpcode"><span class="kwrd">private</span> <span class="kwrd">void</span> codeActivity1_ExecuteCode(<span class="kwrd">object</span> sender, EventArgs e)
{
    Contact contact = Deserialise&lt;Contact&gt;(workflowProperties.InitiationData);
    historyDescription = <span class="kwrd">string</span>.Format(<span class="str">&quot;Received Contact information: {0} {1} {2}&quot;</span>,
        contact.FirstName, contact.LastName, contact.Email);
}</pre><p>Hopefully this code will save you some searching and typing.</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10755" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/SharePoint' rel='tag,nofollow' target='_blank'>SharePoint</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/08/17/workflow-initiation-and-association-forms-in-sharepoint-2010-getinitiationdata-seralizet-and-deserializet/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Enabling IntelliSense for the JavaScript Client Object Model in SharePoint 2010</title><link>http://joelblogs.co.uk/2011/08/09/enabling-intellisense-for-the-javascript-client-object-model-in-sharepoint-2010/</link> <comments>http://joelblogs.co.uk/2011/08/09/enabling-intellisense-for-the-javascript-client-object-model-in-sharepoint-2010/#comments</comments> <pubDate>Tue, 09 Aug 2011 14:48:46 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SharePoint 2010]]></category> <category><![CDATA[Training]]></category> <category><![CDATA[SharePoint 2010 Training]]></category> <category><![CDATA[SharePoint Developer]]></category> <category><![CDATA[SharePoint Training]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/08/09/enabling-intellisense-for-the-javascript-client-object-model-in-sharepoint-2010/</guid> <description><![CDATA[<p>If you’re creating or editing a JavaScript file in Visual Studio and you would like some help creating Client Object Model code, you’re not alone.</p><p>It’s a little bit cryptic, but we can tell IntelliSense to include any JavaScript libraries you have on your development machine.</p><p>Simply place the following two lines at the top of your source code (watch out for line breaks!):</p><div
style="width: 600px; word-wrap: break-word!important;"><pre class="csharpcode rem">/// &#60;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\MicrosoftAjax.js" /&#62;
/// &#60;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\SP.debug.js" /&#62;
/// &#60;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\SP.Core.debug.js" /&#62;</pre></div><p>Then, you can get IntelliSense when you need it the most!</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA4LzA5L2VuYWJsaW5nLWludGVsbGlzZW5zZS1mb3ItdGhlLWphdmFzY3JpcHQtY2xpZW50LW9iamVjdC1tb2RlbC1pbi1zaGFyZXBvaW50LTIwMTAv" class=\"more-link\">Read more on Enabling IntelliSense for the JavaScript Client Object Model in SharePoint 2010&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10741" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Training' rel='tag,nofollow' target='_blank'>SharePoint Training</a></p>]]></description> <content:encoded><![CDATA[<p>If you’re creating or editing a JavaScript file in Visual Studio and you would like some help creating Client Object Model code, you’re not alone.</p><p>It’s a little bit cryptic, but we can tell IntelliSense to include any JavaScript libraries you have on your development machine.</p><p>Simply place the following two lines at the top of your source code (watch out for line breaks!):</p><div
style="width: 600px; word-wrap: break-word!important;"><pre class="csharpcode rem">/// &lt;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\MicrosoftAjax.js" /&gt;
/// &lt;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\SP.debug.js" /&gt;
/// &lt;reference path="C:\\Program Files\\Common Files\\Microsoft Shared\\Web Server Extensions\\14\\TEMPLATE\\LAYOUTS\\SP.Core.debug.js" /&gt;</pre></div><p>Then, you can get IntelliSense when you need it the most!</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay93cC1jb250ZW50L3VwbG9hZHMvMjAxMS8wOC9pbWFnZS5wbmc="><img
style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="Enabling IntelliSense for the JavaScript Client Object Model in SharePoint 2010" src="http://joelblogs.co.uk/wp-content/uploads/2011/08/image_thumb.png" alt="Enabling IntelliSense for the JavaScript Client Object Model in SharePoint 2010" width="454" height="240" border="0" /></a></p><p><a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2ZmNzk4MzI4LmFzcHg=">Full article on MSDN available here</a>.</p><p>Enjoy!</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10741" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010' rel='tag,nofollow' target='_blank'>SharePoint 2010</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+2010+Training' rel='tag,nofollow' target='_blank'>SharePoint 2010 Training</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Developer' rel='tag,nofollow' target='_blank'>SharePoint Developer</a>, <a
class='technorati-link' href='http://technorati.com/tag/SharePoint+Training' rel='tag,nofollow' target='_blank'>SharePoint Training</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/08/09/enabling-intellisense-for-the-javascript-client-object-model-in-sharepoint-2010/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Microsoft Azure Cloud Hack Event Videos</title><link>http://joelblogs.co.uk/2011/06/24/microsoft-azure-cloud-hack-event-videos/</link> <comments>http://joelblogs.co.uk/2011/06/24/microsoft-azure-cloud-hack-event-videos/#comments</comments> <pubDate>Fri, 24 Jun 2011 15:26:09 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[Azure]]></category> <category><![CDATA[Cloud]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/06/24/microsoft-azure-cloud-hack-event-videos/</guid> <description><![CDATA[<p>This year, I was very privileged to be asked to present the Cloud Hack event. In these videos we go behind the scenes and talk to the participants and to the API partners who kindly gave us access to their web APIs for the day.</p><p>We set the developers a challenge to build the most imaginative applications they could, using as many of the APIs as possible during the day.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_39154141.js"></script><p>In the second video, we meet the API partners. Thanks to Huddle, PayPal, Network Rail Enquiries and of course Microsoft Bing Maps.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_39158259.js"></script></p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA2LzI0L21pY3Jvc29mdC1henVyZS1jbG91ZC1oYWNrLWV2ZW50LXZpZGVvcy8=" class=\"more-link\">Read more on Microsoft Azure Cloud Hack Event Videos&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10690" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Azure' rel='tag,nofollow' target='_blank'>Azure</a>, <a
class='technorati-link' href='http://technorati.com/tag/Cloud' rel='tag,nofollow' target='_blank'>Cloud</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a></p>]]></description> <content:encoded><![CDATA[<p>This year, I was very privileged to be asked to present the Cloud Hack event. In these videos we go behind the scenes and talk to the participants and to the API partners who kindly gave us access to their web APIs for the day.</p><p>We set the developers a challenge to build the most imaginative applications they could, using as many of the APIs as possible during the day.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_39154141.js"></script><p>In the second video, we meet the API partners. Thanks to Huddle, PayPal, Network Rail Enquiries and of course Microsoft Bing Maps.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_39158259.js"></script><p>In the third video, we catch up with some of the coders and see what they have managed to build on Azure in the cloud.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_39162638.js"></script></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10690" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Azure' rel='tag,nofollow' target='_blank'>Azure</a>, <a
class='technorati-link' href='http://technorati.com/tag/Cloud' rel='tag,nofollow' target='_blank'>Cloud</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/06/24/microsoft-azure-cloud-hack-event-videos/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 Canvas</title><link>http://joelblogs.co.uk/2011/06/23/html5-canvas/</link> <comments>http://joelblogs.co.uk/2011/06/23/html5-canvas/#comments</comments> <pubDate>Thu, 23 Jun 2011 21:18:20 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[HTML5]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/06/23/html5-canvas/</guid> <description><![CDATA[<p>I’ve been a massive fan of Silverlight development since it’s first version. But HTML5 is an interesting new challenger to the graphics capabilities of Silverlight.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_36608289.js"></script><p>In this video, the Ubelly team demonstrates the HTML5 Canvas, and show how to animate photos and effects. The underlying techniques to make this happen are pretty cumbersome, but luckily there are freely available JavaScript libraries to help out, such as EaselJS from <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5lYXNlbGpzLmNvbQ==" rel=\"nofollow\">www.easeljs.com</a>.</p><div
style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><div
style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&#60;</span><span style="color: #800000">canvas</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&#34;myCanvas&#34;</span> <span style="color: #ff0000">width</span><span style="color: #0000ff">=&#34;600&#34;</span> <span style="color: #ff0000">height</span><span style="color: #0000ff">=&#34;480&#34;</span><span style="color: #0000ff">&#62;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">If your browser doesn't support canvas, this text will show.</pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&#60;/</span><span style="color: #800000">canvas</span><span style="color: #0000ff">&#62;</span></pre><p></div></div><p>The HTML5 Canvas markup is relatively simple, but it’s the ensuing JavaScript to place and animate pictures, point by point, with each tick of the canvas clock that seems hard.</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA2LzIzL2h0bWw1LWNhbnZhcy8=" class=\"more-link\">Read more on HTML5 Canvas&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10689" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/HTML5' rel='tag,nofollow' target='_blank'>HTML5</a></p>]]></description> <content:encoded><![CDATA[<p>I’ve been a massive fan of Silverlight development since it’s first version. But HTML5 is an interesting new challenger to the graphics capabilities of Silverlight.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_36608289.js"></script><p>In this video, the Ubelly team demonstrates the HTML5 Canvas, and show how to animate photos and effects. The underlying techniques to make this happen are pretty cumbersome, but luckily there are freely available JavaScript libraries to help out, such as EaselJS from <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5lYXNlbGpzLmNvbQ==" rel=\"nofollow\">www.easeljs.com</a>.</p><div
style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><div
style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">canvas</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;myCanvas&quot;</span> <span style="color: #ff0000">width</span><span style="color: #0000ff">=&quot;600&quot;</span> <span style="color: #ff0000">height</span><span style="color: #0000ff">=&quot;480&quot;</span><span style="color: #0000ff">&gt;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">If your browser doesn't support canvas, this text will show.</pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">canvas</span><span style="color: #0000ff">&gt;</span></pre><p></div></div><p>The HTML5 Canvas markup is relatively simple, but it’s the ensuing JavaScript to place and animate pictures, point by point, with each tick of the canvas clock that seems hard.</p><p>In this second video, Ubelly shows how Capital FM achieved more effects, such as creating a photo lightbox with rounded corners.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_36612378.js"></script></p><p>I’m sure when the tooling becomes available, it will make the whole HTML5 development platform more appealing, but in the mean time I think I prefer Microsoft Deep Zoom Composer, Expression Blend and Silverlight.</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10689" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/HTML5' rel='tag,nofollow' target='_blank'>HTML5</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/06/23/html5-canvas/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 Video Support</title><link>http://joelblogs.co.uk/2011/06/23/html5-video-support/</link> <comments>http://joelblogs.co.uk/2011/06/23/html5-video-support/#comments</comments> <pubDate>Thu, 23 Jun 2011 00:08:19 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/06/23/html5-video-support/</guid> <description><![CDATA[<p>HTML5 offers some interesting features for video, and can render video without requiring plug-ins. This video from Ubelly shows how Sky News are using HTML5 to power their forthcoming video news site. It also shows how you can use IE9&#8242;s developer tools to good effect when debugging JavaScript.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_36620730.js"></script><strike></strike><p>Interesting is how easy the HTML and JavaScript is to place a video on a page without plugins, and start, stop, rewind and fastforward through JavaScript. The HTMl5 &#60;Video /&#62; tag is incredibly straightforward to use:</p><div
style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><div
style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&#60;</span><span style="color: #800000">video</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&#34;myVideo&#34;</span> <span style="color: #ff0000">width</span><span style="color: #0000ff">=&#34;600&#34;</span> <span style="color: #ff0000">height</span><span style="color: #0000ff">=&#34;480&#34;</span><span style="color: #0000ff">&#62;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&#60;</span><span style="color: #800000">source</span> <span style="color: #ff0000">src</span><span style="color: #0000ff">=&#34;myVideo.ogg&#34;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">='video/ogg; codecs=&#34;theora, vorbis&#34;'</span><span style="color: #0000ff">&#62;</span></pre><p></div></div><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA2LzIzL2h0bWw1LXZpZGVvLXN1cHBvcnQv" class=\"more-link\">Read more on HTML5 Video Support&#8230;</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10687" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/HTML5' rel='tag,nofollow' target='_blank'>HTML5</a>, <a
class='technorati-link' href='http://technorati.com/tag/JavaScript' rel='tag,nofollow' target='_blank'>JavaScript</a></p>]]></description> <content:encoded><![CDATA[<p>HTML5 offers some interesting features for video, and can render video without requiring plug-ins. This video from Ubelly shows how Sky News are using HTML5 to power their forthcoming video news site. It also shows how you can use IE9&#8242;s developer tools to good effect when debugging JavaScript.</p><p><script type="text/javascript" src="http://video.unrulymedia.com/wildfire_36620730.js"></script><strike></strike><p>Interesting is how easy the HTML and JavaScript is to place a video on a page without plugins, and start, stop, rewind and fastforward through JavaScript. The HTMl5 &lt;Video /&gt; tag is incredibly straightforward to use:</p><div
style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><div
style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">video</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;myVideo&quot;</span> <span style="color: #ff0000">width</span><span style="color: #0000ff">=&quot;600&quot;</span> <span style="color: #ff0000">height</span><span style="color: #0000ff">=&quot;480&quot;</span><span style="color: #0000ff">&gt;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">source</span> <span style="color: #ff0000">src</span><span style="color: #0000ff">=&quot;myVideo.ogg&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">='video/ogg; codecs=&quot;theora, vorbis&quot;'</span><span style="color: #0000ff">&gt;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">source</span> <span style="color: #ff0000">src</span><span style="color: #0000ff">=&quot;myVideo.webm&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">='video/webm; codecs=&quot;vp8, vorbis&quot;'</span> <span style="color: #0000ff">/&gt;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px">  <span style="color: #0000ff">&lt;</span><span style="color: #800000">source</span> <span style="color: #ff0000">src</span><span style="color: #0000ff">=&quot;myVideo.mp4&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">='video/mp4; codecs=&quot;avc1.42E01E, mp4a.40.2&quot;'</span> <span style="color: #0000ff">/&gt;</span></pre><p></p><pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">video</span><span style="color: #0000ff">&gt;</span></pre><p></div></div><p>Note, however, as most vendors&#8217; HTML5 browsers won&#8217;t be able to display the same kinds of video, you may need to encode your videos in multiple formats.</p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10687" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/HTML5' rel='tag,nofollow' target='_blank'>HTML5</a>, <a
class='technorati-link' href='http://technorati.com/tag/JavaScript' rel='tag,nofollow' target='_blank'>JavaScript</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/06/23/html5-video-support/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>The Cloud Hack: Microsoft Azure Hack Day, London, Saturday 11 June 2011.</title><link>http://joelblogs.co.uk/2011/05/23/the-cloud-hack-microsoft-azure-hack-day-london-saturday-11-june-2011/</link> <comments>http://joelblogs.co.uk/2011/05/23/the-cloud-hack-microsoft-azure-hack-day-london-saturday-11-june-2011/#comments</comments> <pubDate>Mon, 23 May 2011 12:44:08 +0000</pubDate> <dc:creator>Joel Jeffery</dc:creator> <category><![CDATA[Development]]></category> <category><![CDATA[SaaS]]></category> <category><![CDATA[Azure]]></category> <category><![CDATA[Cloud]]></category> <category><![CDATA[Microsoft Architecture]]></category> <category><![CDATA[Microsoft Azure]]></category><guid
isPermaLink="false">http://joelblogs.co.uk/2011/05/23/the-cloud-hack-microsoft-azure-hack-day-london-saturday-11-june-2011/</guid> <description><![CDATA[<p>I’m presenting at this year’s Microsoft Hack Day. This year’s theme is Microsoft Azure and using cool APIs to write innovative applications for the cloud.</p><h3>Hooking Stuff Together</h3><p>The Cloud Hack event is a celebration of all that is good about Web 2.0 development on the Microsoft stack. To paraphrase great all-round architecture dude and high priest of SOA, Microsoft’s Pat Helland, it’s really all about Hooking Stuff Together.</p><p>Microsoft <a
rel=\"nofollow\" title=\"Windows Azure\" rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3dpbmRvd3NhenVyZS8=" target=\"_blank\">Windows Azure</a> gives us a great fabric upon which to deploy services and applications that make the best of Hooking web services Stuff Together. When you sign up for The Cloud Hack, you’ll get a 30-day free subscription to Azure.</p><p><a
href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2pvZWxibG9ncy5jby51ay8yMDExLzA1LzIzL3RoZS1jbG91ZC1oYWNrLW1pY3Jvc29mdC1henVyZS1oYWNrLWRheS1sb25kb24tc2F0dXJkYXktMTEtanVuZS0yMDExLw==" class=\"more-link\">Read more on The Cloud Hack: Microsoft Azure Hack Day, London, Saturday 11 June 2011&#8230;.</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&#038;post_id=10621" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Azure' rel='tag,nofollow' target='_blank'>Azure</a>, <a
class='technorati-link' href='http://technorati.com/tag/Cloud' rel='tag,nofollow' target='_blank'>Cloud</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/Microsoft+Architecture' rel='tag,nofollow' target='_blank'>Microsoft Architecture</a>, <a
class='technorati-link' href='http://technorati.com/tag/Microsoft+Azure' rel='tag,nofollow' target='_blank'>Microsoft Azure</a></p>]]></description> <content:encoded><![CDATA[<p>I’m presenting at this year’s Microsoft Hack Day. This year’s theme is Microsoft Azure and using cool APIs to write innovative applications for the cloud.</p><h3>Hooking Stuff Together</h3><p>The Cloud Hack event is a celebration of all that is good about Web 2.0 development on the Microsoft stack. To paraphrase great all-round architecture dude and high priest of SOA, Microsoft’s Pat Helland, it’s really all about Hooking Stuff Together.</p><p>Microsoft <a
rel=\"nofollow\" title=\"Windows Azure\" rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3dpbmRvd3NhenVyZS8=" target=\"_blank\">Windows Azure</a> gives us a great fabric upon which to deploy services and applications that make the best of Hooking web services Stuff Together. When you sign up for The Cloud Hack, you’ll get a 30-day free subscription to Azure.</p><p>The three APIs we’ll be working with on the day include National Rail, Bing Maps and Fantastic Tavern. At the very least, there should be enough API goodness there to plan an impromptu pub crawl. And if that’s not good use of Web 2.0, then feel free to leave comments at the end of this blog post and tell me what is. <img
class="wlEmoticon wlEmoticon-smile" style="border-style: none;" src="http://joelblogs.co.uk/wp-content/uploads/2011/05/wlEmoticon-smile.png" alt="Smile" /></p><h3>Getting There</h3><p>If you’re reading this before the event, you can get free tickets here: <a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50aGVjbG91ZGhhY2suY29tL3BhZ2VzL2dldC1hLXRpY2tldC8=">http://www.thecloudhack.com/pages/get-a-ticket/</a></p><p>The location for the day is the Vibe Bar at the THE BREWERY, 52 CHISWELL STREET, EC1Y 4SD.</p><p><iframe
width="640" height="480" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=THE+BREWERY,+52+CHISWELL+STREET,+EC1Y+4SD&amp;sll=51.512722,-0.106516&amp;sspn=0.009348,0.021522&amp;gl=uk&amp;ie=UTF8&amp;hq=THE+BREWERY,+52+CHISWELL+STREET,&amp;hnear=London+EC1Y+4SD,+United+Kingdom&amp;cid=10506951312759484658&amp;ll=51.522309,-0.088148&amp;spn=0.012817,0.027466&amp;z=15&amp;iwloc=A&amp;output=embed"></iframe><br
/><small><a
rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL21hcHMuZ29vZ2xlLmNvLnVrL21hcHM/Zj1xJmFtcDtzb3VyY2U9ZW1iZWQmYW1wO2hsPWVuJmFtcDtnZW9jb2RlPSZhbXA7cT1USEUrQlJFV0VSWSwrNTIrQ0hJU1dFTEwrU1RSRUVULCtFQzFZKzRTRCZhbXA7c2xsPTUxLjUxMjcyMiwtMC4xMDY1MTYmYW1wO3NzcG49MC4wMDkzNDgsMC4wMjE1MjImYW1wO2dsPXVrJmFtcDtpZT1VVEY4JmFtcDtocT1USEUrQlJFV0VSWSwrNTIrQ0hJU1dFTEwrU1RSRUVULCZhbXA7aG5lYXI9TG9uZG9uK0VDMVkrNFNELCtVbml0ZWQrS2luZ2RvbSZhbXA7Y2lkPTEwNTA2OTUxMzEyNzU5NDg0NjU4JmFtcDtsbD01MS41MjIzMDksLTAuMDg4MTQ4JmFtcDtzcG49MC4wMTI4MTcsMC4wMjc0NjYmYW1wO3o9MTUmYW1wO2l3bG9jPUE=" style=\"color:#0000FF;text-align:left\">View Larger Map</a></small><br
/> The schedule for the has been published too:<a
rel=\"nofollow\" rel=\"nofollow\" href="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50aGVjbG91ZGhhY2suY29tL3BhZ2VzL3NjaGVkdWxlLw==" target=\"_blank\">http://www.thecloudhack.com/pages/schedule/</a></p> <img
src="http://joelblogs.co.uk/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=10621" width="1" height="1" style="display: none;" /><p
class='technorati-tags'>Technorati Tags: <a
class='technorati-link' href='http://technorati.com/tag/Azure' rel='tag,nofollow' target='_blank'>Azure</a>, <a
class='technorati-link' href='http://technorati.com/tag/Cloud' rel='tag,nofollow' target='_blank'>Cloud</a>, <a
class='technorati-link' href='http://technorati.com/tag/Development' rel='tag,nofollow' target='_blank'>Development</a>, <a
class='technorati-link' href='http://technorati.com/tag/Microsoft+Architecture' rel='tag,nofollow' target='_blank'>Microsoft Architecture</a>, <a
class='technorati-link' href='http://technorati.com/tag/Microsoft+Azure' rel='tag,nofollow' target='_blank'>Microsoft Azure</a></p>]]></content:encoded> <wfw:commentRss>http://joelblogs.co.uk/2011/05/23/the-cloud-hack-microsoft-azure-hack-day-london-saturday-11-june-2011/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Served from: joelblogs.co.uk @ 2012-02-04 19:12:43 by W3 Total Cache -->
