<?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/"
	>

<channel>
	<title>The Technology Studio</title>
	<atom:link href="http://www.thetechnologystudio.co.uk/technologyblog/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thetechnologystudio.co.uk/technologyblog</link>
	<description>Technology Blog</description>
	<pubDate>Thu, 24 Feb 2011 14:19:25 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows Phone 7&#8211;Shake It Like You Mean It!</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/windows-phone-7shake-it-like-you-mean-it/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/windows-phone-7shake-it-like-you-mean-it/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 09:46:09 +0000</pubDate>
		<dc:creator>alex@earthware.co.uk</dc:creator>
		
		<category><![CDATA[Windows Phone 7]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/?p=98</guid>
		<description><![CDATA[Demonstration of how to use the Shake Gesture Library for Windows Phone 7 with sample project]]></description>
			<content:encoded><![CDATA[<h3>Shake Gesture Library Now Available</h3>
<p>&#160;</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/image-thumb27.png"><img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb27" border="0" alt="image_thumb27" align="left" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/image-thumb27-thumb.png" width="225" height="240" /></a>When developing applications for Windows Phone 7 you have access to vast amounts of information about the device through its sensors. One of these is the accelerometer&#160; which can give you information on where the device is moving within 3D space, this can be utilised in many different ways, the most prominent of these being in gaming. </p>
<p>There are however many other ways to use this information, you may want a user to be able to shake their device to update their&#160; twitter list instead of pressing a button, or many other implementations like this.</p>
<p>To make this easier to do you can now use the Shake Gesture Library which is available to download from the <a href="http://create.msdn.com/downloads/?id=714" target="_blank">AppHub</a>&#160; and there is also a great overview on the <a href="http://windowsteamblog.com/windows_phone/b/wpdev/" target="_blank">Windows Phone Developer Team Blog</a>.</p>
<p>&#160;</p>
<h3>The Magic Eight Ball App</h3>
<p>&#160;</p>
<p>To show how easy this is to use, lets write a simple app, I want to&#160; ask my eight ball a question, shake my device and have an answer appear.</p>
<ul>
<li><font face="Arial">Create a new Windows Phone 7 project in Visual Studio:</font></li>
</ul>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/newproj.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="NewProj" border="0" alt="NewProj" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/newproj-thumb.jpg" width="510" height="341" /></a></p>
<ul>
<li>Create a UI which has an image of an eight ball with a TextBlock hovering over the top to show the answer.</li>
</ul>
<p>&#160;<a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/magiceightball-microsoft-visual-studio-administrator.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MagicEightBall - Microsoft Visual Studio (Administrator)" border="0" alt="MagicEightBall - Microsoft Visual Studio (Administrator)" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/magiceightball-microsoft-visual-studio-administrator-thumb.jpg" width="510" height="139" /></a></p>
<ul>
<li>Add initialisation of a<em> List&lt;string&gt;</em> to hold our responses</li>
</ul>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/magiceightball-microsoft-visual-studio-administrator-2.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MagicEightBall - Microsoft Visual Studio (Administrator) (2)" border="0" alt="MagicEightBall - Microsoft Visual Studio (Administrator) (2)" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/magiceightball-microsoft-visual-studio-administrator-2-thumb.jpg" width="510" height="116" /></a></p>
<ul>
<li>In the Loaded event of our page add the handling for the shake gesture using the Shake Gesture Library.</li>
</ul>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/mainpage.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="MainPage" border="0" alt="MainPage" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/02/mainpage-thumb.jpg" width="510" height="188" /></a></p>
<p>&#160;</p>
<p>That’s our App done, your Windows Phone 7 can now impart you with the knowledge of the Universe. Go Shake!!</p>
<p><a href="http://cid-756a9b00ae9a5e3b.office.live.com/self.aspx/Windows%20Phone%207/MagicEightBall.7z" target="_blank">Download the sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/windows-phone-7shake-it-like-you-mean-it/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Silverlight for Windows Phone Toolkit–February 2011</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/silverlight-for-windows-phone-toolkit%e2%80%93february-2011/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/silverlight-for-windows-phone-toolkit%e2%80%93february-2011/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 10:09:49 +0000</pubDate>
		<dc:creator>alex@earthware.co.uk</dc:creator>
		
		<category><![CDATA[Windows Phone 7]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[Toolkit]]></category>

		<category><![CDATA[WP7]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/?p=96</guid>
		<description><![CDATA[A refresh to the Silverlight Toolkit for Windows Phone was released a few days ago which contained along with a few bug fixes some cool new features:

TiltEffect

Gives you the ability use an attached property to apply a cool tilt animation to most UI Elements.


PerformanceProgressBar

A highly performant version of the built in ProgressBar


VB.Net samples

Sample projects for [...]]]></description>
			<content:encoded><![CDATA[<p>A refresh to the Silverlight Toolkit for Windows Phone was released a few days ago which contained along with a few bug fixes some cool new features:</p>
<ul>
<li><span style="font-family: Arial;">TiltEffect</span>
<ul>
<li><span style="font-family: Arial;">Gives you the ability use an attached property to apply a cool tilt animation to most UI Elements.</span></li>
</ul>
</li>
<li><span style="font-family: Arial;">PerformanceProgressBar</span>
<ul>
<li><span style="font-family: Arial;">A highly performant version of the built in ProgressBar</span></li>
</ul>
</li>
<li><span style="font-family: Arial;">VB.Net samples</span>
<ul>
<li><span style="font-family: Arial;">Sample projects for Visual Basic developers</span></li>
</ul>
</li>
</ul>
<p>You can download the bits <a title="Silverlight.Codeplex.Com" href="http://silverlight.codeplex.com/releases/view/60291" target="_blank">HERE</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/02/silverlight-for-windows-phone-toolkit%e2%80%93february-2011/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creating Striking Mapping Applications On Windows Phone 7 Using Bing Maps and CloudMade</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/01/creating-striking-mapping-applications-on-windows-phone-7-using-bing-maps-and-cloudmade/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/01/creating-striking-mapping-applications-on-windows-phone-7-using-bing-maps-and-cloudmade/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 12:10:44 +0000</pubDate>
		<dc:creator>alex@earthware.co.uk</dc:creator>
		
		<category><![CDATA[Bing Maps]]></category>

		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Windows Phone 7]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/?p=70</guid>
		<description><![CDATA[After presenting at the Bing Maps User Group recently in which i discussed how to implement a custom mapping tile layer using the Deep Earth Silverlight control (http://deepearth.codeplex.com) and the Cloudmade mapping service (http://www.cloudmade.com) I began thinking about using this method to create a mapping application for Windows Phone 7 which more fits in with [...]]]></description>
			<content:encoded><![CDATA[<p>After presenting at the <a href="http://bingmapsuk.ning.com/" target="_blank">Bing Maps User Group</a> recently in which i discussed how to implement a custom mapping tile layer using the Deep Earth Silverlight control (<a href="http://deepearth.codeplex.com">http://deepearth.codeplex.com</a>) and the Cloudmade mapping service (<a href="http://www.cloudmade.com">http://www.cloudmade.com</a>) I began thinking about using this method to create a mapping application for Windows Phone 7 which more fits in with metro theme.</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/01/image.png"><img style="background-image: none; border-right-width: 0px; margin: 0px 0px 0px 150px; 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://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2011/01/image-thumb.png" width="229" height="422" /></a></p>
<p>To begin with let’s have a look at the app we are going to build, as you can see the tiles being displayed are completely different to the standard Bing Maps tiles. Not only are you able to choose from thousands of pre-set map styles but you can also create your own too!</p>
<p>Ok lets kick off building this, to begin you are going to need to head off to the <a href="https://www.bingmapsportal.com" target="_blank">Bing Maps Portal</a> to sign up and create yourself an application key. Once you have done this head off to <a href="http://cloudmade.com/" target="_blank">CloudMade</a> and create yourself a developer account. We are now in a position to actually write some code, create a new WP7 project and add a reference Microsoft.Phone.Controls.Maps.dll. We can now add some code to our MainPage.xaml as below.</p>
<p>Add two namespace statements to the top of the page:</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 494px; padding-right: 5px; height: 70px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">xmlns:maps=&quot;<span style="color: #8b0000">clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps</span>&quot;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">xmlns:core=&quot;<span style="color: #8b0000">clr-namespace:Microsoft.Phone.Controls.Maps.Core;assembly=Microsoft.Phone.Controls.Maps</span>&quot;</pre>
<p>&#160;</p>
</pre>
<p></p>
<pre><span style="font-family: arial">Then add a map control to the page also, setting the map mode as below:</span></pre>
<p>&#160;</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 494px; padding-right: 5px; height: 186px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;maps:Map CredentialsProvider=&quot;<span style="color: #8b0000">{Enter Your Bing Maps Key Here}</span>&quot;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">VerticalAlignment=&quot;<span style="color: #8b0000">Stretch</span>&quot; HorizontalAlignment=&quot;<span style="color: #8b0000">Stretch</span>&quot; Grid.Row=&quot;<span style="color: #8b0000">1</span>&quot; Name=&quot;<span style="color: #8b0000">map1</span>&quot; &gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;maps:Map.Mode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;core:MercatorMode&gt;&lt;/core:MercatorMode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/maps:Map.Mode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;/maps:Map&gt;</pre>
<p>&#160;</p>
</pre>
<p><span style="font-family: arial">If you run the application at this point you will not see a great deal of anything, in effect what we have done is turn off the standard Bing Map tiles. We now need to create our custom tile </span><span style="font-family: arial">provider to serve the tiles from CloudMade to our app using the code below</span><span style="font-family: arial">:</span></p>
<p></p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 494px; padding-right: 5px; height: 749px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> CloudMadeTileSource : TileSource</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">{</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">private</span> <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> _tilePath= &quot;<span style="color: #8b0000">http://{S}.tile.cloudmade.com/{creds}/{style}/256/{Z}/{X}/{Y}.png</span>&quot;;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">private</span> <span style="color: #0000ff">readonly</span> Random _rand = <span style="color: #0000ff">new</span> Random();</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">private</span> <span style="color: #0000ff">readonly</span> <span style="color: #0000ff">string</span>[] TilePathPrefixes = <span style="color: #0000ff">new</span>[] { &quot;<span style="color: #8b0000">a</span>&quot;, &quot;<span style="color: #8b0000">b</span>&quot;, &quot;<span style="color: #8b0000">c</span>&quot; };</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> CloudMadeCredentialsProvider { <span style="color: #0000ff">get</span>; <span style="color: #0000ff">set</span>; }</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">string</span> CloudMadeMapStyleId { <span style="color: #0000ff">get</span>; <span style="color: #0000ff">set</span>; }</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">override</span> Uri GetUri(<span style="color: #0000ff">int</span> x, <span style="color: #0000ff">int</span> y, <span style="color: #0000ff">int</span> zoomLevel)</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    {</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> url = <span style="color: #0000ff">string</span>.Empty;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">string</span> prefix = <span style="color: #0000ff">string</span>.Empty;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        prefix = TilePathPrefixes[_rand.Next(3)];</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = _tilePath;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #008000">//Randomize to different OSM Servers based on URL prefix</span></pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{creds}</span>&quot;, CloudMadeCredentialsProvider);</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{style}</span>&quot;, CloudMadeMapStyleId);</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{S}</span>&quot;, prefix);</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{Z}</span>&quot;, zoomLevel.ToString());</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{X}</span>&quot;, x.ToString());</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        url = url.Replace(&quot;<span style="color: #8b0000">{Y}</span>&quot;, y.ToString());</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> Uri(url);</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    }</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">}</pre>
</pre>
<p>Here we are inheriting from the TileSource class and overiding the GetUri method which gives the mapping control the uri to the image file for a tile on the map. this is done by taking a URL which has placeholders for the important pieces of information the CloudMade system requires which is described very well on the <a href="http://developers.cloudmade.com/projects/tiles/documents" target="_blank">CloudMade site</a>. we also have properties for setting the CloudMade credentials and style id so these can be set in xaml.</p>
<p>We can now add a a reference to this class in our xaml as so:</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 492px; padding-right: 5px; height: 52px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">xmlns:local=&quot;<span style="color: #8b0000">clr-namespace:StylisedMap</span>&quot;</pre>
<p>&#160;</p>
</pre>
<p></p>
<pre><span style="font-family: arial">Then add the TileSource to the map in our xaml:</span></pre>
<p>&#160;</p>
<pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; width: 495px; padding-right: 5px; height: 418px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px">
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;maps:Map CredentialsProvider=&quot;<span style="color: #8b0000">{Enter Your Bing Maps Key Here}</span>&quot;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    VerticalAlignment=&quot;<span style="color: #8b0000">Stretch</span>&quot; HorizontalAlignment=&quot;<span style="color: #8b0000">Stretch</span>&quot;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">Grid.Row=&quot;<span style="color: #8b0000">1</span>&quot; Name=&quot;<span style="color: #8b0000">map1</span>&quot; &gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;maps:Map.Mode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;core:MercatorMode&gt;&lt;/core:MercatorMode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/maps:Map.Mode&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;maps:MapTileLayer&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;maps:MapTileLayer.TileSources&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            &lt;local:CloudMadeTileSource</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">CloudMadeCredentialsProvider=&quot;<span style="color: #8b0000">{Enter Your CloudMade Key Here}</span>&quot;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">CloudMadeMapStyleId=&quot;<span style="color: #8b0000">{Enter Your Chosen Map Style Id Here}</span>&quot; /&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;/maps:MapTileLayer.TileSources&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/maps:MapTileLayer&gt;</pre>
<p>&#160;</p>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;/maps:Map&gt;</pre>
</pre>
<p>If you now build and run the application you have a working Bing Map Windows Phone Application with custom map tiles. Enjoy!!</p>
<p>You can download the <a href="http://wp7bingmapscloudmade.codeplex.com/" target="_blank">sample project here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2011/01/creating-striking-mapping-applications-on-windows-phone-7-using-bing-maps-and-cloudmade/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Uncharted Territory</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/12/uncharted-territory/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/12/uncharted-territory/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 10:48:52 +0000</pubDate>
		<dc:creator>Dom</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/12/uncharted-territory/</guid>
		<description><![CDATA[A recent ASP MVC 3 project has required us to create some simple charts. As it’s a .NET 4 project we hoped to use the lovely new charting controls provided by Microsoft. You can read all about them in Scott Guthrie’s blog here and as you can see they look very pretty and appear simple [...]]]></description>
			<content:encoded><![CDATA[<p>A recent ASP MVC 3 project has required us to create some simple charts. As it’s a .NET 4 project we hoped to use the lovely new charting controls provided by Microsoft. You can read all about them in Scott Guthrie’s blog <a href="http://weblogs.asp.net/scottgu/archive/2010/02/07/built-in-charting-controls-vs-2010-and-net-4-series.aspx">here</a> and as you can see they look very pretty and appear simple to implement.</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/12/nastypie.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NastyPie" border="0" alt="NastyPie" align="right" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/12/nastypie-thumb.jpg" width="192" height="176" /></a>That was the theory at least. There is a simple tutorial on how to use the controls in an MVC project <a href="http://dotnetslackers.com/articles/aspnet/Experience-ASP-NET-MVC-3-Beta-New-View-Helpers-Part1.aspx">here</a>. The problem is that the output looks nothing like the charts in Scott Gu’s blog - far from it in fact with no fancy 3d effects and as a bonus nasty jpeg compression artefacts appear. While eliminating the compression artefacts is straightforward, (pass the write method a parameter of “.png”) gaining control of the styling is far more convoluted process.</p>
<p>The style of the charts is controlled by the <b>chart.theme</b> parameter, with only four themes available. None of them are terribly exciting and there are no obvious methods for customisation. So far so disappointing. Viewing the class definition in Visual Studio reveals that ChartTheme is a static class with each theme being a constant, declared as a string that appears to be XML mark-up. We wondered if it would be possible to extend this class, adding our own new themes along the way. Incredibly, it’s possible to do exactly that by creating a static partial class that mirrors the original with the exception of the tweaks we want to make to the XML.</p>
<p>Vanilla theme from ChartTheme </p>
<pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"> <span style="color: #0000ff">public</span> <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> Vanilla = @&quot;<span style="color: #8b0000">&lt;Chart Palette=&quot;&quot;SemiTransparent&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">BorderColor=&quot;&quot;#000&quot;&quot; BorderWidth=&quot;&quot;2&quot;&quot; BorderlineDashStyle=&quot;&quot;Solid&quot;&quot;&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;ChartAreas&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;ChartArea _Template_=&quot;&quot;All&quot;&quot; Name=&quot;&quot;Default&quot;&quot;&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            &lt;AxisX&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                &lt;MinorGrid Enabled=&quot;&quot;False&quot;&quot; /&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                &lt;MajorGrid Enabled=&quot;&quot;False&quot;&quot; /&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            &lt;/AxisX&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            &lt;AxisY&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                &lt;MajorGrid Enabled=&quot;&quot;False&quot;&quot; /&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">                &lt;MinorGrid Enabled=&quot;&quot;False&quot;&quot; /&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">            &lt;/AxisY&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/ChartArea&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;/ChartAreas&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;/Chart&gt;</span>&quot;;</pre>
</pre>
<div class="csharpcode">Of course making those XML tweaks really isn’t easy – there’s a lot there and a trial and error process is always time consuming. Furthermore, guessing missing parameters hasn’t ever really worked well for me in the past and I don’t anticipate psychic coding to bear fruit in the future either.</div>
<p>At this point it seemed sensible to have another look at Scott Gu’s blog. <a href="http://code.msdn.microsoft.com/mschart/Release/ProjectReleases.aspx?ReleaseId=1591">It contains a sample project that demonstrates the features of the ASP.net chart controls</a>. This gives us a way of generating the xml we need to theme our charts. It also has a sort of WYSIWYG editor for each chart so we can style the chart to our taste. The Chart class includes a SaveXml method that predictably saves the chart to an xml file. Inserting a call to this method generates the xml we need for our partial class. </p>
<p>Strip out all the data, leaving just the formatting information and there you have it – a chart theme you can reuse throughout your MVC project. Here is the code for a tasteful pie chart…</p>
<pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">const</span> <span style="color: #0000ff">string</span> JMW3D = @&quot;<span style="color: #8b0000">
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px"></pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;Chart BackColor=&quot;&quot;WhiteSmoke&quot;&quot; BackGradientStyle=&quot;&quot;TopBottom&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">BackSecondaryColor=&quot;&quot;White&quot;&quot; BorderColor=&quot;&quot;26, 59, 105&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">BorderWidth=&quot;&quot;2&quot;&quot;&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;Series&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;Series ChartArea=&quot;&quot;Default&quot;&quot; Font=&quot;&quot;Trebuchet MS, 4.25pt,
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">style=Bold&quot;&quot; ChartType=&quot;&quot;Pie&quot;&quot;  Name=&quot;&quot;Default&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">Legend=&quot;&quot;Default&quot;&quot; XValueType=&quot;&quot;String&quot;&quot; YValueType=&quot;&quot;Double&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">Color=&quot;&quot;220, 65, 140, 240&quot;&quot; BorderColor=&quot;&quot;180, 26, 59, 105&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">CustomProperties=&quot;&quot;DoughnutRadius=60, PieLabelStyle=Disabled,
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">PieDrawingStyle=Concave&quot;&quot;&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/Series&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;/Series&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;ChartAreas&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;ChartArea Name=&quot;&quot;Default&quot;&quot; BackColor=&quot;&quot;Transparent&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">BackSecondaryColor=&quot;&quot;Transparent&quot;&quot; ShadowColor=&quot;&quot;Transparent&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">BorderColor=&quot;&quot;64, 64, 64, 64&quot;&quot; BorderWidth=&quot;&quot;0&quot;&quot;&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      &lt;AxisY LineColor=&quot;&quot;64, 64, 64, 64&quot;&quot;&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;MajorGrid LineColor=&quot;&quot;64, 64, 64, 64&quot;&quot; /&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;LabelStyle Font=&quot;&quot;Trebuchet MS, 8.25pt, style=Bold&quot;&quot; /&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      &lt;/AxisY&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      &lt;AxisX LineColor=&quot;&quot;64, 64, 64, 64&quot;&quot;&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;MajorGrid LineColor=&quot;&quot;64, 64, 64, 64&quot;&quot; /&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">        &lt;LabelStyle Font=&quot;&quot;Trebuchet MS, 8.25pt, style=Bold&quot;&quot; /&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      &lt;/AxisX&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">      &lt;Area3DStyle Rotation=&quot;&quot;0&quot;&quot; /&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/ChartArea&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;/ChartAreas&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;Legends&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;Legend LegendStyle=&quot;&quot;Table&quot;&quot; Name=&quot;&quot;Default&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">IsTextAutoFit=&quot;&quot;true&quot;&quot; BackColor=&quot;&quot;Transparent&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">Font=&quot;&quot;Trebuchet MS, 8.25pt, style=Bold&quot;&quot; Alignment=&quot;&quot;Center&quot;&quot;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">Docking=&quot;&quot;Bottom&quot;&quot;&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/Legend&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;/Legends&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;Titles&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;Title Font=&quot;&quot;Arial, 10.25pt, style=Bold&quot;&quot; ForeColor=&quot;&quot;black&quot;&quot;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">ShadowOffset=&quot;&quot;0&quot;&quot; ShadowColor=&quot;&quot;32, 0, 0, 0&quot;&quot; Name=&quot;&quot;Title1&quot;&quot;&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">    &lt;/Title&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;/Titles&gt;
</pre>
<pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">  &lt;BorderSkin SkinStyle=&quot;&quot;None&quot;&quot; /&gt;
</pre>
<pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&#39;Courier New&#39;,courier,monospace; font-size: 12px">&lt;/Chart&gt;</span>&quot;;</pre>
</pre>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/12/nicepie.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="NicePie" border="0" alt="NicePie" align="right" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/12/nicepie-thumb.jpg" width="244" height="192" /></a>And it’s results:</p>
<p>It’s admittedly one of the most round about methods I have used for doing, well <em>anything.</em><strong> </strong>But it works. Feel free to download a sample project file containing a couple of examples in full.</p>
<p><a href="http://www.TheTechnologyStudio.co.uk/blog/wp-content/uploads/2010/12/ChartDemo.zip"><img src="http://www.earthware.co.uk/blog/wp-content/uploads/2010/03/butdownloadcode1.gif" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/12/uncharted-territory/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Windows Phone 7 And IPhone - Sharing Code</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/09/windows-phone-7-and-iphone-sharing-code/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/09/windows-phone-7-and-iphone-sharing-code/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 10:37:39 +0000</pubDate>
		<dc:creator>alex@earthware.co.uk</dc:creator>
		
		<category><![CDATA[IPhone]]></category>

		<category><![CDATA[MonoTouch]]></category>

		<category><![CDATA[Windows Phone 7]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[silverlight]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/09/windows-phone-7-and-iphone-sharing-code/</guid>
		<description><![CDATA[A Match Made In C#
&#160;
I got very exited when i began learning Objective-c, the prospect of being able to write native IPhone apps was very attractive to me. I don’t know why i got exited but like a large proportion of developers (based on the 200k + apps in the store) i did and i [...]]]></description>
			<content:encoded><![CDATA[<h3>A Match Made In C#</h3>
<p>&#160;</p>
<p>I got very exited when i began learning Objective-c, the prospect of being able to write native IPhone apps was very attractive to me. I don’t know why i got exited but like a large proportion of developers (based on the 200k + apps in the store) i did and i set out to conquer the beast. </p>
<p>I am now two commercial apps in using Objective-c and XCode and i am starting to feel like there must be a better way of going around this, With Windows Phone 7 on the horizon and a large user base of the Android platform out in the wild i want to get as close to write once and reuse everywhere as is physically possible. But how is this possible when each platform has its own Language, Framework and IDE?</p>
<p>Enter <a href="http://mono-project.com/Main_Page" target="_blank">Mono</a>, this excellent project which allows you to write, build and deploy .net code to non Windows platforms which is spearheaded by <a href="http://tirania.org/blog/" target="_blank">Miguel de Icaza</a> means you can now write a large proportion of your code once and it can be reused on the 3 mobile platforms.</p>
<p>To give you an example here is a walkthrough of how you may go about doing this:</p>
<p><em>note: To follow the below guide you will need a Windows machine with Visual Studio 2010 and the Windows Phone 7 Beta tools installed, also a Mac with the IPhone SDK, MonoDevelop and MonoTouch installed.</em></p>
<h3>&#160;</h3>
<p>Open Visual Studio 2010 and create a new Windows Phone 7 project, I have called the project “CodeSharing.WP7” and the solution “CodeSharing”.<em>&#160; I have created this solution in my drop box folder to share with the Mac i am going to be using but when creating a real application this would be done using a version control system.</em></p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/newwp7project.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="New WP7 Project" border="0" alt="New WP7 Project" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/newwp7project-thumb.jpg" width="510" height="351" /></a> </p>
<p>Add a Button called “btnSayHello” and a TextBlock called “txtHello” to the MainPage.xaml.</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7ui.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP7UI" border="0" alt="WP7UI" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7ui-thumb.jpg" width="243" height="442" /></a> </p>
<p>Right click on the solution and add a new project, select Silverlight Class Library and make sure you have .Net 3.5 selected. When given the Option choose Silverlight 3. I have called this project “CodeSharing.Shared”.</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/addsharedproject.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="AddSharedProject" border="0" alt="AddSharedProject" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/addsharedproject-thumb.jpg" width="494" height="343" /></a> </p>
<p>Add a class to the new project called “HelloMobiles” and add the code to the class which is below:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/shaedcode.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="ShaedCode" border="0" alt="ShaedCode" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/shaedcode-thumb.jpg" width="485" height="256" /></a> </p>
<p>Now in your Windows Phone 7 project add a reference to the new Class Library then add a click handler to the btnSayHello by double clicking it in the designer. You can then add the code below:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7clickhandler.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP7ClickHandler" border="0" alt="WP7ClickHandler" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7clickhandler-thumb.jpg" width="490" height="251" /></a> </p>
<p>If you now hit F5 and click the button you will see that it has pulled the text through to the TextBlock:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7endresult.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="WP7EndResult" border="0" alt="WP7EndResult" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/wp7endresult-thumb.jpg" width="253" height="461" /></a> </p>
<p>So nothing special so far, we have created a very basic Windows Phone 7 Hello World application, so onto the good bit.</p>
<p>If we now open up the solution in MonoDevelop on the Mac you will see the following:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at103720.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen shot 2010-09-13 at 10.37.20" border="0" alt="Screen shot 2010-09-13 at 10.37.20" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at103720-thumb.png" width="349" height="155" /></a> </p>
<p>The solution has opened fine but the Windows Phone 7 project has not loaded, This is not a problem as we are going to be adding an IPhone project. Right click on the solution and add a new project. Under the C# menu select IPhone Window-based project.</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at104433.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen shot 2010-09-13 at 10.44.33" border="0" alt="Screen shot 2010-09-13 at 10.44.33" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at104433-thumb.png" width="478" height="365" /></a> </p>
<p>Once the IPhone project is created add a new IPhone View with Controller called “MainViewController” and then double click on the MainViewController.xib to edit the view in Interface Builder. <em>I am not going to go into here how you create the UI but there is a great tutorial <a href="http://monotouch.net/Tutorials/MonoDevelop_HelloWorld" target="_blank">here</a>. You will end up with a view looking like below and outlets for the UIButton and the UITextField specified on your view controller.</em></p>
<p>Add a reference to the compiled dll of the CodeSharing.Shared project (<em>you cannot add a reference to the project itself as MonoDevelop says that the project is incompatible) </em>and add the following code to the ViewDidLoad method of the MainViewController code behind.</p>
<p>&#160;</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at111757.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen shot 2010-09-13 at 11.17.57" border="0" alt="Screen shot 2010-09-13 at 11.17.57" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at111757-thumb.png" width="475" height="165" /></a> </p>
<p>And make the FinshedLaunching method in the Main class look like the following:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at111835.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Screen shot 2010-09-13 at 11.18.35" border="0" alt="Screen shot 2010-09-13 at 11.18.35" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/09/screenshot20100913at111835-thumb.png" width="479" height="119" /></a> </p>
<p>Set the IPhone project as the start up project and you are good to go.</p>
<p>&#160;</p>
<p>This method is definitely not the best way going about this but it does give you an idea on how we can reuse code between many different mobile platforms using C# and Visual Studio 2010. I am particularly looking forward to getting my hands on <a href="http://www.go-mono.com/monodroid/Default.aspx" target="_blank">MonoDroid</a> so i can start writing Android apps too.</p>
<p>&#160;</p>
<p>Download the sample code <a href="http://www.thetechnologystudio.co.uk/samples/CodeSharing.zip" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/09/windows-phone-7-and-iphone-sharing-code/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TheTechnologyStudio team attend Microsoft WebCamps London</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/06/microsoft-webcamps-london/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/06/microsoft-webcamps-london/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 12:57:27 +0000</pubDate>
		<dc:creator>alex@earthware.co.uk</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[css]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/06/microsoft-webcamps-london/</guid>
		<description><![CDATA[&#160;
For many the decision to attend the Microsoft organised two day event was a trivial one, the chance to learn the most up to date web technologies available in the Microsoft stack for FREE is not something to be sniffed at.
I on the other hand had some concerns. I would not have previously classed myself [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>For many the decision to attend the Microsoft organised two day event was a trivial one, the <a href="http://www.webcamps.ms" target="_blank"><img style="border-right-width: 0px; margin: 10px 0px 10px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="camps" border="0" alt="camps" align="right" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/camps.jpg" width="240" height="234" /></a>chance to learn the most up to date web technologies available in the Microsoft stack for FREE is not something to be sniffed at.</p>
<p>I on the other hand had some concerns. I would not have previously classed myself as a “Country Bumpkin” but since my visit last weekend to the Capital I would say that this is a reasonably accurate classification. </p>
<p>To say that I was worried about the commute would be an understatement, In my head the commute to London was a kill or be killed trample-fest, I do not know where I had gained this mental picture but none the less it was there.</p>
<p>A friend of mine gave me a list of rules to live by, which I did not understand until after my first commute experience, these rules follow in the hope they can help anyone else in the same situation:</p>
<ul>
<li>Stand on the right hand side of the escalator, walk FAST on the left. </li>
<li>Morden is in the south, Hendon in the north. </li>
<li>Don&#8217;t eat the gum you find on the streets, it&#8217;s not free candy. </li>
<li>Buy a Big Issue, but don&#8217;t pay panhandlers. </li>
<li>Well known sandwich stores are over priced, look for taxi cafe&#8217;s. </li>
<li>Tube it, busses are too confusing, taxi&#8217;s are too expensive. </li>
</ul>
<p><font face="Trebuchet MS">I can honestly say though that my nightmare was not realised and I found the experience to be an overall pleasant one. </font></p>
<p><font face="Trebuchet MS">returning to the event, the WebCamps ethos is to “Learn” then “Build”, this method of teaching seemed to work extremely well especially catching the imagination of everyone who attended the second “Build” day. Some great applications were built along with some excellent friendships.</font></p>
<h3></h3>
</p>
</p>
<p>Day 1 – Learn</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/learningday.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LearningDay" border="0" alt="LearningDay" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/learningday-thumb.jpg" width="284" height="172" /></a> </p>
<h3></h3>
<p>Day 2 – Build</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/building.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Building" border="0" alt="Building" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/building-thumb.jpg" width="284" height="172" /></a> </p>
<p>Day 2 – Presenting</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/presenting.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Presenting" border="0" alt="Presenting" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2010/06/presenting-thumb.jpg" width="284" height="172" /></a> </p>
<p>Our team chose to build an application that would be used to arrange and share journeys If you are ever stranded by let’s say for instance a large cloud of ash. You would use this application to enter your journey details which would then be matched to journeys entered by other users. At this point you could contact any matched user to hopefully share a car or bus. </p>
<p>The schematics for this project are <a href="http://schematics.earthware.co.uk/hitcharide/" target="_blank">here</a> and the CodePlex site is <a href="http://hitcharide.codeplex.com/" target="_blank">here</a>. The project was undertaken in ASP.Net MVC 2 using Entity Framework 4.</p>
<p>Technology Studio takes prototyping very seriously and an explanation on why and how we do this can be found <a href="http://www.thetechnologystudio.co.uk/services/website-design-and-development/info-Architecture-and-prototyping.aspx" target="_blank">here</a>.</p>
<p>I would like to thank <a href="http://twitter.com/jongalloway" target="_blank">Jon Galloway</a> and <a href="http://twitter.com/chwenz" target="_blank">Christian Wenz</a> for an excellent job presenting and support throughout the build. Also <a href="http://twitter.com/saqibs" target="_blank">Saqib Shaikh</a> from the Bing team who joined our build team and was an amazing person to code with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2010/06/microsoft-webcamps-london/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Review of &#8216;Wrox Silverlight 3 Programmers Reference&#8217;</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/08/review-of-wrox-silverlight-3-programmers-reference/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/08/review-of-wrox-silverlight-3-programmers-reference/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:35:05 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
		
		<category><![CDATA[asp.net]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/?p=21</guid>
		<description><![CDATA[
I read the Wrox Professional Silverlight 2 for ASP.NET Developers book about six months ago as my first in-depth introduction to the world of Silverlight, so was looking for a book that could get me up to speed quickly on the new features of Siverlight 3. Having read plenty of Wrox books in the past [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-bottom: 20px; padding-left: 20px; padding-right: 0px; float: right; padding-top: 10px"><a href="http://www.amazon.com/gp/product/0470385405?ie=UTF8&amp;amp;tag=earthware-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0470385405" target="_blank"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="51Y PtFdqNL._SL160_" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/08/51yptfdqnl-sl160.jpg" border="0" alt="51Y PtFdqNL._SL160_" width="132" height="164" /></a></div>
<p>I read the <em>Wrox Professional Silverlight 2 for ASP.NET Developers</em> book about six months ago as my first in-depth introduction to the world of Silverlight, so was looking for a book that could get me up to speed quickly on the new features of Siverlight 3. Having read plenty of Wrox books in the past I looked for their latest and happily found <em>Wrox Silverlight 3 Programmers Reference</em> which looked like it could help me catch up with the latest release.</p>
<p>When the book arrived two things struck me immediately, one it was a bigger book that I was expecting (see more about this later) and two it was in FULL colour. Now you may be saying &#8220;f<em>ull colour, so what?&#8221;</em> but believe me, having all the code samples look exactly like they do in Visual Studio, and full colour screenshots of Blend make a massive difference. Every developer I have shown the book to has immediately been impressed by the change and I can only hope this is the future for all technical books.</p>
<p>The book is written by five authors, which to be honest is something I try and avoid if possible when choosing a book as there always seems to be some consistency issues. However, I can appreciate the world of Silverlight requires a lot of skills and finding one person who has all these would be a tough call. I was impressed, however, to see the authors are all developers at Infragistics and it&#8217;s great to see such a high profile company committed to helping the developer community. I did notice a reasonable amount of what seems unnecessary repetition in different sections (for example two almost identical sections of Isolated Storage) but it’s always good to have concepts reinforced in a book this big.</p>
<p>There are a few notable chapters in the book that try to widen the understanding of developers about the roles and processes involved in a typical Silverlight development team; especially how designers, developers and integrators work together. There is also a great section on paper prototyping of Silverlight applications including the initial evolution of the design. However, it was strange to see no mention of the new Sketchflow features in Blend 3 and I can only assume these were not known about at the time of writing. Hopefully any future editions will rectify this.</p>
<p>Of course there are a few things, as in every book, I’d think about changing. Firstly the title “Wrox Silverlight 3 Programmers Reference” personally I think the name implies a relatively short book that can be used to dip in and out of when required. Now, it is possible to use the book in that way but really it is a complete guide to Silverlight from the basics to example applications, for someone with existing .net / c# skills. The other feature that was disappointingly missing from the book was any highlighting of the new Siverlight Features. I was hoping to be able to flick through the book, brush up on a few things and read up on the new features but there is no visual highlighting and sometimes even no mention that particular features have been introduced in Silverlight 3.</p>
<p>Overall, this is a really solid book for learning Silverlight development in c# and some basic skills in Blend. There are a few parts of the book that could do with more editing to make a more consolidated read and a few missing features (like Sketchflow and highlight new Silverlight 3 features) that could be added in future versions but none of these change the fact that if you are looking to learn Silverlight this is a great book to start with.</p>
<p><a href="http://www.amazon.com/gp/product/0470385405?ie=UTF8&amp;tag=earthware-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0470385405" target="_blank">Get yourself a copy at Amazon</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/08/review-of-wrox-silverlight-3-programmers-reference/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hosting Silverlight Applications in Azure Blob Storage</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/06/hosting-silverlight-applications-in-azure-blob-storage/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/06/hosting-silverlight-applications-in-azure-blob-storage/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 12:56:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[azure]]></category>

		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/06/hosting-silverlight-applications-in-azure-blob-storage/</guid>
		<description><![CDATA[Trying to work out how to serve your Silverlight XAP files from Azure's Blob Storage? Follow this tutorial and try it for yourselves]]></description>
			<content:encoded><![CDATA[<p>We have recently being doing a lot of work with <a href="http://www.microsoft.com/azure/" target="_blank">Windows Azure</a> and Silverlight and have found deployment one of the most involved aspects of Azure development. Building and deploying an Azure app currently takes up to 30 minutes and is not the simplest of processes so having to re-deploy every time you make a change to your Silverlight project can start to become a real pain.</p>
<p>So what&#8217;s the answer? One answer is to separate your Silverlight XAP file from the Azure project by adding your Silverlight XAP file to the Azure Blob Storage. You can then update your Silverlight host page to download the XAP file directly from Blob storage.</p>
<p>This means you can just upload the latest Silverlight XAP file to Blob Storage and be up and running in a few minutes.</p>
<p>Below is a quick tutorial showing you how to do this:</p>
<h3>Step 1 – Getting your Silverlight application ready for external hosting</h3>
<p>If you just upload your current Silverlight XAP file to Blob storage and try and include it in your page you will find the page shows the loading screen, right up to 100%, and then just sits there. This is because your Silverlight application needs to be told to allow it to be hosted on a different domain that the Silverlight XAP file is hosted on. Your Azure application will be on <em>myname.cloudapp.net</em> but your XAP file will be hosted at <em>myname.blob.core.windows.net</em>.</p>
<p style="text-align: left">To set the Silverlight project to allow external hosting open the App.manifest file (found in “Properties” folder of your Silverlight project ) and add the “ExternalCallersFromCrossDomain” attribute to the xml as follows:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 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: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">Deployment</span> <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/client/2007/deployment&quot;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>         <span style="color: #ff0000">xmlns:x</span><span style="color: #0000ff">=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;</span> <span style="color: #ff0000">ExternalCallersFromCrossDomain</span><span style="color: #0000ff">=&quot;ScriptableOnly&quot;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span> <span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">Deployment.Parts</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Deployment.Parts</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">Deployment</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>&#160;</p>
<h3>Step 2 – Uploading the new XAP file</h3>
<p>Now build your Silverlight project in release mode and find where the XAP file in creates (usually in the ClientBin folder of your web role project). You need to upload this to your Azure accounts blob storage and the easiest way to do this is by using the “SpaceBlock” tool on codeplex:</p>
<p><a title="http://www.codeplex.com/spaceblock" href="http://www.codeplex.com/spaceblock">http://www.codeplex.com/spaceblock</a></p>
<p>Download the source code for the latest release (0.2.6 currently) by going to the “Source code” tab in codeplex and clicking the “Download” link next the the latest release. </p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/1.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="1" border="0" alt="1" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/1-thumb.jpg" width="445" height="261" /></a> </p>
<p>Unfortunately you have to build the application yourself from sourcecode as there is not a version available for download currently with Azure storage support. Once built look for the “CodePlex.SpaceBlock.UI.exe” file and run this. You will need to add your Azure storage account details and then you should be ready to upload the XAP file.</p>
<p>In SpaceBlock open your Azure account in the bottom pane and the location of your new XAP file you want to upload in the top pane:</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/2.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="2" border="0" alt="2" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/2-thumb.jpg" width="504" height="403" /></a> </p>
<p>Right&#160; click on the root folder of your Azure storage, in the bottom pane, and click “New Folder”. Give the folder a name like “xap” (be aware use lowercase name, either SpaceBlock or Azure don’t like uppercase). Now with your new folder selected in the bottom pane, right click on your XAP file in the top pane and click “Transfer”. This will open the file transfer dialog where you click “Start Transfer”</p>
<p><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/3.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="3" border="0" alt="3" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/06/3-thumb.jpg" width="504" height="333" /></a> </p>
<p>Your XAP file will then upload to your Blob storage, however by default it will not be publically accessible which you will need it to be.</p>
<p>To make it publically accessible right click on the new folder you created in your Blob storage and click “Edit Azure Container Access” and finally tick the “Allow public access” checkbox.</p>
<p>Your XAP file is now all ready to be used in your Azure web role.</p>
<h3>Step 3 – Updating the Siverlight plugin host page</h3>
<p>The final step is to update the page that hosts your Silverlight control in your Azure webrole project. For this tutorial I will assume your are using the ASP.net Silverlight plugin control. You need to make two changes to the asp.net control, firstly change the Source attribute to point to your XAP file in the Blob Storage. To get the url for this right click on the XAP file in the bottom pane of SpaceBlock and click “Generate URL”. Copy and paste the url into your asp.net page.</p>
<p>Secondly you need to add the attribute HtmlAccess=&quot;Enabled&quot; to the asp.net silverlight control. After both these changes your code should look similar to this:</p>
<div style="border-bottom: gray 1px solid; border-left: gray 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: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span> <span style="color: #ff0000">xmlns</span><span style="color: #0000ff">=&quot;http://www.w3.org/1999/xhtml&quot;</span> <span style="color: #ff0000">style</span><span style="color: #0000ff">=&quot;height:100%;&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;Head1&quot;</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">=&quot;server&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span> <span style="color: #ff0000">style</span><span style="color: #0000ff">=&quot;height:100%;margin:0;&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">form</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;form1&quot;</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">=&quot;server&quot;</span> <span style="color: #ff0000">style</span><span style="color: #0000ff">=&quot;height:100%;&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">asp:ScriptManager</span> <span style="color: #ff0000">ID</span><span style="color: #0000ff">=&quot;ScriptManager1&quot;</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">=&quot;server&quot;</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">asp:ScriptManager</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span>         <span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span>  <span style="color: #ff0000">style</span><span style="color: #0000ff">=&quot;height:100%;&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   9:</span>             <span style="color: #0000ff">&lt;</span><span style="color: #800000">asp:Silverlight</span> <span style="color: #ff0000">ID</span><span style="color: #0000ff">=&quot;Xaml1&quot;</span> <span style="color: #ff0000">runat</span><span style="color: #0000ff">=&quot;server&quot;</span> <span style="color: #ff0000">Source</span><span style="color: #0000ff">=&quot;http://myname.blob.core.windows.net/xap/myappname.xap&quot;</span> <span style="color: #ff0000">MinimumVersion</span><span style="color: #0000ff">=&quot;2.0.31005.0&quot;</span> <span style="color: #ff0000">Width</span><span style="color: #0000ff">=&quot;100%&quot;</span> <span style="color: #ff0000">Height</span><span style="color: #0000ff">=&quot;100%&quot;</span> <span style="color: #ff0000">HtmlAccess</span><span style="color: #0000ff">=&quot;Enabled&quot;</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">  10:</span>         <span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">  11:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">  12:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">  13:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<h3>Step 4 – Pulling it all together</h3>
<p>Now if you build your Azure project in the normal way, and deploy it, you should hopefully find it is now reading the Silverlight XAP file from your Blob storage!</p>
<p>Next time you need to deploy your Silverlight application purely repeat Step 3 by uploading the new XAP file to the Blob storage.</p>
<h3>Summary &amp; Thanks</h3>
<p>Hopefully you now see how easy it is to separate your Silverlight project from your main Azure project and you are ready to start saving deployment time. There are however a few downsides with this approach.</p>
<p>The speed of loading the XAP file from the blob storage is visibly slower than loading it from your azure web role, this is something we are happy to live with for the benefits it gives us.</p>
<p>Also by overwriting the old Silverlight XAP file with a new one you have no way to test a new deployment, as you would with the azure project. We worked around this by having the XAP file Blob storage URL as a setting in our ServiceConfiguration.cscfg file so that we could upload a to a new file and once checked change the ServiceConfiguration.cscfg setting to point to the new file. This required us to code the host asp.net to read from the ServiceConfiguration.cscfg file which we can change quickly without a new Azure deployment.</p>
<p>Thanks for this solution have to go to Yi-Lun Luo on <a href="http://silverlight.net/forums/p/67600/166440.aspx" target="_blank">this forum post</a> which helped us solve our initial issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/06/hosting-silverlight-applications-in-azure-blob-storage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Web server backup: MozyPro vs JungleDisk</title>
		<link>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/03/web-server-backup-mozypro-vs-jungledisk/</link>
		<comments>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/03/web-server-backup-mozypro-vs-jungledisk/#comments</comments>
		<pubDate>Sun, 01 Mar 2009 19:48:44 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
		
		<category><![CDATA[hosting]]></category>

		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/03/web-server-backup-mozypro-vs-jungledisk/</guid>
		<description><![CDATA[We compare two popular online backup solutions to see which one works best for our web server]]></description>
			<content:encoded><![CDATA[<p><img title="logos" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="75" alt="logos" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/03/logos.gif" width="462" border="0" /> </p>
<p>For a while now I have been using online backup for both our online windows web server, office file server and home desktop. I’ve used a range of products from the very cheap <a href="http://www.carbonite.com" target="_blank">Carbonite</a> to the reasonably priced <a href="http://www.mozypro.com" target="_blank">MozyPro</a> and now the new comer <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a>. </p>
<p>In this post Ill compare <a href="http://www.mozypro.com" target="_blank">MozyPro</a> and <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> when used for backing up a web server. The comparison might be very different for desktop or network backups.</p>
<h3>Why use online backup?</h3>
<p>Our web server has been using <a href="http://www.mozypro.com" target="_blank">mozypro</a> for about a year now to host our clients web sites, as our hosting company still doesn’t offer their own backup solution.</p>
<p>Obviously backup of our databases and files is essential to ensure the safety of our clients data and websites so having a reliable and fast backup solution is essential. However remotely managing a tape backup solution, or paying a 3rd party to do this can be expensive, and getting data from tapes can take forever. </p>
<p>This is where internet backup solutions have become a sensible cost effective solution, files are remotely backed up and can be quickly and easily restore remotely with a few clicks.</p>
<h3>MozyPro</h3>
<p>As I said we are currently using <a href="http://www.mozypro.com" target="_blank">MozyPro</a> for our online windows web server backups. We backup about 12GB of data, with around 1GB file transfer a day and it costs around $120 USD per year. You basically pay <a href="http://www.mozypro.com" target="_blank">Mozy</a> for the disk space you use, there is no charge for setup or transfer of data.</p>
<p><a href="http://www.mozypro.com" target="_blank">MozyPro</a> installs a windows client which you use to select the files you wanted backed up, when and how to back them up and various other options for encryption and alerts. The features we really use are:</p>
<ul>
<li><font face="Arial">Scheduling backups to run at non peak traffic times</font> </li>
<li><font face="Arial">Throttling bandwidth during peak times (used if backups are still running during peak times)</font> </li>
<li><font face="Arial">Bit level changes – it only backups the part of the file you have changed</font> </li>
</ul>
<h4>The Good</h4>
<ul>
<li>Simple install and setup </li>
<li>Simple pricing structure and purchasing, expanding storage is pretty easy too </li>
<li>It “feels” like a single solution for backup </li>
<li>Can handle backup of sql databases using <dfn title="Volume Snapshop Service - allows taking manual or automatic backup copies or snapshots of a file or folder on a specific volume at a specific point in time">VSS</dfn> </li>
<li>Nice online admin area for checking backup status, clients, billing and restoring files </li>
</ul>
<h4>The Bad</h4>
<ul>
<li>If you have a large collection of files to backup the configuration client takes ages to load and you see this for at least 5 mins:      <br /><a href="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/03/mozyprohang.jpg"><img title="mozyprohang" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="245" alt="mozyprohang" src="http://www.thetechnologystudio.co.uk/technologyblog/wp-content/uploads/2009/03/mozyprohang-thumb.jpg" width="354" border="0" /></a>       <br /><a href="http://www.mozypro.com" target="_blank">MozyPro</a> have <a href="http://getsatisfaction.com/mozy/topics/configuring_your_mozy_backup_set_is_really_slow_when_you_have_lots_of_files_it_should_let_you_edit_your" target="_blank">suggested ways to reduce this</a> but I just don’t see why it shouldn’t work out of the box </li>
<li>For a European user, like us, the speed of uploads and downloads is not great. Im not aware of <a href="http://www.mozypro.com" target="_blank">Mozy</a> having an European data centres. </li>
<li>Backups just sometimes seem to hang and don’t work again without a reboot </li>
<li>No support for archiving backups (only available in enterprise which is an entirely different product) </li>
<li>Its not badly priced but could be cheaper </li>
</ul>
<h3>JungleDisk</h3>
<p><font face="Trebuchet MS"><a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> have a very different business model to <a href="http://www.mozypro.com" target="_blank">MozyPro</a>, and the other online providers. They basically just sell you the backup software ($20 USD) and then you use (and pay separately) Amazons AWS online storage system to actually store your backups.</font></p>
<p><font face="Trebuchet MS">At first this seems a bit strange, and a step back from <a href="http://www.mozypro.com" target="_blank">MozyPro</a>, but once you look into it more things make a bit more sense. Essentially rather than creating their own storage system and having all the nightmares of supporting it <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> are using the incredibly well designed and supported Amazon AWS system.</font></p>
<p><font face="Trebuchet MS">We have been using <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> on our office fileserver for about 3 months.</font></p>
<h4>The Good</h4>
<ul>
<li><font face="Arial">Its cheaper than <a href="http://www.mozypro.com" target="_blank">MozyPro</a>, we backup 40GB total (about 1GB transferred per day) for $13 USD per month ($130 per year) so half the price of <a href="http://www.mozypro.com" target="_blank">MozyPro</a></font> </li>
<li><font face="Arial">Its faster to transfer files than <a href="http://www.mozypro.com" target="_blank">MozyPro</a> as Amazon have a European data centre</font> </li>
<li><font face="Arial">You can use multiple data centres for ultra redundancy</font> </li>
<li><font face="Arial">The backup client software is quick to load and easy to use</font> </li>
<li><font face="Arial">Supports configurable archive backups allowing you to keep more than one version of a backed up file</font> </li>
<li><font face="Arial">Its never hung once during backup</font> </li>
<li><font face="Arial">Also supports backup of SQL with <dfn title="Volume Snapshop Service - allows taking manual or automatic backup copies or snapshots of a file or folder on a specific volume at a specific point in time">VSS</dfn></font> </li>
</ul>
<h3>The Bad</h3>
<ul>
<li>Its not a “single solution” as it involved 2 companies which may make support more tricky </li>
<li>The Amazon AWS pricing structure is really complicated with charges for storage, transfer and querying the data. This can initially be daunting when working out your monthly costs </li>
<li>Bit level changes – these are available (in selected data centres) as an extra called <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> plus for $1 per month, would be simpler if just always included but I guess this gives extra flexibility if you don’t need it. </li>
<li>Overall its just not a simple a solution, but does give the ultimate in flexibility </li>
</ul>
<h3>And the winner is….</h3>
<p><font face="Trebuchet MS">Obviously this is not a simple competition and there are good reasons for using both solutions and I’d recommend you trying both for yourself before deciding.</font></p>
<p><font face="Trebuchet MS">Overall we will probably be moving all our backups to <a href="http://www.jungledisk.com" target="_blank">JungleDisk</a> unless we find a new hosting provider with a better local backup solution. The main reasons are speed of transfers, reliability and value for money.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thetechnologystudio.co.uk/technologyblog/index.php/2009/03/web-server-backup-mozypro-vs-jungledisk/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
