<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9 - Entries tagged with Windows  Phone</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Tags/windows-phone/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9 - Entries tagged with Windows  Phone</title>
      <link>http://channel9.msdn.com/Tags/windows-phone</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Tags/windows-phone</link>
    <language>en</language>
    <pubDate>Mon, 20 May 2013 17:38:26 GMT</pubDate>
    <lastBuildDate>Mon, 20 May 2013 17:38:26 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>24</c9:totalResults>
    <c9:pageCount>1</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>MissionControl - A Flexible API for Remote Device Control</title>
      <description><![CDATA[<p>In a race to optimize everything, developers often go to extremes to build software that performs routine tasks. MissionControl is a system that allows users to program a control center that stores interfaces with attached hardware sensors, allowing the users to control any other devices that can be activated via the underlying protocol. For demo purposes, the MissionControl build at this point is compatible with the Phidgets IR hybrid sensor.</p><p>The system has two core components:</p><ul><li>A server application, which is a Win32 console application that handles incoming queries and returns data to the connected clients. This application runs on the desktop machine with the connected sensor. </li><li>The Windows Phone application that sends requests to the target server and can trigger a variety of pre-programmed commands. </li></ul><h1>The Basics</h1><h3>Hardware and Communication Infrastructure</h3><p>One of the most important parts of the project is the signal capture and replication hardware. For the purposes of this project, I decided to use a dual-mode <a href="http://www.phidgets.com/products.php?product_id=1055_0">Phidgets IR sensor</a>. It supports both IR code capture and subsequent replication. From a user’s perspective, this device also eliminates a substantial code-learning overhead as well as the potential error rate. Instead of searching for a device-specific hexadecimal sequence that later has to be transformed in a working IR code, the user simply has to point his remote control at the sensor and press the button that he wants accessible from a mobile device. Given that the capturing software is running on the target machine, once the sensor detects that a code can be repeated within an acceptable precision range, it will be automatically captured and stored, with all required transformations worked out in the backend using the free Phidgets SDK.</p><h3><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image0026.jpg"><img title="clip_image002" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image002_thumb3.jpg" alt="clip_image002" width="368" height="246" border="0"></a></h3><p>Even though I can, I don’t have to handle the binary code content received through the sensor—the Phidgets .NET libraries carry built-in types that contain all the processed metadata that I will discuss later in this article.</p><p>This sensor is connected through a USB port to a machine that acts as a communication gateway. This server should have port 6169 open for inbound connections.</p><p><strong>NOTE:</strong> <em>The port number can be changed, but you have to keep it consistent between your server and client applications.</em></p><p>The communication between the phone and the computer running the client is performed via a TCP channel—<a href="http://en.wikipedia.org/wiki/Internet_socket">sockets</a> are used to perform the initial connections and serialized data transfer. You can see the generalized data flow between the devices that are involved in the procedure in the graphic below:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image0046.jpg"><img title="clip_image004" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image004_thumb3.jpg" alt="clip_image004" width="520" height="289" border="0"></a></p><p>The server (desktop client) handles the local storage and release of all incoming IR codes. The mobile client has to know the location of the server—once specified and confirmed, it can send one of the pre-defined commands to it and either query the server for existing command groups (sets) or invoke one of the stored IR codes. When I pass data between devices, I use JSON for the serializable components. The data is also processed before being sent in order to speed-up the process—for example, on the server side the sets are serialized together with the associated codes. Like this:</p><p><pre class="brush: js">
[
{
    &quot;Name&quot;:&quot;batman&quot;,
    &quot;IsList&quot;:false,
    &quot;Commands&quot;:[
    {
        &quot;Name&quot;:&quot;test command&quot;,
        &quot;Code&quot;:{
            &quot;Mask&quot;:{
                &quot;BitSize&quot;:12,
                &quot;CodeData&quot;:&quot;AAA=&quot;
            },
            &quot;BitSize&quot;:12,
            &quot;Encoding&quot;:2,
            &quot;CarrierFrequency&quot;:38000,
            &quot;DutyCycle&quot;:50,
            &quot;Gap&quot;:44761,
            &quot;Header&quot;:[
            2374,
            606
            ],
            &quot;CodeData&quot;:&quot;DJA=&quot;,
            &quot;MinRepeat&quot;:5,
            &quot;One&quot;:[
            1189,
            606
            ],
            &quot;Repeat&quot;:null,
            &quot;Trail&quot;:0,
            &quot;Zero&quot;:[
            582,
            606
            ]
        }
    },
    {
        &quot;Name&quot;:&quot;turn off&quot;,
        &quot;Code&quot;:{
            &quot;Mask&quot;:{
                &quot;BitSize&quot;:12,
                &quot;CodeData&quot;:&quot;AAA=&quot;
            },
            &quot;BitSize&quot;:12,
            &quot;Encoding&quot;:2,
            &quot;CarrierFrequency&quot;:38000,
            &quot;DutyCycle&quot;:50,
            &quot;Gap&quot;:44770,
            &quot;Header&quot;:[
            2360,
            613
            ],
            &quot;CodeData&quot;:&quot;DJA=&quot;,
            &quot;MinRepeat&quot;:5,
            &quot;One&quot;:[
            1169,
            613
            ],
            &quot;Repeat&quot;:null,
            &quot;Trail&quot;:0,
            &quot;Zero&quot;:[
            585,
            613
            ]
        }
    }
    ]
}
]
</pre></p><p>The inherent problem with the JSON data above is the fact that the phone client does not need the information related to the code binary sequence and all the metadata that goes with it. So it is effectively stripped down and reduced to the names of the sets (when a list of sets is requested) and commands (when a list of commands is requested).</p><h3>The Data Model</h3><p>As you saw from the description above, the server organizes individual infrared codes in sets. A single set is a bundle of codes that may or may not be related to each other—ultimately, this is the user’s decision. A good example of using sets is organizing IR commands by rooms, devices or code types. Each set has a unique name on the server, therefore eliminating the possibility of a request conflict.</p><p>Each set stores individual commands built around the <strong>Command</strong> model:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API.Models 
{ 
    public class Command 
    { 
        public Command() 
        { 
        } 
    
    public string Name { get; set; }     
    public SerializableIRCode Code { get; set; } 
    } 
}
</pre></p><p>Despite the obvious <strong>Name</strong> property, you can see that I am using a <strong>SerializableIRCode</strong> instance that is specific to each model. Before going any further, I need to mention that the Phidgets SDK offers the <strong>IRLearnedCode</strong> model to store code contents. I could have used it instead, but there is an issue that prevents me from doing that—there is no public constructor defined for <strong>IRLearnedCode</strong>, therefore there is no way to serialize it, either with the built-in .NET serialization capabilities or JSON.NET, which I am using in the context of the project.</p><p>Instead, I have this:</p><p><pre class="brush: csharp">
using Phidgets; 
namespace Coding4Fun.MissionControl.API.Models 
{     
    public class SerializableIRCode     
    {         
        public SerializableIRCode()         
        { 
            
        } 
        
    IRLearnedCode code;         
    public ToggleMask Mask { get; set; } 
    public int BitSize { get; set; } 
    public Phidgets.IRCodeInfo.IREncoding Encoding { get; set; } 
    public int CarrierFrequency { get; set; } 
    public int DutyCycle { get; set; } 
    public int Gap { get; set; } 
    public int[] Header { get; set; } 
    public byte[] CodeData { get; set; } 
    public int MinRepeat { get; set; } 
    public int[] One { get; set; } 
    public int[] Repeat { get; set; } 
    public int Trail { get; set; } 
    public int[] Zero { get; set; } 
    }     
}
</pre></p><p>It is an almost identical 1:1 copy of the original class, storing both the layout of the IR code and additional information related to its replication mechanism. You can learn more about each property listed in the model above by reading the <a href="http://www.phidgets.com/docs/IR_Remote_Control_Primer">official document on the topic</a>.</p><p><strong>ToggleMask</strong>, the identity bit carrier that helps marking the code as repeated or not, is also implemented through a built-in Phidgets SDK model, and it has the same problem as <strong>IRLearnedCode</strong>. I implemented this model to replace it in the serializable code:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API.Models 
{ 
    public class ToggleMask 
    { 
        public ToggleMask() 
        { 
            
        } 

    public int BitSize { get; set; }         
    public byte[] CodeData { get; set; } 
    } 
}
</pre></p><p>I also needed an easy way to store all sets at once and carry all associated codes in a single instance retrieved from the storage. Here is the <strong>Set</strong> class:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API.Models 
{     
    public class Set 
    { 
        public Set() 
        { 
            Commands = new List&lt;Command&gt;(); 
        } 
        
    public string Name { get; set; } 
    public bool IsList { get; set; } 
    public List&lt;Command&gt; Commands { get; set; } 
    } 
}
</pre></p><p>Notice that there is an <strong>IsList</strong> flag that allows me to specify how to display this specific list on the connecting device. This adds some level of flexibility for situations where the user wants to build a virtual remote for closely-related keys, such as digits. With that in mind, displaying those as a list might be inconvenient, wasting visual space on the client. But if the flag is set to false, the list can be displayed as a pad.</p><p>Also, when the server performs the data exchange, it provides a single “envelope” that allows the connecting device to easily understand what the server is trying to do:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API.Models 
{     
    public class ServerResponse     
    {     
    public string Identifier { get; set; }     
    public string Marker { get; set; }     
    public string Content { get; set; }     
    } 
}
</pre></p><p>The <strong>Identifier</strong> property carries the server IP address. That way, when a device receives a response, it is able to either accept it, because it knows that a response is requested from a target location, or discard it because the user is no longer using the specific server.</p><p><strong>Marker</strong> carries the command type of the sent command, therefore giving the Windows Phone application a hint as to what to do with the data. The server can send the following commands:</p><ul><li><em>SET_LIST</em> – returns the list of sets that are currently available on the server. </li><li><em>SET_COMMANDS<strong>:</strong>SET_NAME<strong>:</strong>IS_LIST</em> – returns the list of commands that are associated with a given set that is currently stored on the server. </li><li><em>NOTIFICATION</em> – send a simple notification to the client; no further action is required. </li></ul><p>Last but not least, <strong>Content</strong> is used to push the necessary data that is associated with the given <strong>Marker</strong>. It can be either a JSON-based string that lists the sets or commands, or a plain-text message that is used as an alert for the end-user.</p><h1>Server Architecture</h1><p>The server is the only component of this entire system that does all the heavy lifting. It learns commands, stores them and then generates new IR signal requests, as controlled from any of the connected clients. Let’s take a closer look at what happens behind the scenes—to start, I am going to document the network infrastructure.</p><h3>The Network Layer</h3><p>In order to be a reliable system, the server needs to be always ready to accept an incoming connection. For that purpose, it is possible to use the <a href="http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx">TcpListener</a> class—an “always on” receiver that can handle incoming TCP connections. I integrated it in my <strong>CoreStarter</strong> class that is used to start the listener when the application is launched:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API 
{ 
    public class CoreStarter 
    { 
        static TcpListener listener; 
        
        public static void LaunchSocket()     
        {     
            Console.WriteLine(&quot;Starting socket server on port {0}...&quot;, Constants.DEFAULT_PORT); 
            listener = new TcpListener(NetworkHelper.GetLocalIPAddress(), Constants.DEFAULT_PORT); 
            listener.Start(); 
            
            for (int i = 0; i &lt; Constants.MAX_CONCURRENT_CLIENTS; i&#43;&#43;) 
            {     
                Thread socketThread = new Thread(new ThreadStart(ListenForData));     
                socketThread.Start(); 
            } 
        } 
        
        private static void ListenForData() 
        { 
            Console.WriteLine(&quot;Listener thread started.&quot;); 

            while (true) 
            { 
                Socket acceptedSocket = listener.AcceptSocket(); 
                using (MemoryStream coreStream = new MemoryStream()) 
                {     
                    try 
                    { 
                        Console.WriteLine(&quot;Incoming connection: {0}&quot;, acceptedSocket.RemoteEndPoint); 
                        
                        using (Stream sourceStream = new NetworkStream(acceptedSocket)) 
                        {     
                            sourceStream.ReadTimeout = Constants.SOCKET_READ_TIMEOUT; 
                            
                            byte[] buffer = new byte[Constants.DEFAULT_BUFFER_SIZE]; 
                            int i; 
                
                            while ((i = sourceStream.Read(buffer, 0, buffer.Length)) != 0) 
                            { 
                                coreStream.Write(buffer, 0, i); 
                            } 
                        } 
                    } 
                    catch 
                    { 
                        string data = Encoding.ASCII.GetString(coreStream.ToArray()); 
        
                        CommandHelper.InterpretCommand(data, acceptedSocket.RemoteEndPoint.ToString()); 
                    } 
                } 
            } 
        } 
    } 
}
</pre></p><p>When <strong>LaunchSocket</strong> is called, the listener is activated on the current machine. As I mentioned above, the port number can be arbitrarily assigned, but has to be consistent between connecting apps in order for the TCP links to be established. Because I expect that more than one device will be connecting to the service at a time, the listener is set as active across a constant number of threads.</p><p><strong>NOTE:</strong> By default, a there is a maximum limit of 5 simultaneous clients. Although this number can be adjusted, be aware of the requirements of each environment in which a limited number of potential devices can connect. Even though the performance footprint of each thread is minimal, it can have a negative effect if used in unnecessarily large instances.</p><p><strong>ListenForData</strong> is used to read the incoming stream. When an inbound connection is accepted, the data is read with the help of a fixed content buffer. Then a read timeout is specified to prevent situations where the stream was completely read but the application still waits to pull non-existent data. Once the timeout milestone is hit, an exception is thrown, which marks the end of the stream—at this point, the plain text data that was received (remember that both the server and client exchange text data only) is passed to the command interpreter—<strong>CommandHelper</strong>, with a reference to the source of the command.</p><p>The commands from the device are passed as serialized key-value pairs (<a href="http://msdn.microsoft.com/en-us/library/5tbh8a42.aspx">KeyValuePair&lt;T, T&gt;</a>), the key being the command with any possible suffixes, and the value being the contents of the command itself that helps the server identify the specific item in the local storage.</p><p><strong>InterpretCommand</strong>,in this case, does three things sequentially:</p><ol><li>Deserialize the incoming string and create a <strong>KeyValuePair&lt;string,string&gt;</strong> instance. </li><li>Process the command and check whether it is recognizable. </li><li>Send a response to the client, if deemed necessary by the command type. </li></ol><p>The serialization and deserialization is done via <a href="http://james.newtonking.com/projects/json-net.aspx">JSON.NET</a>. You can install this package in your console managed Win32 project and the Windows Phone application project via NuGet:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image0056.gif"><img title="clip_image005" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image005_thumb3.gif" alt="clip_image005" width="553" height="65" border="0"></a></p><p>The deserialization step is as simple as one line of C# code:</p><p><pre class="brush: csharp">
KeyValuePair&lt;string, string&gt; result = JsonConvert.DeserializeObject&lt;KeyValuePair&lt;string, string&gt;&gt;(rawCommand.Remove(0, rawCommand.IndexOf('{')));
</pre></p><p>The string is sanitized to ensure that only JSON content is being passed to the serializer.</p><p>Because of a relatively limited command set, I can put together the entire interpretation stack like this:</p><p><pre class="brush: csharp">
// Get the initial list of sets on the target server
if (result.Key == Constants.COMMAND_INIT)
{
    SendSets(sourceLocation);
}
// Create a new set on the target server
else if (result.Key.Contains(Constants.COMMAND_CREATE_SET))
{
    CreateSet(result, sourceLocation);
    SendSets(sourceLocation);
}
// Get the commands that are associated with a given set.
else if (result.Key == Constants.COMMAND_GET_COMMANDS)
{
    SendCommands(result.Value, sourceLocation);
}
// The client requested the server to learn a new command.
else if (result.Key.Contains(Constants.COMMAND_LEARN_COMMAND))
{
    LearnCommand(result, sourceLocation);
}
// The client requested one of the commands to be executed on the 
// target server.
else if (result.Key.Contains(Constants.COMMAND_EXECUTE))
{
    ExecuteCommand(result);
}
// The client has requested a set to be deleted from the target server.
else if (result.Key == Constants.COMMAND_DELETE_SET)
{
    DeleteSet(result.Value);
    SendSets(sourceLocation);
}
// The client has requested a set to be deleted from the target server.
else if (result.Key.Contains(Constants.COMMAND_DELETE_COMMAND))
{
    DeleteCommand(result);
    SendCommands(result.Key.Split(new char[] { ':' })[1], sourceLocation);
}
</pre></p><p>All commands are constants, declared in the local helper class:</p><p><pre class="brush: csharp">
public const string COMMAND_INIT = &quot;INIT&quot;; 

public const string COMMAND_CREATE_SET = &quot;CREATE_SET&quot;; 

public const string COMMAND_GET_COMMANDS = &quot;GET_COMMANDS&quot;; 

public const string COMMAND_LEARN_COMMAND = &quot;LEARN_COMMAND&quot;; 

public const string COMMAND_EXECUTE = &quot;EXECUTE&quot;; 

public const string COMMAND_DELETE_SET = &quot;DELETE_SET&quot;;
public const string COMMAND_DELETE_COMMAND = &quot;DELETE_COMMAND&quot;;
</pre></p><p>Notice that these are not the commands that the server sends back, but rather the commands it receives from connecting Windows Phone devices.</p><p>Let’s now take a look at the breakdown for each command.</p><p><strong>SendSets:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Send the list of sets to the client that requested those. 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;sourceLocation&quot;&gt;The location of the requesting client.&lt;/param&gt; 
private static void SendSets(string sourceLocation) 
{ 
    Console.WriteLine(&quot;Received an initial set query from {0}&quot;, sourceLocation);     
    ServerResponse response = new ServerResponse(); 
    response.Marker = &quot;SET_LIST&quot;; 
    response.Content = JsonConvert.SerializeObject(StorageHelper.GetRawSetNames()); 
    response.Identifier = NetworkHelper.GetLocalIPAddress().ToString(); 
    NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response)); 
    Console.WriteLine(&quot;Sent the set list to {0}&quot;, sourceLocation);     
}
</pre></p><p>When this command is received, the server does not have to do much processing. It is only invoked when the client establishes the initiating link and needs to know what possible sets it can get from the target machine. The request is logged in the console and a server response is prepared that contains a serialized list of set names, which is later serialized as well and sent back to the source machine location.</p><p><strong>StorageHelper</strong> and <strong>NetworkHelper</strong> will be documented later in this article.</p><p><strong>CreateSet:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Create a new set and store it on the local server. 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;result&quot;&gt;The original deserialized command.&lt;/param&gt; 
/// &lt;param name=&quot;sourceLocation&quot;&gt;The location of the requesting client.&lt;/param&gt; 
private static void CreateSet(KeyValuePair&lt;string,string&gt; result, string sourceLocation) 
{ 
    bool isSuccessful = false; 
    string[] data = result.Key.Split(new char[] { ':' }); 
    
    Console.WriteLine(&quot;There is an attempt to create the {0} set from {1}.&quot;, result.Value, sourceLocation); 
    
    if (data[1].ToLower() == &quot;list&quot;) 
        isSuccessful = StorageHelper.AddSet(result.Value); 
    else 
        isSuccessful = StorageHelper.AddSet(result.Value, false); 
    
    if (isSuccessful) 
        Console.WriteLine(&quot;The {0} set was successfully created.&quot;, result.Value); 
    else 
        Console.WriteLine(&quot;Something happened and the {0} set was not created.&quot;, result.Value);     
}
</pre></p><p>When a mobile device attempts to create a new set on the server, it sends a command in the following format:</p><p><strong>CREATE_SET</strong>:<strong>list/pad</strong>, <strong>SET_NAME</strong></p><p>CreateSet will get the type of the set that was created, will check whether a set with the same name already exists and will either create it or ignore the command altogether. No notification is sent to the connecting device, but either the failure or the success of the command is registered in the local console.</p><p><strong>SendCommands:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt;
/// Send a list of commands that are associated with the pushed set.
/// &lt;/summary&gt;
/// &lt;param name=&quot;setName&quot;&gt;The original deserialized command.&lt;/param&gt;
/// &lt;param name=&quot;sourceLocation&quot;&gt;The location of the requesting client.&lt;/param&gt;
private static void SendCommands(string setName, string sourceLocation)
{
    Console.WriteLine(&quot;There was a request to get the commands for the {0} set from {1}.&quot;, setName, sourceLocation);
    
    bool isList = StorageHelper.IsSetAList(setName);
    
    ServerResponse response = new ServerResponse();
    response.Marker = string.Format(&quot;SET_COMMANDS:{0}:{1}&quot;, setName, isList);
    response.Identifier = NetworkHelper.GetLocalIPAddress().ToString();
    response.Content = JsonConvert.SerializeObject(StorageHelper.GetRawCommandNames(setName));
    
    NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));
    
    Console.WriteLine(&quot;Command list for the {0} set were sent to {1}.&quot;, setName, sourceLocation);
}
</pre></p><p>Commands are sent in the same manner as sets—once the set is recognized, the names of the associated commands are retrieved and serialized inside a <strong>ServerResponse</strong> instance and then pushed back to the requesting device.</p><p><strong>LearnCommand:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Learn a new command and store it on the target server. 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;result&quot;&gt;The original deserialized command.&lt;/param&gt; 
/// &lt;param name=&quot;sourceLocation&quot;&gt;The location of the requesting client.&lt;/param&gt; 
private static void LearnCommand(KeyValuePair&lt;string,string&gt; result, string sourceLocation) 
{     
    Console.WriteLine(&quot;[!] Server in COMMAND LEARNING MODE! Point the remote towards the sensor and send a command.&quot;); 
    
    string[] data = result.Key.Split(new char[] { ':' });     
    var set = StorageHelper.GetSingleSet(StorageHelper.GetSets(), data[1]); 
    
    if (set != null)     
    {     
        if ((from c in set.Commands where c.Name == result.Value select c).FirstOrDefault() != null) 
        {     
            Console.WriteLine(&quot;Cannot learn command {0} for the following set: {1}. Command already exists.&quot;, data[1], result.Value); 
            
            ServerResponse response = new ServerResponse();     
            response.Marker = &quot;NOTIFICATION&quot;;     
            response.Identifier = NetworkHelper.GetLocalIPAddress().ToString(); 
            response.Content = &quot;We could not save the following command - &quot; &#43; result.Value &#43; &quot;. It already exists in the set.&quot;; 
            
            NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response));     
        } 
        else 
        { 
            if (sensor == null) 
                sensor = new IR(); 
            
            sensor.open(-1); 

            sensor.waitForAttachment(); 
    
            sensor.Learn &#43;= (sender, args) =&gt; 
            { 
                Console.WriteLine(&quot;[!] Server learned the command and is no longer in COMMAND LEARNING MODE.&quot;); 
                IRLearnedCode code = args.LearnedCode; 
                code.CodeInfo.MinRepeat = 5; 
            
                Command command = new Command(); 
                command.Name = result.Value; 
                command.Code = IRCodeWorker.GetSerializableIRCode(code); 
                
                StorageHelper.AddCommand(command, set.Name); 
                
                ServerResponse response = new ServerResponse(); 
                response.Marker = &quot;NOTIFICATION&quot;; 
                response.Identifier = NetworkHelper.GetLocalIPAddress().ToString(); 
                response.Content = &quot;The following command has been stored: &quot; &#43; result.Value; 
                
                NetworkHelper.SendData(sourceLocation, JsonConvert.SerializeObject(response)); 
            }; 
        } 
    } 
}
</pre></p><p>Once a request was received that the server needs to learn a new command, an initial verification is done to make sure that the requested command name and set are not already taken. If neither the command nor the set exist, both will be created.</p><p>After the basic setup is complete, the IR sensor is activated and will be waiting for the command to be learned. The way it works is quite simple – the sensor will remain in learning mode until the point where it recognizes a command without error, being 100% sure that it can be reproduced internally. You will need to point your remote towards the sensor and hold the button you want captured for one or two seconds in order for the command to be learned.</p><p><strong>NOTE:</strong> To ensure that a proper transmission is done, I manually set the minimal repeat value to 5. This is the number of times the sensor will fire the same code towards the target. That is the optimal value for a target device to receive the code if the remote is pointed directly at it without necessarily triggering the same command twice or more.</p><p>After the command is learned, the code is processed and transformed into a serializable instance. The connecting client is then notified about whether the command was learned.</p><p><strong>ExecuteCommand:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Execute one of the commands currently stored on the local server. 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;result&quot;&gt;The original deserialized command.&lt;/param&gt; 
private static void ExecuteCommand(KeyValuePair&lt;string,string&gt; result) 
{ 
    string[] data = result.Key.Split(new char[] { ':' }); 

    var set = StorageHelper.GetSingleSet(StorageHelper.GetSets(), data[1]); 
    
    if (set != null) 
    {     
        var command = StorageHelper.GetSingleCommand(StorageHelper.GetCommands(set.Name), result.Value); 

        IRLearnedCode code = IRCodeWorker.GetLearnedCode(command.Code); 
        
        if (sensor == null) 
            sensor = new IR(); 

        sensor.open(-1); 
        sensor.waitForAttachment(); 
        sensor.transmit(code.Code, code.CodeInfo); 
        sensor.close(); 
    } 
}
</pre></p><p>Command execution relies on the hardware sensor. The phone sends a command execution request in the following format:</p><p><strong>EXECUTE</strong>:<strong>SET_NAME</strong>, <strong>COMMAND_NAME</strong></p><p>Once the command is parsed out and found in the local storage, the IR code is transformed back to a model that is recognizable by the Phidgets SDK and transmitted towards the location where the sensor is pointed at the time of the execution.</p><p><strong>DeleteSet:</strong></p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Delete a single set and all the associated commands 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;target&quot;&gt;The name of the set.&lt;/param&gt; 
private static void DeleteSet(string target) 
{ 
    var sets = StorageHelper.GetSets(); 
    var targetSet = StorageHelper.GetSingleSet(sets, target); 
    
    if (targetSet != null) 
    { 
        StorageHelper.RemoveSet(sets, targetSet); 
    } 
}
</pre></p><p>When deleting a set, only the name of the set should be specified. The user will get a warning on the client side that requires a confirmation of the deletion. The server will blindly execute the command.</p><p><strong>DeleteCommand:</strong></p><p><pre class="brush: csharp">
private static void DeleteCommand(KeyValuePair&lt;string, string&gt; result)
{
    var sets = StorageHelper.GetSets();
    string setName = result.Key.Split(new char[] {':'})[1];
    var targetSet = StorageHelper.GetSingleSet(sets, setName);
    var command = (from c in targetSet.Commands where c.Name == result.Value select c).FirstOrDefault();
    
    if (command != null)
    {
        targetSet.Commands.Remove(command);
        StorageHelper.SerializeSets(sets);
    }
}
</pre></p><p>Not only can the user remove entire sets, but he can also target specific commands from a given set. Once a <strong>DELETE_COMMAND</strong> directive is recognized, the set name is parsed out from the original string, that follows the <strong>DELETE_COMMAND:SET_NAME, COMMAND_NAME</strong> format, and a simple LINQ query extracts the command instance, removes it and stores the set content on the local hard drive.</p><p>Notice that for some commands, particularly for set creation, deletion and command deletion, the server will return a list of the remaining items. The contents will be automatically updated on the devices, which will be waiting for that response. This measure was deliberately introduced to minimize the chances of a user triggering a command that was already deleted or trying to query a previously removed set.</p><h3>Transforming Codes</h3><p>You might have noticed that I am using <strong>IRCodeWorker.GetSerializableCodeType</strong> to transform a Phidgets SDK native IR code model into a serializable one. This is a helper function that performs a field copy of the existing object. Because of the differences in the model structure, it has to be done manually:</p><p><pre class="brush: csharp">
public static SerializableIRCode GetSerializableIRCode(IRLearnedCode code) 
{ 
    SerializableIRCode sCode = new SerializableIRCode();     
    sCode.BitSize = code.Code.BitCount;     
    sCode.Encoding = code.CodeInfo.Encoding;     
    sCode.CarrierFrequency = code.CodeInfo.CarrierFrequency;     
    sCode.CodeData = code.Code.Data;     
    sCode.DutyCycle = code.CodeInfo.DutyCycle;     
    sCode.Gap = code.CodeInfo.Gap;     
    sCode.Header = code.CodeInfo.Header;     
    sCode.MinRepeat = 5;     
    sCode.One = code.CodeInfo.One;     
    sCode.Repeat = code.CodeInfo.Repeat;     
    sCode.Trail = code.CodeInfo.Trail;     
    sCode.Zero = code.CodeInfo.Zero;     
    sCode.Mask = new ToggleMask()     
    {         
        BitSize = code.CodeInfo.ToggleMask.BitCount,         
        CodeData = code.CodeInfo.ToggleMask.Data         
    }; 
    
    return sCode;     
}
</pre></p><p>The reverse process is easier because I can pass each of the existing properties to the <strong>IRCodeInfo</strong> constructor. The only difference is the fact that I need to use Reflection to create an instance of <strong>IRLearnedCode</strong> because there is no public constructor defined and a dynamic object has to be created:</p><p><pre class="brush: csharp">
internal static IRLearnedCode GetLearnedCode(SerializableIRCode serializableIRCode) 
{ 
    IRCode code = new IRCode(serializableIRCode.CodeData, serializableIRCode.BitSize);     
    IRCodeInfo info = new IRCodeInfo(serializableIRCode.Encoding, serializableIRCode.BitSize, serializableIRCode.Header,     
    serializableIRCode.Zero, serializableIRCode.One, serializableIRCode.Trail, serializableIRCode.Gap, serializableIRCode.Repeat, 
serializableIRCode.MinRepeat, serializableIRCode.Mask.CodeData, IRCodeInfo.IRCodeLength.Constant,
serializableIRCode.CarrierFrequency, serializableIRCode.DutyCycle); 
    
    object[] parameters = new object[] { code, info }; 
    
    BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Instance; 
    object instantType = Activator.CreateInstance(typeof(IRLearnedCode), flags, null, parameters, null); 

    return (IRLearnedCode)instantType; 
}
</pre></p><h3>Command and Set Management</h3><p>Looking back at the code that I put together for the command interpreter, there is one class that does all local content manipulation—<strong>StorageHelper</strong>. This is a simple class that performs LINQ queries on set as well as command collections, and makes sure that all the changes are preserved in the <strong>sets.xml</strong> file in the application folder that is used as the only storage place for all the content that is being manipulated by the server.</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API.Helpers 
{ 
    public class StorageHelper 
    { 
        
        /// &lt;summary&gt; 
        /// Lists all available sets that are currently stored on the server.         
        /// &lt;/summary&gt; 
        /// &lt;returns&gt;List of sets on the machine.&lt;/returns&gt;         
        internal static List&lt;Set&gt; GetSets()         
        {             
            List&lt;Set&gt; sets = null; 
            
            string rawContent = GetRawSets();             
            sets = JsonConvert.DeserializeObject&lt;List&lt;Set&gt;&gt;(rawContent); 
            
            return sets;             
        } 
        
        /// &lt;summary&gt;         
        /// Returns the list of commands that are associated with the given set.         
        /// &lt;/summary&gt;         
        /// &lt;param name=&quot;setName&quot;&gt;The name of the target set.&lt;/param&gt;         
        /// &lt;returns&gt;List of commands associated with the given set.&lt;/returns&gt;         
        internal static List&lt;Command&gt; GetCommands(string setName)         
        {             
            List&lt;Command&gt; commandList = null; 
            
            var sets = GetSets(); 
            
            Set singleSet = null;             
            if (sets != null)             
                singleSet = (from c in sets where c.Name == setName select c).FirstOrDefault(); 
            
            if (singleSet != null)         
            {         
                commandList = singleSet.Commands;     
            } 
            
            return commandList; 
        } 
        
        /// &lt;summary&gt;     
        /// Gets the list of names for the commands in the requested set. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;setName&quot;&gt;The name of the target set.&lt;/param&gt; 
        /// &lt;returns&gt;List of commands associated with the given set.&lt;/returns&gt; 
        internal static List&lt;string&gt; GetRawCommandNames(string setName) 
        { 
            List&lt;Command&gt; commandList = GetCommands(setName); 
            
            List&lt;string&gt; stringSet = null; 
            
            if (commandList != null) 
            {     
                stringSet = commandList.Select(x =&gt; x.Name).ToList();     
            } 
            
            return stringSet;     
        } 
        
        /// &lt;summary&gt; 
        /// Get the list of names for all sets on the local server. 
        /// &lt;/summary&gt; 
        /// &lt;returns&gt;List of sets on the machine.&lt;/returns&gt; 
        internal static List&lt;string&gt; GetRawSetNames() 
        {     
            List&lt;Set&gt; sets = GetSets(); 
            
            List&lt;string&gt; stringSet = null; 
    
            if (sets != null) 
            {     
                stringSet = sets.Select(x =&gt; x.Name).ToList();     
            } 
            
            return stringSet; 
        } 
        
        /// &lt;summary&gt; 
        /// Get the raw string contents of sets.xml. Should only be used in the 
        /// context of this class. 
        /// &lt;/summary&gt; 
        /// &lt;returns&gt;JSON string representing stored sets and commands.&lt;/returns&gt; 
        internal static string GetRawSets() 
        { 
            string sets = string.Empty; 
            
            if (File.Exists(&quot;sets&quot;)) 
            { 
                using (StreamReader reader = new StreamReader(File.OpenRead(&quot;sets&quot;))) 
                { 
                    sets = reader.ReadToEnd(); 
                } 
            } 
            else 
            { 
                FileStream stream = File.Create(&quot;sets.xml&quot;); 
                
                stream.Close();     
            } 
            
            return sets; 
        } 
        
        /// &lt;summary&gt; 
        /// Check whether a set is marked with a IsList flag. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;setName&quot;&gt;The name of the target set.&lt;/param&gt; 
        /// &lt;returns&gt;TRUE - set is a list. FALSE - set is not a list.&lt;/returns&gt; 
        internal static bool IsSetAList(string setName) 
        { 
            bool isList = true; 
            var sets = GetSets(); 
            Set set = null; 

            if (sets != null) 
                set = (from c in sets where c.Name == setName select c).FirstOrDefault(); 
            
            if (set != null) 
                isList = set.IsList; 
            
            return isList;     
        } 
        
        /// &lt;summary&gt; 
        /// Serialize the set collection to sets.xml 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;sets&quot;&gt;Collection to be serialized.&lt;/param&gt; 
        /// &lt;returns&gt;true if sets are serialized.&lt;/returns&gt; 
        private static bool SerializeSets(List&lt;Set&gt; sets) 
        { 
            try 
            { 
                using (StreamWriter writer = new StreamWriter(&quot;sets.xml&quot;, false)) 
                {     
                    string data = JsonConvert.SerializeObject(sets); 
            
                    writer.Write(data); 
                } 
                
                return true; 
            } 
            catch 
            {     
                return false;     
            } 
        } 
        
        /// &lt;summary&gt; 
        /// Add a new set to the existing global set collection. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;name&quot;&gt;Set name.&lt;/param&gt; 
        /// &lt;returns&gt;true if successfully added set.&lt;/returns&gt; 
        internal static bool AddSet(string name, bool isList = true) 
        { 
            var sets = GetSets(); 

            if (sets == null) 
                sets = new List&lt;Set&gt;(); 
            
            var singleSet = GetSingleSet(sets, name); 

            if (singleSet == null) 
                sets.Add(new Set { Name = name, IsList = isList }); 
            
            if (SerializeSets(sets)) 
                return true; 
            else 
                return false; 
        } 
        
        /// &lt;summary&gt; 
        /// Retrieves a single set from a collection that has a specific name. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;sets&quot;&gt;The source collection from which to extract the set.&lt;/param&gt; 
        /// &lt;param name=&quot;name&quot;&gt;The name of the set to get.&lt;/param&gt; 
        /// &lt;returns&gt;An instance of the found set, if any.&lt;/returns&gt; 
        internal static Set GetSingleSet(List&lt;Set&gt; sets, string name) 
        { 
            if (sets != null) 
                return (from c in sets where c.Name == name select c).FirstOrDefault(); 
            else 
                return null; 
        } 
        
        /// &lt;summary&gt; 
        /// Add a IR command to an existing set. If the set is not found, it will be created. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;command&quot;&gt;The command instance to be added.&lt;/param&gt; 
        /// &lt;param name=&quot;targetSet&quot;&gt;The name of the target set.&lt;/param&gt; 
        /// &lt;returns&gt;true if the command was successfully added.&lt;/returns&gt; 
        internal static bool AddCommand(Command command, string targetSet) 
        { 
            var sets = GetSets(); 
            
            if (sets == null) 
                sets = new List&lt;Set&gt;(); 
            
            var singleSet = GetSingleSet(sets, targetSet); 
            
            if (singleSet == null) 
                singleSet = new Set { Name = targetSet }; 
            
            var singleCommand = (from c in singleSet.Commands where c.Name == command.Name select c).FirstOrDefault(); 
            
            if (singleCommand == null) 
            { 
                singleSet.Commands.Add(command); 
                
                if (SerializeSets(sets)) 
                    return true; 
                else 
                    return false; 
            } 
            else 
                return false; 
        } 
        
        /// &lt;summary&gt; 
        /// Retrieve a single command instance from one of the sets on the local server. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;commands&quot;&gt;Original list of commands.&lt;/param&gt; 
        /// &lt;param name=&quot;name&quot;&gt;Name of the command to be retrieved.&lt;/param&gt; 
        /// &lt;returns&gt;An instance of the command, if found. NULL if not.&lt;/returns&gt; 
        internal static Command GetSingleCommand(List&lt;Command&gt; commands, string name) 
        { 
            if (commands != null) 
                return (from c in commands where c.Name == name select c).FirstOrDefault(); 
            else 
                return null; 
        } 
        
        /// &lt;summary&gt; 
        /// Remove a set from a local machine. 
        /// &lt;/summary&gt; 
        /// &lt;param name=&quot;sets&quot;&gt;Original list of sets.&lt;/param&gt; 
        /// &lt;param name=&quot;targetSet&quot;&gt;Name of the set to remove.&lt;/param&gt; 
        internal static void RemoveSet(List&lt;Set&gt; sets, Set targetSet) 
        { 
            sets.Remove(targetSet); 
            
            SerializeSets(sets); 
        } 
    } 
}
</pre></p><h2>Sending Data Back to the Client</h2><p><strong>SendData</strong> in the <strong>NetworkHelper</strong> class handles all outbound connections. Here is its structure:</p><p><pre class="brush: csharp">
/// &lt;summary&gt; 
/// Send data to the target network machine. 
/// &lt;/summary&gt; 
/// &lt;param name=&quot;destination&quot;&gt;The target machine IP.&lt;/param&gt; 
/// &lt;param name=&quot;data&quot;&gt;Data to be sent, in string format.&lt;/param&gt; 
/// &lt;param name=&quot;sanitizeIp&quot;&gt;Determines whether to remove the port from the given IP string.&lt;/param&gt; 
public static void SendData(string destination, string data, bool sanitizeIp = true) 
{ 
    using (Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) 
    {     
        string completeIp = string.Empty; 
        
        if (sanitizeIp)     
            completeIp = destination.Remove(destination.IndexOf(&quot;:&quot;), destination.Length - destination.IndexOf(&quot;:&quot;)); 
        
        client.Connect(completeIp, 6169); 
        client.Send(Encoding.UTF8.GetBytes(data));     
    }     
}
</pre></p><p>A new stream socket is created in order to connect to the target machine over the TCP pipe. If IP sanitization is enabled, the port is stripped from the address in order to pass a valid IP. A <strong>Socket</strong> instance cannot directly handle IPs of the format:</p><p><strong><em>255.255.255.0:PORT_NUMBER</em></strong></p><p>Later, in a synchronous manner, a connection is established and the data is sent.</p><p>At this point, you can see that the barebones service offers a flexible way to manage content. It can be accessed by any application type as long as the server can be accessed and the application can send commands in the pre-defined format and the content requested is actually located on the target server. This allows for high levels of extensibility and interoperability, as the server usage is not limited to a single platform. If I decide to create a Windows Store application that would allow me to control my TV, I simply need to add socket connection layer that will send plain strings to the machine where the IR sensor is connected.</p><p>Similarly, if some functionality needs to be added, it is possible to do so without ever touching the client applications. A modification in the endpoint will be reflected with no direct effect on all connection applications as long as all handled returned and requested values are preserved. The only additional requirement is that if the client applications want to take advantage of newly introduced capabilities, they need to have an updated command transmission layer for the new command types.</p><p>In <strong>Program.cs</strong>, I simply need to start the server through the <strong>CoreStarter</strong> class:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.API 
{ 
    class Program     
    {         
        static void Main(string[] args)         
        {             
            Console.WriteLine(&quot;Coding4Fun MissionControl Server&quot;);             
            CoreStarter.LaunchSocket();             
        }         
    }     
}
</pre></p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image0076.jpg"><img title="clip_image007" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image007_thumb3.jpg" alt="clip_image007" width="527" height="267" border="0"></a></p><h1>Mobile client overview</h1><p>The mobile client does not have the capability to send commands directly to the IR sensor. Instead, it connects to a remote machine that has the IR sensor plugged in and attempts to invoke a command from the list returned by the service. A single mobile client can support control over multiple servers.</p><p><strong>NOTE:</strong> Make sure that at the time of working with the Windows Phone client, the server is actually running on your local machine. To make it easier to test, also open port 6169 for incoming connections in Windows Firewall.</p><p>When building a Windows Phone application, make sure you have the <a href="http://developer.windowsphone.com/en-us/downloadsdk">proper version of the SDK installed</a>, as well as a <a href="http://en.wikipedia.org/wiki/Second_Level_Address_Translation">SLAT-compatible</a> machine if you plan on testing the application in the emulator.</p><h2>Networking Infrastructure</h2><p>The Windows Phone application also relies on a network infrastructure somewhat similar to that of the server. There is a TCP listener that is created when the application is started:</p><p><pre class="brush: csharp">
// Code to execute when the application is launching (eg, from Start) 
// This code will not execute when the application is reactivated 
private void Application_Launching(object sender, LaunchingEventArgs e) 
{ 
    ServiceSerializer.DeserializeServices(); 
    
    listener.OnClientConnected &#43;= listener_OnClientConnected; 
    listener.Start(6169); 
}
</pre></p><p>Here, listener is an instance of <strong>TcpSocketListener</strong>—a custom class designed to handle incoming network connections:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.WP.Network 
{ 
    public class TcpSocketListener : SocketConnectorBase     
    {     
        StreamSocketListener coreSocket; 
        
        public async void Start(int port)     
        {     
            coreSocket = new StreamSocketListener();         
            coreSocket.ConnectionReceived &#43;= coreSocket_ConnectionReceived; 
            
            try     
            {         
                await coreSocket.BindServiceNameAsync(port.ToString());         
            }     
            catch (Exception ex) 
            {     
                Debug.WriteLine(ex.Message); 
                
                coreSocket.Dispose();     
                coreSocket = null; 
                OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false, DeviceID = string.Empty }); 
            } 
        } 
        
        async void coreSocket_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) 
        { 
            Debug.WriteLine(&quot;Connection received!&quot;); 
            
            DataReader reader = new DataReader(args.Socket.InputStream); 
            
            try 
            { 
                while (true) 
                { 
                    StringBuilder builder = new StringBuilder(); 
        
                    uint actualLength = 1; 

                    while (actualLength &gt; 0) 
                    {     
                        actualLength = await reader.LoadAsync(256); 
                        builder.Append(reader.ReadString(actualLength)); 
                    } 
                    
                    OnConnectionCompleted(new ConnectionEventArgs 
                    { 
                        Socket = args.Socket, 
                        IsSuccessful = true, 
                        DeviceID = args.Socket.Information.RemoteHostName.DisplayName, 
                        Token = builder.ToString() 
                    }); 
                    break; 
                } 
            } 
            catch (Exception exception) 
            { 
                Debug.WriteLine(exception.Message); 
                
                OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false }); 
            } 
        } 
    } 
}
</pre></p><p>A <strong>StreamSocketListener</strong> is used for the connection core. When a connection is received, a continuous loop reads the entire contents of the incoming stream. <strong>OnConnectionCompleted</strong> is declared in the base class—<strong>SocketConnectorBase</strong>.</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.WP.Network 
{ 
    public class SocketConnectorBase 
    { 
        public event EventHandler&lt;ConnectionEventArgs&gt; OnClientConnected; 
        public virtual void OnConnectionCompleted(ConnectionEventArgs connectionArgs) 
        { 
            if (OnClientConnected != null) 
            { 
                OnClientConnected(this, connectionArgs); 
            } 
        } 
        
        public event EventHandler&lt;bool&gt; OnSendCompletedEvent; 
        public virtual void OnSendCompleted(bool succeeded) 
        { 
            if (OnSendCompletedEvent != null) 
            { 
                OnSendCompletedEvent(this, succeeded); 
            } 
        } 
    } 
    
    public class ConnectionEventArgs : EventArgs 
    { 
        public StreamSocket Socket { get; set; }     
        public string DeviceID { get; set; }     
        public string Token { get; set; }     
        public bool IsSuccessful { get; set; }     
    } 
}
</pre></p><p><strong>ConnectionEventArgs</strong> here is used to identify the content that is passed to the client. <strong>DeviceID</strong> gives access to the source IP, <strong>IsSuccessful</strong> tells the developer whether the established connection is active and the <strong>Token</strong> carries the raw string if any was received.</p><p>Sending data is simplified to the maximum with the help of the <strong>SocketClient</strong> class, which relies on a <a href="http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.sockets.streamsocket.aspx">StreamSocket</a> instance that handles outbound connections and writing to the output stream:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.WP.Network 
{ 
    public class SocketClient : SocketConnectorBase 
    {     
        StreamSocket _socket; 
        
        public SocketClient() 
        {     
            _socket = new StreamSocket();     
        } 
        
        public SocketClient(StreamSocket socket) 
        {     
            _socket = socket;     
        } 
        
        public async void Connect(string hostName, int portNumber) 
        { 
            try 
            { 
                await _socket.ConnectAsync(new HostName(hostName), portNumber.ToString(), SocketProtectionLevel.PlainSocket); 
            
                OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = true }); 
            } 
            catch (Exception ex) 
            {     
                Debug.WriteLine(ex.Message); 
                
                OnConnectionCompleted(new ConnectionEventArgs { IsSuccessful = false });     
            } 
        } 
        
        public async void Send(string dataToSend) 
        { 
            try 
            {     
                using (DataWriter writer = new DataWriter(_socket.OutputStream)) 
                { 
                    // Write the length of the binary data that is being 
                    // sent to the client. 
                    writer.WriteUInt32((UInt32)dataToSend.Length); 
                    
                    writer.WriteString(dataToSend); 
        
                    // Send the actual data. 
                    await writer.StoreAsync(); 
                    
                    writer.DetachStream(); 
                    
                    OnSendCompleted(true); 
                } 
            } 
            catch 
            { 
                _socket.Dispose();     
                _socket = null;     
                OnSendCompleted(false);     
            }     
        }     
    }     
}
</pre></p><p>As with the listener class, <strong>SocketClient</strong> supports <strong>OnConnectionCompleted</strong> to notify the application that the connection attempt completed.</p><p>Back in <strong>App.xaml.cs</strong>, the data from the incoming connection captured by the <strong>TcpSocketListener</strong> instance is passed to the <strong>ResponseHelper</strong> class:</p><p><pre class="brush: csharp">
void listener_OnClientConnected(object sender, ConnectionEventArgs e) 
{ 
    ResponseHelper.HandleIncomingResponse(e.Token); 
}
</pre></p><p>This class reads the possible three commands sent by the server and interprets them, creating internal collections from the raw data if the current server IP matches the one obtained in the <strong>ServerResponse</strong> (the same model in the desktop application):</p><p><pre class="brush: csharp">
using Coding4Fun.MissionControl.WP.Models;
using Coding4Fun.MissionControl.WP.ViewModels;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Windows;

namespace Coding4Fun.MissionControl.WP.Misc
{
        public class ResponseHelper
        {
                public static void HandleIncomingResponse(string rawResponse)
                {
                        if (rawResponse != null)
                        {
                                ServerResponse response = JsonConvert.DeserializeObject&lt;ServerResponse&gt;(rawResponse);
                
                                if (response.Marker == Constants.COMMAND_SERVER_NOTIFICATION)
                                {
                                        Deployment.Current.Dispatcher.BeginInvoke(() =&gt;
                                        {
                                                MessageBox.Show(response.Content, &quot;Server Response&quot;, MessageBoxButton.OK);
                                        });
                                }
                                else
                                {
                                        if (CommonViewModel.Instance.IsWaiting)
                                        {
                                                if (response.Identifier == CommonViewModel.Instance.CurrentServer.Location)
                                                {
                                                        // returns the list of sets that are associated with the current server.
                                                        if (response.Marker == Constants.COMMAND_SERVER_SET_LIST)
                                                        {
                                
                                                                List&lt;string&gt; items = JsonConvert.DeserializeObject&lt;List&lt;string&gt;&gt;(response.Content);
                                
                                                                if (items != null)
                                                                {
                                                                        List&lt;Group&lt;string&gt;&gt; groupedItems = Group&lt;string&gt;.CreateGroups(items,
                                                                        CultureInfo.CurrentCulture, (string s) =&gt; { return s[0].ToString(); }, true);
                                                                        SetsPageViewModel.Instance.Sets = groupedItems;
                                                                }
                                                                else
                                                                {
                                                                        SetsPageViewModel.Instance.Sets = new List&lt;Group&lt;string&gt;&gt;();
                                                                }
                                
                                                                Deployment.Current.Dispatcher.BeginInvoke(() =&gt;
                                                                    {
                                                                            CommonViewModel.Instance.IsWaiting = false;
                                    
                                                                            if (!App.RootFrame.CurrentSource.ToString().Contains(&quot;SetsPage&quot;))
                                                                            {
                                                                                    App.RootFrame.Navigate(new Uri(&quot;/Views/SetsPage.xaml&quot;, UriKind.Relative));
                                                                            }
                                                                    });
                                
                                                        }
                                                        // returns the list of commands associated with a given set.
                                                        else if (response.Marker.Contains(Constants.COMMAND_SERVER_SET_COMMANDS))
                                                        {
                                                            string[] data = response.Marker.Split(new char[] { ':' });
                                                                if (data[1] == CommonViewModel.Instance.CurrentSet)
                                                                {
                                                                        bool isList = false;
                                                                        bool.TryParse(data[2].ToLower(), out isList);
                                    
                                                                        if (isList)
                                                                        {
                                                                                CommonViewModel.Instance.CurrentSetType = &quot;list&quot;;
                                                                        }
                                                                        else
                                                                        {
                                                                                CommonViewModel.Instance.CurrentSetType = &quot;pad&quot;;
                                                                        }
                                    
                                                                        CommandsPageViewModel.Instance.Commands = new System.Collections.ObjectModel.ObservableCollection&lt;string&gt;(JsonConvert.DeserializeObject&lt;List&lt;string&gt;&gt;(response.Content));
                                    
                                                                        Deployment.Current.Dispatcher.BeginInvoke(() =&gt;
                                                                            {
                                                                                    CommonViewModel.Instance.IsWaiting = false;
                                                                                    App.RootFrame.Navigate(new Uri(&quot;/Views/CommandsPage.xaml&quot;, UriKind.Relative));
                                                                            });
                                                                }
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
</pre></p><p>If the response comes from a server that is different than the one that is currently active, the data is discarded as the user no longer needs it. Also, for specific commands, the mobile application will be on standby, waiting for a response (unless the user decides to cancel the request) – the <strong>IsWaiting</strong> flag is an application-wide indicator that a pending server action is in the queue.</p><p>Same as with the server, the commands in the Windows Phone application are represented through pre-defined constants:</p><p><pre class="brush: csharp">
public const string COMMAND_SERVER_SET_LIST = &quot;SET_LIST&quot;; 

public const string COMMAND_SERVER_SET_COMMANDS = &quot;SET_COMMANDS&quot;; 

public const string COMMAND_SERVER_NOTIFICATION = &quot;NOTIFICATION&quot;;
</pre></p><p>Let’s now take a closer look at how it is handled internally to build the visual layer.</p><h4>Handling the Data</h4><p>The first thing users will see when the application is launched is the list of registered servers:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0003%5B4%5D.png"><img title="wp_ss_20130507_0003" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0003_thumb%5B2%5D.png" alt="wp_ss_20130507_0003" width="288" height="480" border="0"></a></p><p>This is <strong>ServiceListPage.xaml</strong>. The list of servers that were added is retrieved from the isolated storage on application startup, with the help of the standard serialization routine implemented in the <a href="https://coding4fun.codeplex.com/">Coding4Fun Toolkit</a>—specifically, its storage subset (you can get it <a href="http://nuget.org/packages/Coding4Fun.Toolkit.Storage/">via NuGet</a>):</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image0116.jpg"><img title="clip_image011" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/clip_image011_thumb3.jpg" alt="clip_image011" width="535" height="61" border="0"></a></p><p>The one-liner that initializes the internal server collection is as follows:</p><p><pre class="brush: csharp">
MainPageViewModel.Instance.Servers = Serialize.Open&lt;ObservableCollection&lt;Server&gt;&gt;(Constants.SERVERS_FILE);
</pre></p><p>&nbsp;</p><p>Here, the <strong>SERVERS_FILE</strong> constant is equal to <strong>servers.xml</strong>. It is a good idea to use constants for file names in order to be able to later modify the location through a single change instead of digging through the many source files in a solution to find references to the old location.</p><p>The user can define an unlimited number of servers, as long as he can access those. There is no restriction on the location of the server itself—it can work with the desktop in your room just as well as with a PC on the other end of the world (yes, this was tested).</p><p>When adding a new server, the user is redirected to <strong>AddServicePage.xaml</strong>, where he can fill in connection details, as well as the location of an image that would help him identify that specific item in the general list:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130423_0005%5B4%5D.png"><img title="wp_ss_20130423_0005" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130423_0005_thumb%5B2%5D.png" alt="wp_ss_20130423_0005" width="288" height="480" border="0"></a></p><p>Once data entry is complete, it is validated internally to make sure that the server is not already registered with the same name and location. If the validation step passes, the server is added to the list of local access points and the user is returned back to the server selection page:</p><p><pre class="brush: csharp">
private void AttemptAddService()
{
        if (!string.IsNullOrWhiteSpace(txtName.Text) &amp;&amp; !string.IsNullOrWhiteSpace(txtLocation.Text))
        {
                Server server = new Server
                    {
                            Name = txtName.Text,
                            Location = txtLocation.Text,
                            ImageURL = !string.IsNullOrWhiteSpace(txtAvatar.Text) ? txtAvatar.Text : string.Empty
                    };
        
                if (!CollectionHelper.CheckServerExists(server))
                {
                        MainPageViewModel.Instance.Servers.Add(server);
            
                        Serialize.Save(Constants.SERVERS_FILE, MainPageViewModel.Instance.Servers);
                        NavigationService.GoBack();
                }
                else
                {
                        Alert.Send(&quot;The service with this name or location is already registered.&quot;);
                }
        }
        else
        {
                Alert.Send(&quot;The service needs a name and a location.&quot;);
        }
}
</pre></p><p>When a server selection is made by the user, it is necessary to show <strong>SetsPage.xaml</strong>. However, it is necessary to also check whether the server is active or not prior to the actual navigation. With the help of internal bindings, I am doing it through a <strong>RelayCommand</strong>:</p><p><pre class="brush: csharp">
public RelayCommand SelectServerCommand { get; private set; }
private async void SelectServer(object server)
{
        CommonViewModel.Instance.IsWaiting = true;
        CommonViewModel.Instance.CurrentServer = (Server)server;
    
        bool result = await CommonViewModel.Instance.CommandClient.SendCommand(CommonViewModel.Instance.CurrentServer.Location, 
        Constants.COMMAND_SERVER_HELLO, string.Empty);
        if (!result)
        {
                Alert.Send(Constants.MESSAGE_SERVER_CONNECT_FAIL);
                CommonViewModel.Instance.CurrentServer = null;
        
                CommonViewModel.Instance.IsWaiting = false;
        }
}
</pre></p><p>&nbsp;</p><p><strong>COMMAND_SERVER_HELLO</strong> represents the initial handshake command that I mentioned earlier—it requests the list of sets on the target server. To streamline command processing, <strong>CommandClient</strong> is used and wraps around the <strong>SocketClient</strong> class, giving me the possibility to call <strong>SendCommand</strong> with the command metadata without having to explicitly handle socket interactions in my views:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.WP.Network 
{     
    public class CommandClient     
    {     
        private SocketClient client; 
        
        public Task&lt;bool&gt; SendCommand(string key, string value, Action&lt;bool&gt; onCompleted = null) 
        {     
            var taskCompletionSource = new TaskCompletionSource&lt;bool&gt;(); 
            
            client = new SocketClient();     
            client.OnClientConnected &#43;= (s, args) =&gt;     
            {     
                if (args.IsSuccessful)     
                {     
                    string data = JsonConvert.SerializeObject(new KeyValuePair&lt;string, string&gt;(key, value));     
                    client.Send(data);     
                } 
            
                taskCompletionSource.SetResult(args.IsSuccessful); 
                client = null; 
            }; 
            
            client.Connect(Binder.Instance.CurrentService.Location, 6169); 
            return taskCompletionSource.Task;     
        } 
    } 
}
</pre></p><p>From here on, <strong>ResponseHelper</strong> is once again involved, grouping all the data alphabetically—remember this call:</p><p><pre class="brush: csharp">
// returns the list of sets that are associated with the current server. 
if (response.Marker == Constants.COMMAND_SERVER_SET_LIST) 
{     
    List&lt;string&gt; items = JsonConvert.DeserializeObject&lt;List&lt;string&gt;&gt;(response.Content);     
    if (items != null) 
    {     
        List&lt;Group&lt;string&gt;&gt; groupedItems = Group&lt;string&gt;.CreateGroups(items,     
    CultureInfo.CurrentCulture, (string s) =&gt; { return s[0].ToString(); }, true);     
        Binder.Instance.Sets = groupedItems;     
    } 
    else 
    {     
        Binder.Instance.Sets = new List&lt;Group&lt;string&gt;&gt;();     
    } 
}
</pre></p><p>&nbsp;</p><p>The grouped collection is later bound to a <a href="http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj244365(v=vs.105).aspx">LongListSelector</a> instance:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0001%5B4%5D.png"><img title="wp_ss_20130507_0001" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0001_thumb%5B2%5D.png" alt="wp_ss_20130507_0001" width="288" height="480" border="0"></a></p><p>For each handshake call to the server, the set collection will be re-initialized, in case the server was updated by another device while the user was not taking any actions.</p><p>Adding a set takes the user to <strong>AddSetPage.xaml</strong>, where the user input is once again validated and the appropriate command sent to the currently selected server:</p><p><pre class="brush: csharp">
private async void AttemptAddSet()
{
        if (!string.IsNullOrWhiteSpace(txtName.Text))
        {
                this.Focus();
        
                bool commandSent = await CommonViewModel.Instance.CommandClient.SendCommand(CommonViewModel.Instance.CurrentServer.Location, 
                    string.Format(Constants.COMMAND_CREATE_SET, ((ListPickerItem)lstType.SelectedItem).Content.ToString()), txtName.Text);
                if (!commandSent)
                {
                        Alert.Send(Constants.MESSAGE_SERVER_CONNECT_FAIL);
                }
                else
                {
                        CommonViewModel.Instance.IsWaiting = true;
                        NavigationService.GoBack();
                }
        }
        else
        {
                Alert.Send(Constants.MESSAGE_NO_NAME_FAIL);
        }
}
</pre></p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130430_0002%5B4%5D-1.png"><img title="wp_ss_20130430_0002" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130430_0002_thumb%5B2%5D-1.png" alt="wp_ss_20130430_0002" width="288" height="480" border="0"></a></p><p>The end-user is also able to specify whether the new set is a list or a pad. Since the server does not explicitly define the type of a set beyond marking whether it’s a list, it is possible to have an arbitrary type here.</p><p>To give you an idea of what it looks like in the current release of MissionControl, here is the pad representation of a set of commands:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0002%5B13%5D.png"><img title="wp_ss_20130507_0002" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0002_thumb%5B11%5D.png" alt="wp_ss_20130507_0002" width="288" height="480" border="0"></a></p><p>It is a convenient way to display buttons for typical actions, such as channel switching through digits. Since we can safely assume many of those will be tapped sequentially, a list would be inconvenient to scroll through.</p><p>On the other hand, some remote control commands work well with a list because no sequences are invoked most of the time:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0004%5B4%5D.png"><img title="wp_ss_20130507_0004" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0004_thumb%5B2%5D.png" alt="wp_ss_20130507_0004" width="288" height="480" border="0"></a></p><p>If the pad is not desired, it can easily be swapped with another design and internal template - the appearance is swapped dynamically and is not hard-bound to a string value.</p><p>Once a set is selected, a connection attempt is made to the current server in order to check whether there is still a communication channel available with the resource that fetched the initial list of commands. If a connection is established, the server will also return a set of commands that are available in the set at the time of the request.</p><p><pre class="brush: csharp">
private async void AttemptLoadCommands()
{
        bool commandSent = await CommonViewModel.Instance.CommandClient.SendCommand(CommonViewModel.Instance.CurrentServer.Location,
            Constants.COMMAND_GET_COMMANDS, CommonViewModel.Instance.CurrentSet);
        if (!commandSent)
        {
                Alert.Send(Constants.MESSAGE_SERVER_CONNECT_FAIL);
                CommonViewModel.Instance.IsWaiting = false;
        }
}
</pre></p><p>You’ve probably already noticed that both for commands and sets, the initial routine verifies the connection to the server. The server might go dark after the set list is loaded, therefore rendering any attempt to process other commands impossible. To avoid scenarios in which the user is waiting for a response from a server that doesn’t run, the user is notified before being redirected to the subsequent view, if the connection fails. That way unnecessary navigation passes are out of the picture.</p><p>If the user selects a command from one of the lists demonstrated above, an <strong>EXECUTE</strong> directive is issued via the <strong>CommandClient</strong> class:</p><p><pre class="brush: csharp">
private async void lstCommands_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    if (lstCommands.SelectedItem != null)
    { 
        string selectedItem = lstCommands.SelectedItem.ToString(); 
        
        CommandClient commandClient = new CommandClient(); 
        bool commandSent = await commandClient.SendCommand(string.Format(Constants.COMMAND_EXECUTE, 
        
        Binder.Instance.CurrentSet), selectedItem); 
    
        if (!commandSent) 
        {     
            Alert.Send(Constants.MESSAGE_SERVER_CONNECT_FAIL);     
        } 
        
        lstCommands.SelectedItem = null; 
    } 
}
</pre></p><p>Once the server receives the command, it will send it to the target without additional notifications being released to the connecting client.</p><p>When it comes to learning a new remote control code in <strong>LearnCodePage.xaml</strong>, the procedure is exactly the same as with any other part of the server communication process — a <strong>LEARN_CODE</strong> command is sent to the server with the associated set and new command name, and the server will wait for incoming IR input, leaving the connecting device free (no waiting lock is issued):</p><p><pre class="brush: csharp">
private async void AttemptLearnCode()
{
        if (!string.IsNullOrWhiteSpace(txtName.Text))
        {
                CommonViewModel.Instance.IsWaiting = true;
                this.Focus();
        
                bool commandSent = await CommonViewModel.Instance.CommandClient.SendCommand(CommonViewModel.Instance.CurrentServer.Location,
                    string.Format(Constants.COMMAND_LEARN_NEW, CommonViewModel.Instance.CurrentSet), txtName.Text);
                if (!commandSent)
                {
                        Alert.Send(Constants.MESSAGE_SERVER_CONNECT_FAIL);
                }
                else
                {
                        Alert.Send(Constants.MESSAGE_COMMAND_LEARN_WAIT);
                        NavigationService.GoBack();
                }
        
                CommonViewModel.Instance.IsWaiting = false;
        }
        else
        {
                Alert.Send(Constants.MESSAGE_NO_NAME_FAIL);
        }
}
</pre></p><p>Once the server learns a new command — if, and only if, the user still works in the context of the same server — an alert will be displayed, telling the user whether the command was successfully learned.</p><p>For convenience purposes, I also implemented a quick launch panel, where frequently-used commands can be placed. Whenever a user wants to add something here, he will tap-and-hold on an existing command in any of the sets that are available for any given server, and select the &quot;add to quick launch&quot; option. Once completed, the stored commands will be available on the main page, even when the user is not directly connected to the server that carries the command:</p><p><a href="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0005%5B4%5D.png"><img title="wp_ss_20130507_0005" src="http://files.channel9.msdn.com/wlwimages/1932b237046e4743a4e79e6800c0220f/wp_ss_20130507_0005_thumb%5B2%5D.png" alt="wp_ss_20130507_0005" width="288" height="480" border="0"></a></p><p>Because this interaction layer is placed outside the boundaries of a single server or set, I needed to create a special data model to store the quick commands and the related connection information, that would let me call the server even when it is not the currently selected one:</p><p><pre class="brush: csharp">
namespace Coding4Fun.MissionControl.WP.Models
{
        public class Favorite
        {
            public string CommandName { get; set; }
            public string ParentSet { get; set; }
            public string ServerLocation { get; set; }
        }
}
</pre></p><p>Same as with the list of servers, the list of favorites is deserialized on application startup:</p><p><pre class="brush: csharp">
MainPageViewModel.Instance.Favorites = Serialize.Open&lt;ObservableCollection&lt;Favorite&gt;&gt;(Constants.FAVORITES_FILE);
</pre></p><p>&nbsp;</p><p>Logically, we would also need to have a way to eliminate trailing commands for servers or sets that have been removed, since those can no longer be invoked or might have a different meaning on servers that were added and have the same IP as the previous owner. This is easily done with a simple LINQ expression that is passed to <strong>RemoveTrailingFavorites </strong>in the <strong>CollectionHelper </strong>class:</p><p><pre class="brush: csharp">
internal static void RemoveTrailingFavorites(Func&lt;Favorite,bool&gt; predicate)
{
        var favorites = MainPageViewModel.Instance.Favorites.Where(predicate).ToList();
    
        if (favorites.Count() &gt; 0)
        {
                foreach (var favorite in favorites)
                {
                        Deployment.Current.Dispatcher.BeginInvoke(() =&gt;
                            {
                                    MainPageViewModel.Instance.Favorites.Remove(favorite);
                            });
                }
        
                Serialize.Save(Constants.FAVORITES_FILE, MainPageViewModel.Instance.Favorites);
        }
}
</pre></p><p>A typical usage scenario is reflected in the server removal snippet:</p><p><pre class="brush: csharp">
public static bool RemoveServer(Server server)
{
        try
        {
                RemoveTrailingFavorites(x=&gt; x.ServerLocation == server.Location);
        
                MainPageViewModel.Instance.Servers.Remove(server);
        
                Serialize.Save(Constants.SERVERS_FILE, MainPageViewModel.Instance.Servers);
        
                return true;
        }
        catch
        {
                return false;
        }
}
</pre></p><p>Because an <a href="http://msdn.microsoft.com/en-us/library/ms668604(v=vs.95).aspx" target="_blank">ObservableCollection&lt;T&gt;</a> is used for both the list of servers and quick launch commands, the view will be instantly updated to reflect the changes.</p><h1>Improvements to the project</h1><p>This specific project relies on a hybrid IR transmitter and receiver, which is not exactly cheap. As a step forward for this project, it can be adapted to use a central microcontroller that acts as a server (e.g. <a href="http://www.netduino.com/" target="_blank">Netduino</a>) and a series of IR emitters (instead of using a composite receiver/emitter) connected to it. Reduced cost for the IR infrastructure is key, as not every single component needs the capability to learn IR commands. You can have a single command capturing endpoint and multiple transmitters. This will also eliminate the need for a desktop client, since the server on the microcontroller can be built to be accessible via a web-browser.</p><p>Another important aspect not covered in this article is security. With the current workflow, anyone who has direct access to the server IP is able to do anything he wants with the data handled by the server. I am basing my writing on the assumption that you are testing the application on a secure local network and that the the odds of something like this happening are close to zero. However, for other environments where tampering with a server might be unacceptable, consider implementing a layer of security between the server and the client.</p><h2>Conclusion</h2><p>With affordable microcontrollers and sensors, home and office automation can be a nice bonus resulting from little investment. This article covers the implementation of a proof-of-concept server and application that can be easily extended and adapted to a variety of environments and devices.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:b029d939c55f459c9663a1b70159bff4">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/articles/MissionControl-A-Flexible-API-for-Remote-Device-Control</comments>
      <itunes:summary>In a race to optimize everything, developers often go to extremes to build software that performs routine tasks. MissionControl is a system that allows users to program a control center that stores interfaces with attached hardware sensors, allowing the users to control any other devices that can be activated via the underlying protocol. For demo purposes, the MissionControl build at this point is compatible with the Phidgets IR hybrid sensor. The system has two core components: A server application, which is a Win32 console application that handles incoming queries and returns data to the connected clients. This application runs on the desktop machine with the connected sensor. The Windows Phone application that sends requests to the target server and can trigger a variety of pre-programmed commands. The BasicsHardware and Communication InfrastructureOne of the most important parts of the project is the signal capture and replication hardware. For the purposes of this project, I decided to use a dual-mode Phidgets IR sensor. It supports both IR code capture and subsequent replication. From a user’s perspective, this device also eliminates a substantial code-learning overhead as well as the potential error rate. Instead of searching for a device-specific hexadecimal sequence that later has to be transformed in a working IR code, the user simply has to point his remote control at the sensor and press the button that he wants accessible from a mobile device. Given that the capturing software is running on the target machine, once the sensor detects that a code can be repeated within an acceptable precision range, it will be automatically captured and stored, with all required transformations worked out in the backend using the free Phidgets SDK. Even though I can, I don’t have to handle the binary code content received through the sensor—the Phidgets .NET libraries carry built-in types that contain all the processed metadata that I will discuss later in this article. </itunes:summary>
      <itunes:duration>229</itunes:duration>
      <link>http://channel9.msdn.com/coding4fun/articles/MissionControl-A-Flexible-API-for-Remote-Device-Control</link>
      <pubDate>Mon, 13 May 2013 15:12:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/articles/MissionControl-A-Flexible-API-for-Remote-Device-Control</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.mp3" expression="full" duration="229" fileSize="3674107" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.mp4" expression="full" duration="229" fileSize="22113376" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.webm" expression="full" duration="229" fileSize="16308048" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.wma" expression="full" duration="229" fileSize="1867511" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.wmv" expression="full" duration="229" fileSize="15574259" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_high.mp4" expression="full" duration="229" fileSize="48262843" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_mid.mp4" expression="full" duration="229" fileSize="33783291" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl_Source.wmv" expression="full" duration="229" fileSize="135746099" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/330a/ce7e23b2-7e59-47e3-ba68-af17f8ab330a/MissionControl.wmv" length="15574259" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Clint Rutkas, Den Delimarsky</dc:creator>
      <itunes:author>Clint Rutkas, Den Delimarsky</itunes:author>
      <slash:comments>5</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/articles/MissionControl-A-Flexible-API-for-Remote-Device-Control/RSS</wfw:commentRss>
      <category>Networking</category>
      <category>Windows</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Building real-time connected apps with Windows Phone 8 and SignalR</title>
      <description><![CDATA[<p>This is a recording from an MSDN webcast&nbsp;on&nbsp;April 16, 2013.</p><p><strong>Abstract <br></strong>Building apps that communitate in real-time with each other can be quite a burden. Figuring out a way to setup such a connection and implementing it can take up a lot of time. Microsoft started working on something called SignalR some time ago. The idea was to provide a quick and easy way for ASP.net developers to make their web apps communicate in real-time. In time the SignalR project has evolved and since the RC2 version it features clients for Javascript, .net, Windows 8 and Windows Phone 8. In this session we'll take a look at what SignalR is and what it can do for us. We'll build a service and connect our Windows Phone devices to that service.&nbsp;</p><div class="ExternalClass85E817AD87174C68AA8422653D3B005F"><div><strong>Speaker: <a href="http://www.microsoft.com/belux/meet/#Nico&#43;Vermeir" target="_blank">Nico Vermeir</a></strong></div><div>&nbsp;</div><div><a href="http://www.slideshare.net/nicovermeir/signalr-and-wp8" target="_blank"><strong>Download the slides.</strong></a></div><div>&nbsp;</div></div><p><strong>Extra&nbsp; <br></strong><strong><span lang="EN-US">- </span></strong><span lang="EN-US">Download the <a href="https://dev.windowsphone.com/en-us/downloadsdk" target="_blank">Windows Phone 8 SDK</a>.</span><strong><span lang="EN-US"><br>- </span></strong><span lang="EN-US">Have a look at the <strong>next events&nbsp;</strong>we have planned for developers in Belgium: <a href="http://msdn-events.be/">http://msdn-events.be</a></span><strong><span lang="EN-US">&nbsp;</span> <br></strong>- Belgian app builders: discover your new home: <a href="http://msdn.be/apps">http://msdn.be/apps</a> AKA the <strong>Apps on Windows</strong> portal.</p><p><br><br>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:41ba5933a6394eb2b68aa1ab008a6613">]]></description>
      <comments>http://channel9.msdn.com/posts/Building-real-time-connected-apps-with-Windows-Phone-8-and-SignalR</comments>
      <itunes:summary>This is a recording from an MSDN webcast&amp;nbsp;on&amp;nbsp;April 16, 2013. Abstract Building apps that communitate in real-time with each other can be quite a burden. Figuring out a way to setup such a connection and implementing it can take up a lot of time. Microsoft started working on something called SignalR some time ago. The idea was to provide a quick and easy way for ASP.net developers to make their web apps communicate in real-time. In time the SignalR project has evolved and since the RC2 version it features clients for Javascript, .net, Windows 8 and Windows Phone 8. In this session we&#39;ll take a look at what SignalR is and what it can do for us. We&#39;ll build a service and connect our Windows Phone devices to that service.&amp;nbsp; Speaker: Nico Vermeir&amp;nbsp;Download the slides.&amp;nbsp;Extra&amp;nbsp; - Download the Windows Phone 8 SDK.- Have a look at the next events&amp;nbsp;we have planned for developers in Belgium: http://msdn-events.be&amp;nbsp; - Belgian app builders: discover your new home: http://msdn.be/apps AKA the Apps on Windows portal. &amp;nbsp; </itunes:summary>
      <itunes:duration>2752</itunes:duration>
      <link>http://channel9.msdn.com/posts/Building-real-time-connected-apps-with-Windows-Phone-8-and-SignalR</link>
      <pubDate>Thu, 25 Apr 2013 10:43:59 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Building-real-time-connected-apps-with-Windows-Phone-8-and-SignalR</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_512.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_960.jpg" height="720" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.mp3" expression="full" duration="2752" fileSize="44043938" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.mp4" expression="full" duration="2752" fileSize="267732944" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.webm" expression="full" duration="2752" fileSize="75570445" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.wma" expression="full" duration="2752" fileSize="22264671" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.wmv" expression="full" duration="2752" fileSize="114026069" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_high.mp4" expression="full" duration="2752" fileSize="622277993" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_mid.mp4" expression="full" duration="2752" fileSize="416128034" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps_Source.wmv" expression="full" duration="2752" fileSize="171518067" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.ism/manifest" expression="full" duration="2752" fileSize="6300" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/cfdc/0c2aa886-fcb5-42f2-ad21-70e67448cfdc/realtimeconnectedWPapps.wmv" length="114026069" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Anthony de Bruyn</dc:creator>
      <itunes:author>Anthony de Bruyn</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Building-real-time-connected-apps-with-Windows-Phone-8-and-SignalR/rss</wfw:commentRss>
      <category>BeLux</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Windows Phone - Authenticate and Authorize users with Server Scripts in Windows Azure Mobile Services</title>
      <description><![CDATA[<p><a href="http://www.windowsazure.com/mobile" target="_blank">Windows Azure Mobile Services</a> enables authentication scenarios with popular social identity providers such as Microsoft Account, Twitter, Facebook and Google.&nbsp; In this video <a href="http://www.nickharris.net" target="_blank">Nick Harris</a>&nbsp;demonstrates how you can:</p><ul><li>Authenticate users of your Windows&nbsp;Phone apps using a Twitter Account </li><li>Restrict access to insert/update/read and delete permissions on the tables within your Mobile service to authenticated users.&nbsp; </li><li>Add Server script to track which rows are inserted by authenticated users </li><li>Add Server script that authorizes&nbsp;users to only view data that they have inserted </li></ul><p>Get started with 10 Mobile Services for <a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank">FREE</a>&nbsp;and try this scenario using the step-by-step&nbsp;tutorials&nbsp;<a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-users-wp8/" target="_blank">tutorial part 1</a>&nbsp;and <a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/authorize-users-in-scripts-wp8/" target="_blank">tutorial part 2</a></p><p><a class="twitter-follow-button" href="https://twitter.com/cloudnick">Follow @cloudnick</a></p><p>&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2581ac90590f4433b86ea1aa0019879b">]]></description>
      <comments>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Authenticate-and-Authorize-users-with-Server-Scripts-in-Windows-Azure-Mobile-Services</comments>
      <itunes:summary>Windows Azure Mobile Services enables authentication scenarios with popular social identity providers such as Microsoft Account, Twitter, Facebook and Google.&amp;nbsp; In this video Nick Harris&amp;nbsp;demonstrates how you can: Authenticate users of your Windows&amp;nbsp;Phone apps using a Twitter Account Restrict access to insert/update/read and delete permissions on the tables within your Mobile service to authenticated users.&amp;nbsp; Add Server script to track which rows are inserted by authenticated users Add Server script that authorizes&amp;nbsp;users to only view data that they have inserted Get started with 10 Mobile Services for FREE&amp;nbsp;and try this scenario using the step-by-step&amp;nbsp;tutorials&amp;nbsp;tutorial part 1&amp;nbsp;and tutorial part 2 Follow @cloudnick &amp;nbsp; </itunes:summary>
      <itunes:duration>900</itunes:duration>
      <link>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Authenticate-and-Authorize-users-with-Server-Scripts-in-Windows-Azure-Mobile-Services</link>
      <pubDate>Wed, 24 Apr 2013 03:09:29 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Authenticate-and-Authorize-users-with-Server-Scripts-in-Windows-Azure-Mobile-Services</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers.mp3" expression="full" duration="900" fileSize="14405695" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers.mp4" expression="full" duration="900" fileSize="65232513" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers.webm" expression="full" duration="900" fileSize="23686907" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers.wma" expression="full" duration="900" fileSize="7292735" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_high.mp4" expression="full" duration="900" fileSize="169065503" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_mid.mp4" expression="full" duration="900" fileSize="107995223" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_Source.wmv" expression="full" duration="900" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_Source.wmv" expression="full" duration="900" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_Source.wmv" expression="full" duration="900" fileSize="25730071" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/14d4/3f8b3f70-2190-4d16-a5a3-732b434414d4/WPAuthenticateAndAuthorizeUsers_Source.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nick Harris</dc:creator>
      <itunes:author>Nick Harris</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Authenticate-and-Authorize-users-with-Server-Scripts-in-Windows-Azure-Mobile-Services/RSS</wfw:commentRss>
      <category>Windows Azure</category>
      <category>Windows  Phone</category>
      <category>WP7</category>
      <category>Windows Azure Mobile Services</category>
    </item>
  <item>
      <title>Windows Phone - Validate and Modify Data with Server Scripts in Windows Azure Mobile Services</title>
      <description><![CDATA[<p><a href="http://www.windowsazure.com/mobile" target="_blank">Windows Azure Mobile Services</a> enables developers to add server scripts to execute custom business logic that will execute during Insert/Update/Read/Delete operations.&nbsp; In this video <a href="http://www.nickharris.net" target="_blank">Nick Harris</a>&nbsp;demonstrates how you can use server script to both validate and modify your data using server scripts.</p><p>Get started with 10 Mobile Services for <a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank">FREE</a>&nbsp;and try this scenario using the step-by-step&nbsp;<a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/validate-modify-and-augment-data-wp8/" target="_blank">tutorial</a>.</p><p><a class="twitter-follow-button" href="https://twitter.com/cloudnick">Follow @cloudnick</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f911eb6c65744951b481a1a6001139c9">]]></description>
      <comments>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Validate-and-Modify-Data-with-Server-Scripts-in-Windows-Azure-Mobile-Services</comments>
      <itunes:summary>Windows Azure Mobile Services enables developers to add server scripts to execute custom business logic that will execute during Insert/Update/Read/Delete operations.&amp;nbsp; In this video Nick Harris&amp;nbsp;demonstrates how you can use server script to both validate and modify your data using server scripts. Get started with 10 Mobile Services for FREE&amp;nbsp;and try this scenario using the step-by-step&amp;nbsp;tutorial. Follow @cloudnick </itunes:summary>
      <itunes:duration>696</itunes:duration>
      <link>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Validate-and-Modify-Data-with-Server-Scripts-in-Windows-Azure-Mobile-Services</link>
      <pubDate>Mon, 22 Apr 2013 16:35:13 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Validate-and-Modify-Data-with-Server-Scripts-in-Windows-Azure-Mobile-Services</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData.mp3" expression="full" duration="696" fileSize="11150616" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData.mp4" expression="full" duration="696" fileSize="52179510" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData.webm" expression="full" duration="696" fileSize="18485336" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData.wma" expression="full" duration="696" fileSize="5643539" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_high.mp4" expression="full" duration="696" fileSize="139440779" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_mid.mp4" expression="full" duration="696" fileSize="87824290" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_Source.wmv" expression="full" duration="696" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_Source.wmv" expression="full" duration="696" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_Source.wmv" expression="full" duration="696" fileSize="18968025" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/747e/9869c38a-1269-4dc0-b5de-451768b8747e/WPValidatingAndModifyingData_Source.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nick Harris</dc:creator>
      <itunes:author>Nick Harris</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-Validate-and-Modify-Data-with-Server-Scripts-in-Windows-Azure-Mobile-Services/RSS</wfw:commentRss>
      <category>Windows Azure</category>
      <category>Windows  Phone</category>
      <category>Windows Azure Mobile Services</category>
    </item>
  <item>
      <title>Windows Phone app - Getting Started with Data - Connecting your app to Windows Azure Mobile Services</title>
      <description><![CDATA[<p><a href="http://www.windowsazure.com/mobile" target="_blank">Windows Azure Mobile Services</a> enables you to store data from your Windows Phone apps in the cloud within minutes.&nbsp; In this video <a href="http://www.nickharris.net" target="_blank">Nick Harris</a>&nbsp;demonstrates how you can get started with structured storage within Mobile Services.&nbsp;&nbsp;The demo includes taking a disconnected Windows Phone app, provisioning a Mobile Service and wiring up the app to&nbsp;insert, update and query&nbsp;its data to/from the newly created Mobile Service.</p><p>Get started with 10 Mobile Services for <a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank">FREE</a>&nbsp;and try this scenario using the step-by-step&nbsp;<a href="http://www.windowsazure.com/en-us/develop/mobile/tutorials/validate-modify-and-augment-data-wp8/" target="_blank">tutorial</a>.</p><p><a class="twitter-follow-button" href="https://twitter.com/cloudnick">Follow @cloudnick</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:9dcc49d9ad62484bb267a1a6000a3cd7">]]></description>
      <comments>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-app-Getting-Started-with-Data-Connecting-your-app-to-Windows-Azure-Mobile-Services</comments>
      <itunes:summary>Windows Azure Mobile Services enables you to store data from your Windows Phone apps in the cloud within minutes.&amp;nbsp; In this video Nick Harris&amp;nbsp;demonstrates how you can get started with structured storage within Mobile Services.&amp;nbsp;&amp;nbsp;The demo includes taking a disconnected Windows Phone app, provisioning a Mobile Service and wiring up the app to&amp;nbsp;insert, update and query&amp;nbsp;its data to/from the newly created Mobile Service. Get started with 10 Mobile Services for FREE&amp;nbsp;and try this scenario using the step-by-step&amp;nbsp;tutorial. Follow @cloudnick </itunes:summary>
      <itunes:duration>774</itunes:duration>
      <link>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-app-Getting-Started-with-Data-Connecting-your-app-to-Windows-Azure-Mobile-Services</link>
      <pubDate>Sat, 20 Apr 2013 01:31:32 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-app-Getting-Started-with-Data-Connecting-your-app-to-Windows-Azure-Mobile-Services</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData.mp3" expression="full" duration="774" fileSize="12388601" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData.mp4" expression="full" duration="774" fileSize="59195192" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData.webm" expression="full" duration="774" fileSize="21220510" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData.wma" expression="full" duration="774" fileSize="6274379" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_high.mp4" expression="full" duration="774" fileSize="158888114" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_mid.mp4" expression="full" duration="774" fileSize="99593175" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_Source.wmv" expression="full" duration="774" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_Source.wmv" expression="full" duration="774" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_Source.wmv" expression="full" duration="774" fileSize="18672465" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/af14/9cb9d374-1bde-4d2e-ae1c-87233e57af14/WindowsPhoneGettingStartedWithData_Source.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Nick Harris</dc:creator>
      <itunes:author>Nick Harris</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/Windows-Azure-Mobile-Services/Windows-Phone-app-Getting-Started-with-Data-Connecting-your-app-to-Windows-Azure-Mobile-Services/RSS</wfw:commentRss>
      <category>Windows Azure</category>
      <category>Windows  Phone</category>
      <category>Windows Azure Mobile Services</category>
    </item>
  <item>
      <title>Windows Phone Next App Star Runner Up: ProShot by Eddie Kezeli</title>
      <description><![CDATA[<p>Out of more than 9,000 competing apps and 600,000 votes by sweepstakes participants around the world, the finals pitted Wikipedia by Rudy Huyn and <a href="http://www.windowsphone.com/s?appid=3D6A3D7E-5ACA-4AEE-B059-590B9F53CC13">ProShot</a> by Eddie Kezeli.&nbsp;&nbsp; The voting was so close, we also&nbsp;wanted to showcase our runner-up with this Channel 9 video.&nbsp; Second place out of 9,167 apps? Not bad, Eddie!&nbsp; Congratulations from Windows Phone.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e6d6d791d10941389cafa19d013b95d7">]]></description>
      <comments>http://channel9.msdn.com/posts/Windows-Phone-Next-App-Star-Runner-Up-ProShot-by-Eddie-Eddie-Kezeli</comments>
      <itunes:summary>Out of more than 9,000 competing apps and 600,000 votes by sweepstakes participants around the world, the finals pitted Wikipedia by Rudy Huyn and ProShot by Eddie Kezeli.&amp;nbsp;&amp;nbsp; The voting was so close, we also&amp;nbsp;wanted to showcase our runner-up with this Channel 9 video.&amp;nbsp; Second place out of 9,167 apps? Not bad, Eddie!&amp;nbsp; Congratulations from Windows Phone. </itunes:summary>
      <itunes:duration>39</itunes:duration>
      <link>http://channel9.msdn.com/posts/Windows-Phone-Next-App-Star-Runner-Up-ProShot-by-Eddie-Eddie-Kezeli</link>
      <pubDate>Fri, 12 Apr 2013 01:52:33 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Windows-Phone-Next-App-Star-Runner-Up-ProShot-by-Eddie-Eddie-Kezeli</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.mp3" expression="full" duration="39" fileSize="632191" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.mp4" expression="full" duration="39" fileSize="3353592" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.webm" expression="full" duration="39" fileSize="1475272" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.wma" expression="full" duration="39" fileSize="326459" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.wmv" expression="full" duration="39" fileSize="3812351" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_high.mp4" expression="full" duration="39" fileSize="7288830" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_mid.mp4" expression="full" duration="39" fileSize="5150557" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot_Source.wmv" expression="full" duration="39" fileSize="13927604" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.ism/manifest" expression="full" duration="39" fileSize="7562" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/aeaa/341363e5-cd00-4549-86a8-1b2e73b8aeaa/ProShot.wmv" length="3812351" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Bryan Tomlinson</dc:creator>
      <itunes:author>Bryan Tomlinson</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Windows-Phone-Next-App-Star-Runner-Up-ProShot-by-Eddie-Eddie-Kezeli/rss</wfw:commentRss>
      <category>Windows  Phone</category>
      <category>Windows Phone Marketplace</category>
      <category>Windows Phone 8</category>
    </item>
  <item>
      <title>Inside the TechDays Belgium Apps</title>
      <description><![CDATA[<p>This is a recording from an MSDN webcast&nbsp;on&nbsp;March 26, 2013.</p><p><strong>Abstract <br></strong>Going to a technical conference like <a href="http://techdays.be" target="_blank">Microsoft TechDays</a>&nbsp;is something many developers and it pro's look forward to a long time in advance. Three days full of great content, great speakers and the possibility to meet amazing people, learn a lot of new stuff and get in touch with new technologies. With around 80 sessions to choose from, it is not always easy to pick the ones you really want to see and to keep an overview of your own day planning.<br><br>Therefor Microsoft and three Cronos companies, Monkeyshot, Pocket-pro and AppStory, decided to enrich the event experience by developing a Windows Phone and Windows 8 app, linked together by Windows Azure.</p><p>This session will show you how these 2 apps and the full backend were developed in only a few weeks' time, which challenges had to be overcome and how the technical solution looks like.</p><div class="ExternalClass85E817AD87174C68AA8422653D3B005F"><div><strong>Speakers: </strong><a href="https://twitter.com/kristofrennen" target="_blank">Kristof Rennen</a>&nbsp;and <a href="https://twitter.com/gittetitter" target="_blank">Gitte Vermeiren</a><strong>.</strong></div><div>&nbsp;</div><div><a href="http://www.slideshare.net/msdnbelux/inside-the-microsoft-techdays-belgium-apps" target="_blank"><strong>Download the slides.</strong></a></div><div>&nbsp;</div></div><p><strong>Extra&nbsp;<br></strong><strong><span lang="EN-US">- </span></strong><span lang="EN-US">Download the TechDays apps: <a href="http://apps.microsoft.com/windows/nl-BE/app/microsoft-techdays-belux-2013/2f78d6eb-5ebe-4407-8367-41c75e509483" target="_blank">Windows 8</a> | <a href="http://www.windowsphone.com/nl-be/store/app/techdays-2013-belux/d50619bc-6c55-490d-8fd8-f6710f317339" target="_blank">Windows Phone</a></span><strong><span lang="EN-US"><br>- </span></strong><span lang="EN-US">Have a look at the <strong>next events&nbsp;</strong>we have planned for developers in Belgium: <a href="http://msdn-events.be/">http://msdn-events.be</a></span><strong><span lang="EN-US">&nbsp;</span> <br></strong>- Belgian app builders: discover your new home: <a href="http://msdn.be/apps">http://msdn.be/apps</a> AKA the <strong>Apps on Windows</strong> portal.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:7ad25ecefe8d4e118076a19400a6ce7d">]]></description>
      <comments>http://channel9.msdn.com/posts/Inside-the-TechDays-Belgium-Apps</comments>
      <itunes:summary>This is a recording from an MSDN webcast&amp;nbsp;on&amp;nbsp;March 26, 2013. Abstract Going to a technical conference like Microsoft TechDays&amp;nbsp;is something many developers and it pro&#39;s look forward to a long time in advance. Three days full of great content, great speakers and the possibility to meet amazing people, learn a lot of new stuff and get in touch with new technologies. With around 80 sessions to choose from, it is not always easy to pick the ones you really want to see and to keep an overview of your own day planning.Therefor Microsoft and three Cronos companies, Monkeyshot, Pocket-pro and AppStory, decided to enrich the event experience by developing a Windows Phone and Windows 8 app, linked together by Windows Azure. This session will show you how these 2 apps and the full backend were developed in only a few weeks&#39; time, which challenges had to be overcome and how the technical solution looks like. Speakers: Kristof Rennen&amp;nbsp;and Gitte Vermeiren.&amp;nbsp;Download the slides.&amp;nbsp;Extra&amp;nbsp;- Download the TechDays apps: Windows 8 | Windows Phone- Have a look at the next events&amp;nbsp;we have planned for developers in Belgium: http://msdn-events.be&amp;nbsp; - Belgian app builders: discover your new home: http://msdn.be/apps AKA the Apps on Windows portal. </itunes:summary>
      <itunes:duration>4737</itunes:duration>
      <link>http://channel9.msdn.com/posts/Inside-the-TechDays-Belgium-Apps</link>
      <pubDate>Tue, 02 Apr 2013 13:22:33 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Inside-the-TechDays-Belgium-Apps</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_512.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_960.jpg" height="720" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.mp3" expression="full" duration="4737" fileSize="75805420" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.mp4" expression="full" duration="4737" fileSize="422836857" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.webm" expression="full" duration="4737" fileSize="143029980" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.wma" expression="full" duration="4737" fileSize="38315043" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.wmv" expression="full" duration="4737" fileSize="185851571" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_high.mp4" expression="full" duration="4737" fileSize="951477886" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_mid.mp4" expression="full" duration="4737" fileSize="660016584" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps_Source.wmv" expression="full" duration="4737" fileSize="298281977" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.ism/manifest" expression="full" duration="4737" fileSize="6250" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/7d07/36a2976c-267b-4c28-8b06-cc68054a7d07/insidetechdaysapps.wmv" length="185851571" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Anthony de Bruyn</dc:creator>
      <itunes:author>Anthony de Bruyn</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Inside-the-TechDays-Belgium-Apps/rss</wfw:commentRss>
      <category>BeLux</category>
      <category>TechDays</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>IWP51: JC shows us his Moga</title>
      <description><![CDATA[<p>I met up with my colleague Jean- Christophe Cimetiere at GDC today, where he demonstrated the Moga Controller working with Windows Phone.</p><p>Find out more about the Moga controller at <a href="http://www.mogaanywhere.com/">http://www.mogaanywhere.com/</a>.</p><p>Questions?</p><p>Tweet to <a href="https://twitter.com/intent/tweet?screen_name=LarryALieberman" target="_blank">@LarryALieberman</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0e870b95894841689eb0a18d00eb6329">]]></description>
      <comments>http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP51-JC-shows-us-his-Moga</comments>
      <itunes:summary>I met up with my colleague Jean- Christophe Cimetiere at GDC today, where he demonstrated the Moga Controller working with Windows Phone. Find out more about the Moga controller at http://www.mogaanywhere.com/. Questions? Tweet to @LarryALieberman </itunes:summary>
      <itunes:duration>183</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP51-JC-shows-us-his-Moga</link>
      <pubDate>Wed, 27 Mar 2013 14:45:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP51-JC-shows-us-his-Moga</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.mp3" expression="full" duration="183" fileSize="2943391" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.mp4" expression="full" duration="183" fileSize="18212949" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.webm" expression="full" duration="183" fileSize="6988890" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.wma" expression="full" duration="183" fileSize="1501023" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.wmv" expression="full" duration="183" fileSize="24705311" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_high.mp4" expression="full" duration="183" fileSize="39941485" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_mid.mp4" expression="full" duration="183" fileSize="27958051" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a_Source.wmv" expression="full" duration="183" fileSize="446579257" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.ism/manifest" expression="full" duration="183" fileSize="9894" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/a21b/59f48bc0-92d9-4475-9d9e-8fee30e6a21b/iwp51a.wmv" length="24705311" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Larry Lieberman</dc:creator>
      <itunes:author>Larry Lieberman</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Inside+Windows+Phone/IWP51-JC-shows-us-his-Moga/RSS</wfw:commentRss>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Near Field Communication (NFC) with Windows Phone 8</title>
      <description><![CDATA[<p>This is a recording from an MSDN webcast&nbsp;on&nbsp;February 19, 2013.</p><p><strong>Abstract <br></strong>Near-Field-Communication is a technology that has been around for a while but only recently started finding its way onto mobile phones. Microsoft introduced NFC support in Windows Phone allowing developers to leverage this impressive and cheap technology. In this session Nico Vermeir will explain you all about what makes NFC tags tick and how you leverage them in your Windows Phone 8 applications. Learn how to read and write tags, launch apps from a tag and pass parameters to your app.</p><div class="ExternalClass85E817AD87174C68AA8422653D3B005F"><div><strong>Speaker: <a href="http://www.microsoft.com/belux/meet/#Nico&#43;Vermeir" target="_blank">Nico Vermeir</a>.</strong></div><div>&nbsp;</div></div><p><a href="http://www.slideshare.net/nicovermeir/nfc-in-wp8" target="_blank"><strong>Download the slides.</strong></a><br><strong><br>Extra<br>- </strong>Demo project presented by Nico during the webcast: <a href="http://sdrv.ms/139UV6U">http://sdrv.ms/139UV6U</a><strong><br></strong><strong><span lang="EN-US">- </span></strong><span lang="EN-US">Download the <a href="https://dev.windowsphone.com/en-us/downloadsdk" target="_blank">Windows Phone SDK</a>.</span><strong><span lang="EN-US"> <br>-&nbsp;</span></strong><span lang="EN-US">Have a look at the <strong>next events&nbsp;</strong>we have planned for developers in Belgium: <a href="http://msdn-events.be/">http://msdn-events.be</a></span><strong><span lang="EN-US">&nbsp;</span> </strong><br>- Belgian app builders: discover your new home: <a href="http://msdn.be/apps">http://msdn.be/apps</a> AKA the <strong>Apps on Windows</strong> portal.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:7f48a8f2d48440f69e6ca18c00ebd982">]]></description>
      <comments>http://channel9.msdn.com/posts/Near-Field-Communication-NFC-with-Windows-Phone-8</comments>
      <itunes:summary>This is a recording from an MSDN webcast&amp;nbsp;on&amp;nbsp;February 19, 2013. Abstract Near-Field-Communication is a technology that has been around for a while but only recently started finding its way onto mobile phones. Microsoft introduced NFC support in Windows Phone allowing developers to leverage this impressive and cheap technology. In this session Nico Vermeir will explain you all about what makes NFC tags tick and how you leverage them in your Windows Phone 8 applications. Learn how to read and write tags, launch apps from a tag and pass parameters to your app. Speaker: Nico Vermeir.&amp;nbsp;Download the slides.Extra- Demo project presented by Nico during the webcast: http://sdrv.ms/139UV6U- Download the Windows Phone SDK. -&amp;nbsp;Have a look at the next events&amp;nbsp;we have planned for developers in Belgium: http://msdn-events.be&amp;nbsp; - Belgian app builders: discover your new home: http://msdn.be/apps AKA the Apps on Windows portal. </itunes:summary>
      <itunes:duration>2474</itunes:duration>
      <link>http://channel9.msdn.com/posts/Near-Field-Communication-NFC-with-Windows-Phone-8</link>
      <pubDate>Mon, 25 Mar 2013 15:18:26 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Near-Field-Communication-NFC-with-Windows-Phone-8</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_512.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.mp3" expression="full" duration="2474" fileSize="39594729" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.mp4" expression="full" duration="2474" fileSize="209572996" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.webm" expression="full" duration="2474" fileSize="53728638" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.wma" expression="full" duration="2474" fileSize="20014675" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.wmv" expression="full" duration="2474" fileSize="92791673" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_high.mp4" expression="full" duration="2474" fileSize="504491614" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_mid.mp4" expression="full" duration="2474" fileSize="359300481" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico_Source.wmv" expression="full" duration="2474" fileSize="96204399" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.ism/manifest" expression="full" duration="2474" fileSize="6230" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/73de/f08cc752-e536-4008-acc7-aaf15de173de/nfcwinphone8nico.wmv" length="92791673" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Anthony de Bruyn</dc:creator>
      <itunes:author>Anthony de Bruyn</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Near-Field-Communication-NFC-with-Windows-Phone-8/rss</wfw:commentRss>
      <category>BeLux</category>
      <category>Windows  Phone</category>
      <category>Windows Phone 8</category>
    </item>
  <item>
      <title>TWC9: IE10 for Win7, VS Guides, Image Watch, Tons of Training and more</title>
      <description><![CDATA[<p>This week on Channel 9, Brian and Dan discuss the week's top developer news, including;</p><ul><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=26s">[0:26]</a>&nbsp;<a href="http://blogs.msdn.com/b/ie/archive/2013/02/26/ie10-for-windows-7-globally-available-for-consumers-and-businesses.aspx">IE10 for Windows 7 Globally Available for Consumers and Businesses</a>, <a href="http://www.hanselman.com/blog/RELEASEDDownloadInternetExplorer10ForWindows7.aspx">RELEASED - Download Internet Explorer 10 for Windows 7</a> (Scott Hanselman) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=2m">[2:00]</a>&nbsp;<a href="http://www.sadev.co.za/content/visual-studio-2012-update-guide">Visual Studio 2012 Update Guide</a> (Robert MacLean) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=2m25s">[2:25]</a>&nbsp;<a href="http://www.sadev.co.za/content/visual-studio-extension-guide">Visual Studio Extension Guide</a> (Robert MacLean) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=2m53s">[2:53]</a>&nbsp;<a href="http://channel9.msdn.com/posts/Introducing-Image-Watch">Introducing Image Watch - A VS 2012 Plug-In for C&#43;&#43; Image and Video Debugging</a> (Wolf Kienzle), <a href="http://blogs.technet.com/b/inside_microsoft_research/archive/2013/02/27/image-debugging-for-visual-studio.aspx">Image Debugging for Visual Studio</a> (Rob Knies ), <a href="http://visualstudiogallery.msdn.microsoft.com/e682d542-7ef3-402c-b857-bbfba714f78d">[Visual Studio Gallery] Image Watch</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=4m1s">[4:01]</a>&nbsp;<a href="http://www.windowsphone.com/en-us/store/app/dev-center/2d3063c2-4b29-4e69-9c03-50b67b0e6aec">[Window Phone] Dev Center app</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=4m33s">[4:33]</a>&nbsp;<a href="http://stevenhollidge.blogspot.com/2013/02/windows-store-app-example-itinerary.html">Windows Store App Example: Itinerary Hunter</a> (Steven Hollidge) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=5m5s">[5:05]</a>&nbsp;<a href="http://en.wikipedia.org/wiki/User:Svick/LinqToWiki">LinqToWiki</a> [Found Via <a href="http://www.reddit.com/r/dotnet/comments/1958iu/linqtowiki_a_strongly_typed_library_for_accessing/">LinqToWiki: A strongly typed library for accessing the Wikipedia API</a>] </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=5m56s">[5:56]</a>&nbsp;<a href="http://html5doctor.com/html5-forms-introduction-and-new-attributes/">HTML5 forms introduction and new attributes</a> (Richard Clark) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=6m44s">[6:44]</a>&nbsp;<a href="http://channel9.msdn.com/Blogs/Subscribe/Service-Bus-Messaging-Deep-Dive">Service Bus Messaging Deep-Dive</a> (Clemens Vasters) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=7m33s">[7:33]</a>&nbsp;<a href="http://channel9.msdn.com/Series/Windows-Store-apps-for-Absolute-Beginners-with-JavaScript" target="_blank">Windows Store apps for Absolute Beginners with JavaScript</a> (Bob Tabor, Dan Fernandez, Jaime Rodriguez, Golnaz) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=8m26s">[8:26]</a>&nbsp;<a href="http://channel9.msdn.com/Series/Building-Web-Apps-with-ASP-NET-Jump-Start">Building Web Apps with ASP.NET Jump Start</a> (Scott Hanselman, Jon Galloway, Damian Edwards) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=9m11s">[9:11]</a>&nbsp;<a href="http://channel9.msdn.com/Series/Building-Apps-for-Both-Windows-8-and-Windows-Phone-8-Jump-Start">Building Apps for Both Windows 8 and Windows Phone 8 Jump Start</a> (Ben Riga) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=9m38s">[9:38]</a>&nbsp;<a href="http://www.learninglineapp.com/">LearningLine</a>, Get your free one month via:&nbsp;<a href="http://bit.ly/learningline-twc9">http://bit.ly/learningline-twc9</a> </li></ul><p>Picks of the Week!</p><ul><li>Brian's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=10m43s">[10:43]</a> <a href="http://www.johndcook.com/blog/2013/02/26/geeky-company-names">Geeky company names</a> (John D. Cook) </li><li>Dan's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-March-1-2013#time=11m36s">[11:36]</a> <a href="http://www.youtube.com/watch?feature=player_embedded&amp;v=ho00x7ZvDLw" target="_blank">Microsoft Vision</a> </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2beb6f58d04c4877b56fa1740138ab14">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-March-1-2013</comments>
      <itunes:summary>This week on Channel 9, Brian and Dan discuss the week&#39;s top developer news, including; [0:26]&amp;nbsp;IE10 for Windows 7 Globally Available for Consumers and Businesses, RELEASED - Download Internet Explorer 10 for Windows 7 (Scott Hanselman) [2:00]&amp;nbsp;Visual Studio 2012 Update Guide (Robert MacLean) [2:25]&amp;nbsp;Visual Studio Extension Guide (Robert MacLean) [2:53]&amp;nbsp;Introducing Image Watch - A VS 2012 Plug-In for C&amp;#43;&amp;#43; Image and Video Debugging (Wolf Kienzle), Image Debugging for Visual Studio (Rob Knies ), [Visual Studio Gallery] Image Watch [4:01]&amp;nbsp;[Window Phone] Dev Center app [4:33]&amp;nbsp;Windows Store App Example: Itinerary Hunter (Steven Hollidge) [5:05]&amp;nbsp;LinqToWiki [Found Via LinqToWiki: A strongly typed library for accessing the Wikipedia API] [5:56]&amp;nbsp;HTML5 forms introduction and new attributes (Richard Clark) [6:44]&amp;nbsp;Service Bus Messaging Deep-Dive (Clemens Vasters) [7:33]&amp;nbsp;Windows Store apps for Absolute Beginners with JavaScript (Bob Tabor, Dan Fernandez, Jaime Rodriguez, Golnaz) [8:26]&amp;nbsp;Building Web Apps with ASP.NET Jump Start (Scott Hanselman, Jon Galloway, Damian Edwards) [9:11]&amp;nbsp;Building Apps for Both Windows 8 and Windows Phone 8 Jump Start (Ben Riga) [9:38]&amp;nbsp;LearningLine, Get your free one month via:&amp;nbsp;http://bit.ly/learningline-twc9 Picks of the Week! Brian&#39;s Pick of the Week:[10:43] Geeky company names (John D. Cook) Dan&#39;s Pick of the Week:[11:36] Microsoft Vision </itunes:summary>
      <itunes:duration>766</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-March-1-2013</link>
      <pubDate>Fri, 01 Mar 2013 21:37:16 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-March-1-2013</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.mp3" expression="full" duration="766" fileSize="12267938" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.mp4" expression="full" duration="766" fileSize="74323143" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.webm" expression="full" duration="766" fileSize="28443273" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.wma" expression="full" duration="766" fileSize="6205287" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.wmv" expression="full" duration="766" fileSize="40539233" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_high.mp4" expression="full" duration="766" fileSize="161718219" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_mid.mp4" expression="full" duration="766" fileSize="113292370" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302_Source.wmv" expression="full" duration="766" fileSize="137244133" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.ism/manifest" expression="full" duration="766" fileSize="6036" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/aa53/728c6633-50d2-44e7-a8e2-675de218aa53/TWC920130302.wmv" length="40539233" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brian Keller, Dan Fernandez, Greg Duncan</dc:creator>
      <itunes:author>Brian Keller, Dan Fernandez, Greg Duncan</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-March-1-2013/RSS</wfw:commentRss>
      <category>.NET Service Bus</category>
      <category>ASP.NET</category>
      <category>C++</category>
      <category>HTML5</category>
      <category>JavaScript</category>
      <category>Visual Studio</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Benjamin Soulier Logs Into a Web Site Using a Bar Code and Windows Phone</title>
      <description><![CDATA[<p>Join your guides&nbsp;<a href="http://www.bradygaster.com/">Brady Gaster</a>&nbsp;and&nbsp;<a href="http://blog.syntaxc4.net/">Cory Fowler</a>&nbsp;as they talk to the product teams in Redmond as well as the web community.</p><p>This week,&nbsp;MVP Benjamin Soulier from <a href="http://www.ctp.com/" target="_blank">Cambridge Technology Partners</a>&nbsp;shows us an awesome demonstration using a Windows Azure Web Site, his Windows Phone, Windows Azure Access Control Service, and a bar code.&nbsp;Benjamin has invented a great way to perform authentication using&nbsp;ACS, and he's here in the studio to show us how it works. This is one of the coolest demonstrations we've seen on the show yet. You'll be scratching your head asking, &quot;Now how did he do that?&quot;</p><p>We also have some welcome guests on the show—some MVPs we know from our communities. We'll introduce you to these guys, and to an east-coast event known as <a href="http://madexpo.us/" target="_blank">MADExpo</a>, which some of the MVPs are involved in facilitating.</p><p><a href="https://twitter.com/bsoulier">Follow Benjamin Soulier</a></p><p><a href="https://twitter.com/bradygaster">Follow Brady Gaster</a></p><p><a href="https://twitter.com/SyntaxC4">Follow Cory Fowler</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:68c0a11032214483835ca16d0019e344">]]></description>
      <comments>http://channel9.msdn.com/Shows/Web+Camps+TV/Benjamin-Soulier-Logs-into-a-Web-Site-Using-a-Bar-Code-and-Windows-Phone</comments>
      <itunes:summary>Join your guides&amp;nbsp;Brady Gaster&amp;nbsp;and&amp;nbsp;Cory Fowler&amp;nbsp;as they talk to the product teams in Redmond as well as the web community. This week,&amp;nbsp;MVP Benjamin Soulier from Cambridge Technology Partners&amp;nbsp;shows us an awesome demonstration using a Windows Azure Web Site, his Windows Phone, Windows Azure Access Control Service, and a bar code.&amp;nbsp;Benjamin has invented a great way to perform authentication using&amp;nbsp;ACS, and he&#39;s here in the studio to show us how it works. This is one of the coolest demonstrations we&#39;ve seen on the show yet. You&#39;ll be scratching your head asking, &amp;quot;Now how did he do that?&amp;quot; We also have some welcome guests on the show—some MVPs we know from our communities. We&#39;ll introduce you to these guys, and to an east-coast event known as MADExpo, which some of the MVPs are involved in facilitating. Follow Benjamin Soulier Follow Brady Gaster Follow Cory Fowler </itunes:summary>
      <itunes:duration>2087</itunes:duration>
      <link>http://channel9.msdn.com/Shows/Web+Camps+TV/Benjamin-Soulier-Logs-into-a-Web-Site-Using-a-Bar-Code-and-Windows-Phone</link>
      <pubDate>Mon, 25 Feb 2013 11:00:36 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/Web+Camps+TV/Benjamin-Soulier-Logs-into-a-Web-Site-Using-a-Bar-Code-and-Windows-Phone</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.mp3" expression="full" duration="2087" fileSize="33404395" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.mp4" expression="full" duration="2087" fileSize="201759925" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.webm" expression="full" duration="2087" fileSize="72131408" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.wma" expression="full" duration="2087" fileSize="16890515" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.wmv" expression="full" duration="2087" fileSize="146435903" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_high.mp4" expression="full" duration="2087" fileSize="441849112" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_mid.mp4" expression="full" duration="2087" fileSize="308376750" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone_Source.wmv" expression="full" duration="2087" fileSize="490466549" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.ism/manifest" expression="full" duration="2087" fileSize="6396" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/16d1/c47a32e1-cf7c-49c6-b049-9260493d16d1/BenjaminSoulierLogsInUsingBarCodeAndWindowsPhone.wmv" length="146435903" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Cory Fowler, Brady Gaster</dc:creator>
      <itunes:author>Cory Fowler, Brady Gaster</itunes:author>
      <slash:comments>12</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/Web+Camps+TV/Benjamin-Soulier-Logs-into-a-Web-Site-Using-a-Bar-Code-and-Windows-Phone/RSS</wfw:commentRss>
      <category>ACS</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>TWC9: New Tools, New Videos, New Talks, New Shows and more</title>
      <description><![CDATA[<p>This week on Channel 9, Brian and Dan discuss the week's top developer news, including;</p><ul><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=42s">[0:42]</a>&nbsp;<a href="http://weblogs.asp.net/scottgu/archive/2013/02/18/announcing-release-of-asp-net-and-web-tools-2012-2-update.aspx">Announcing release of ASP.NET and Web Tools 2012.2 Update</a> (Scott Guthrie) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=2m21s">[2:21]</a>&nbsp;<a href="http://weblogs.asp.net/gunnarpeipman/archive/2013/02/19/four-new-single-page-application-templates.aspx">Four new single page application templates</a> (Gunnar Peipman) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=3m38s">[3:38]</a>&nbsp;<a href="http://channel9.msdn.com/posts/Introduction-to-the-ASPNET-and-Web-Tools-20122-Release" target="_blank">Introduction to the ASP.NET and Web Tools 2012.2 Release</a> (Jon Galloway) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=4m6s">[4:06]</a>&nbsp;<a href="http://blogs.msdn.com/b/bclteam/archive/2013/02/18/portable-httpclient-for-net-framework-and-windows-phone.aspx">Portable HttpClient for .NET Framework and Windows Phone</a> (Immo Landwerth) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=5m12s">[5:12]</a> Channel 9 Highlight: <a href="http://channel9.msdn.com/Events/ALM-Summit/ALM-Summit-3">ALM Summit 3</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=6m15s">[6:15]</a>&nbsp;<a href="http://blogs.msdn.com/b/usisvde/archive/2013/02/20/new-windows-azure-videos-on-channel-9.aspx">New Windows Azure Videos on Channel 9</a>, <a href="http://channel9.msdn.com/WindowsAzure">Azure on Channel 9</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=7m16s">[7:16]</a>&nbsp;<a href="http://blogs.msdn.com/b/malaysia/archive/2013/02/20/right-click-create-unit-tests.aspx">Right-Click, Create Unit Tests</a>, <a href="http://serena-yeoh.blogspot.com/2013/02/visual-studio-2012-create-unit-test.html">Right-Click, Create Unit Tests...</a> (Serena Yeoh) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=8m31s">[8:31]</a>&nbsp;<a href="http://www.brentozar.com/archive/2013/02/7-things-developers-should-know-about-sql-server/">7 Things Developers Should Know About SQL Server</a> (Brent Ozar) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=10m20s">[10:20]</a>&nbsp;<a href="http://blogs.msdn.com/b/lucian/archive/2013/02/18/talk-the-new-async-design-patterns.aspx">Talk: The New Async Design Pattern</a>, <a href="http://blogs.msdn.com/b/lucian/archive/2013/02/17/talk-async-part-2-for-architects-under-the-hood.aspx">Talk: Async Part 2 - for architects, under the hood</a> (Lucian Wischik) </li></ul><p><strong>Picks of the Week!</strong></p><ul><li>Brian's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=11m19s">[11:19]</a>&nbsp;<a href="http://blogs.like10.com/2013/02/20/rangers-ship-brdlite-build-release-deploy/">Rangers ship BRDLite (Build-Release-Deploy)</a> (Wes Macdonald) </li><li>Dan's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-February-22-2013#time=12m39s">[12:39]</a> <a href="http://channel9.msdn.com/Shows/Windows-Store-Weekly">Windows Store Weekly</a> - <a href="http://channel9.msdn.com/Shows/Windows-Store-Weekly/Windows-Store-Weekly-Skulls-of-the-Shogun-Perfect365-eBay-Penguin-Almighty-Tasks-by-Telerik" target="_blank">Skulls of the Shogun, Perfect365, ebay, Penguin Almighty, Tasks by Telerik</a> (Laura Foy) </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:317fa21ec6b74b1d87d3a16c017bd6d2">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-New-Tools-New-Videos-New-Talks-New-Shows-and-more</comments>
      <itunes:summary>This week on Channel 9, Brian and Dan discuss the week&#39;s top developer news, including; [0:42]&amp;nbsp;Announcing release of ASP.NET and Web Tools 2012.2 Update (Scott Guthrie) [2:21]&amp;nbsp;Four new single page application templates (Gunnar Peipman) [3:38]&amp;nbsp;Introduction to the ASP.NET and Web Tools 2012.2 Release (Jon Galloway) [4:06]&amp;nbsp;Portable HttpClient for .NET Framework and Windows Phone (Immo Landwerth) [5:12] Channel 9 Highlight: ALM Summit 3 [6:15]&amp;nbsp;New Windows Azure Videos on Channel 9, Azure on Channel 9 [7:16]&amp;nbsp;Right-Click, Create Unit Tests, Right-Click, Create Unit Tests... (Serena Yeoh) [8:31]&amp;nbsp;7 Things Developers Should Know About SQL Server (Brent Ozar) [10:20]&amp;nbsp;Talk: The New Async Design Pattern, Talk: Async Part 2 - for architects, under the hood (Lucian Wischik) Picks of the Week! Brian&#39;s Pick of the Week:[11:19]&amp;nbsp;Rangers ship BRDLite (Build-Release-Deploy) (Wes Macdonald) Dan&#39;s Pick of the Week:[12:39] Windows Store Weekly - Skulls of the Shogun, Perfect365, ebay, Penguin Almighty, Tasks by Telerik (Laura Foy) </itunes:summary>
      <itunes:duration>846</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-New-Tools-New-Videos-New-Talks-New-Shows-and-more</link>
      <pubDate>Fri, 22 Feb 2013 23:27:31 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-New-Tools-New-Videos-New-Talks-New-Shows-and-more</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.mp3" expression="full" duration="846" fileSize="13540623" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.mp4" expression="full" duration="846" fileSize="80823036" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.webm" expression="full" duration="846" fileSize="31478729" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.wma" expression="full" duration="846" fileSize="6848143" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.wmv" expression="full" duration="846" fileSize="50639147" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_high.mp4" expression="full" duration="846" fileSize="176844725" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_mid.mp4" expression="full" duration="846" fileSize="123639964" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222_Source.wmv" expression="full" duration="846" fileSize="102953415" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.ism/manifest" expression="full" duration="846" fileSize="6036" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/6c9c/35069587-46c9-4d0c-9b93-b0e421446c9c/TWC920130222.wmv" length="50639147" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Brian Keller, Dan Fernandez, Greg Duncan</dc:creator>
      <itunes:author>Brian Keller, Dan Fernandez, Greg Duncan</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-New-Tools-New-Videos-New-Talks-New-Shows-and-more/RSS</wfw:commentRss>
      <category>ALM</category>
      <category>ASP.NET</category>
      <category>SQL Server</category>
      <category>Unit Testing</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Connecting Cross Platform Devices using Windows Azure Mobile Services</title>
      <description><![CDATA[<p>This is a recording from an MSDN webcast&nbsp;on&nbsp;February 5, 2013.</p><p><strong>Abstract <br></strong><span lang="EN-US">People are getting more and more connected and moving away from computers to using more mobile devices than ever before. Tablets, phones, slates are becoming the new computers. <br><br></span><span lang="EN-US">All these devices and applications also need data, synchronization, security and much more. The broad reach, the number of devices and apps and the big amount of different platforms existing today, are pushing the needs for scalable and high available solutions running on a solid cloud platform, like Windows Azure.<br><br></span><span lang="EN-US">One of the killer features of Windows Azure is WAMS, Windows Azure Mobile Services. A solid platform to connect cross platform devices and to open up a big set of features needed to build mobile applications.</span></p><div class="ExternalClass85E817AD87174C68AA8422653D3B005F"><div><span lang="EN-US">In this session we will give you an introduction to WAMS, show you its true power and demonstrate how it can be used on multiple platforms to have one common way of connectivity. In just a matter of minutes you can </span><span lang="EN-US">open up your data to mobile users across multiple mobile platforms, while keeping the flexibility of validation and queries. Need secure authentication or single-sign on using your favorite social identity provider, or want to send push notifications to the notify users of important updates? That and many more things can be achieved with Azure Mobile Services.&nbsp;<br></span></div><div><span id="ms-rterangepaste-end">Watch this demo-packed session to experience the power of Azure Mobile Services for building your mobile applications.</span></div><div>&nbsp;</div><div><strong>Speaker: <a href="http://twitter.com/kristofrennen" target="_blank">Kristof Rennen</a></strong></div><div>&nbsp;</div></div><p><a href="http://www.slideshare.net/msdnbelux/windows-azure-mobile-services-connecting-cross-platform-devices-16383212"><strong>Download the slides.</strong></a><br><br><strong>Resources <br></strong>- <a href="http://sdrv.ms/11L9SQQ" target="_blank">Scripts</a> Kristof used during the live&nbsp;session.<br>- Read more about <a href="http://www.windowsazure.com/en-us/develop/mobile/%20" target="_blank">Windows Azure Mobile Services</a>.<br><strong><span lang="EN-US">-&nbsp;</span></strong><span lang="EN-US">Have a look at the <strong>next events&nbsp;</strong>we have planned for developers in Belgium: <a href="http://msdn-events.be/">http://msdn-events.be</a></span><strong><span lang="EN-US">&nbsp;</span> <br></strong>- Belgian app builders: discover your new home: <a href="http://msdn.be/apps">http://msdn.be/apps</a> AKA the <strong>Apps on Windows</strong> portal.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:93bd6900364044b2bbbaa162011ee809">]]></description>
      <comments>http://channel9.msdn.com/posts/Connecting-Cross-Platform-Devices-using-Windows-Azure-Mobile-Services</comments>
      <itunes:summary>This is a recording from an MSDN webcast&amp;nbsp;on&amp;nbsp;February 5, 2013. Abstract People are getting more and more connected and moving away from computers to using more mobile devices than ever before. Tablets, phones, slates are becoming the new computers. All these devices and applications also need data, synchronization, security and much more. The broad reach, the number of devices and apps and the big amount of different platforms existing today, are pushing the needs for scalable and high available solutions running on a solid cloud platform, like Windows Azure.One of the killer features of Windows Azure is WAMS, Windows Azure Mobile Services. A solid platform to connect cross platform devices and to open up a big set of features needed to build mobile applications. In this session we will give you an introduction to WAMS, show you its true power and demonstrate how it can be used on multiple platforms to have one common way of connectivity. In just a matter of minutes you can open up your data to mobile users across multiple mobile platforms, while keeping the flexibility of validation and queries. Need secure authentication or single-sign on using your favorite social identity provider, or want to send push notifications to the notify users of important updates? That and many more things can be achieved with Azure Mobile Services.&amp;nbsp;Watch this demo-packed session to experience the power of Azure Mobile Services for building your mobile applications.&amp;nbsp;Speaker: Kristof Rennen&amp;nbsp;Download the slides.Resources - Scripts Kristof used during the live&amp;nbsp;session.- Read more about Windows Azure Mobile Services.-&amp;nbsp;Have a look at the next events&amp;nbsp;we have planned for developers in Belgium: http://msdn-events.be&amp;nbsp; - Belgian app builders: discover your new home: http://msdn.be/apps AKA the Apps on Windows portal. </itunes:summary>
      <itunes:duration>3263</itunes:duration>
      <link>http://channel9.msdn.com/posts/Connecting-Cross-Platform-Devices-using-Windows-Azure-Mobile-Services</link>
      <pubDate>Mon, 11 Feb 2013 21:36:05 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Connecting-Cross-Platform-Devices-using-Windows-Azure-Mobile-Services</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.mp3" expression="full" duration="3263" fileSize="52212988" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.mp4" expression="full" duration="3263" fileSize="182635372" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.webm" expression="full" duration="3263" fileSize="90220923" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.wma" expression="full" duration="3263" fileSize="26398175" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.wmv" expression="full" duration="3263" fileSize="115827911" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_high.mp4" expression="full" duration="3263" fileSize="470300307" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_mid.mp4" expression="full" duration="3263" fileSize="287366399" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof_Source.wmv" expression="full" duration="3263" fileSize="452055722" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.ism/manifest" expression="full" duration="3263" fileSize="8718" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/0d11/3ed64522-a8d0-4738-b246-e8a317ba0d11/connectingcrossplatformkristof.wmv" length="115827911" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Anthony de Bruyn</dc:creator>
      <itunes:author>Anthony de Bruyn</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Connecting-Cross-Platform-Devices-using-Windows-Azure-Mobile-Services/rss</wfw:commentRss>
      <category>BeLux</category>
      <category>Windows  Phone</category>
      <category>Windows Azure Mobile Services</category>
    </item>
  <item>
      <title>TWC9: Fall Fury, Azure push, Windows Phone 7.8 SDK, CHEEVOS! </title>
      <description><![CDATA[<p>This week on Channel 9, Dan and Clint discuss the week's top developer news, including;</p><ul><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=34s">[0:34]</a>&nbsp;<a href="http://weblogs.asp.net/scottgu/archive/2013/01/22/announcing-release-of-windows-azure-media-services.aspx">Announcing Release of Windows Azure Media Services</a> (Scott Guthrie) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=1m42s">[1:42]</a>&nbsp;<a href="http://weblogs.asp.net/scottgu/archive/2013/01/22/broadcast-push-notifications-to-millions-of-mobile-devices-using-windows-azure-notification-hubs.aspx">Broadcast push notifications to millions of mobile devices using Windows Azure Notification Hubs</a> (Scott Guthrie) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=2m33s">[2:33]</a>&nbsp;<a href="http://blogs.windows.com/windows_phone/b/wpdev/archive/2013/01/22/now-available-windows-phone-sdk-update-for-7-8.aspx">Now Available: Windows Phone SDK Update for 7.8</a> (Cliff Simpkins ) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=3m25s">[3:25]</a>&nbsp;<a href="http://channel9.msdn.com/coding4fun/articles/Fall-Fury-Part-1-Introduction">Fall Fury: Part 1 - Introduction</a> (Den Delimarsky, Brian Peek, Clint Rutkas, Dan Fernandez, Rick Barraza ) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=5m16s">[5:16]</a>&nbsp;<a href="http://worldwidecode.wordpress.com/2013/01/19/tile-design-guidelines-for-windows-phone-8/">Tile design guidelines for Windows Phone 8</a> (Shubhan Chemburkar) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=6m8s">[6:08]</a>&nbsp;<a href="http://blogs.msdn.com/b/windowsappdev/archive/2013/01/21/building-the-bing-apps-for-windows-8.aspx">Building the Bing apps for Windows 8</a> (Jigar Thakkar) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=7m18s">[7:18]</a>&nbsp;<a href="http://www.codeproject.com/Articles/533151/Building-HTML5-Games-for-the-Atari-Arcade">Building HTML5 Games for the Atari Arcade</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=8m36s">[8:36]</a>&nbsp;<a href="http://blogs.msdn.com/b/webdev/archive/2013/01/23/introducing-svcperf-an-end-to-end-trace-analysis-tool-for-wcf.aspx">Introducing SvcPerf - An End-to-End trace Analysis tool for WCF</a> (Sajay Antony), <a href="http://svcperf.codeplex.com/">http://svcperf.codeplex.com/</a> </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=9m36s">[9:36]</a>&nbsp;<a href="http://research.microsoft.com/apps/pubs/default.aspx?id=180138">CODEMINE: Building a Software Analytics Platform for Collecting and Analyzing Engineering Process Data at Microsoft</a> (Jacek Czerwonka, Nachi Nagappan, and Wolfram Schulte) </li><li><a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=10m40s">[10:40]</a>&nbsp;<a href="http://channel9.msdn.com/Shows/C9-GoingNative/GoingNative-13-Visual-Studio-3D-Starter-Kit-Meet-Roberto-Sonnino" target="_blank">GoingNative 13: Visual Studio 3D Starter Kit, Meet Roberto Sonnino</a> </li></ul><p><strong>Picks of the Week!</strong></p><ul><li>Clint's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=11m43s">[11:43]</a>&nbsp;<a href="http://conversations.nokia.com/2013/01/18/everything-you-need-to-know-about-the-lumia-820-and-3d-printing/">Everything you need to know about the Lumia 820 and 3D printing</a> (Joel Willans) </li><li>Dan's Pick of the Week:<a href="http://channel9.msdn.com/Shows/This&#43;Week&#43;On&#43;Channel&#43;9/TWC9-January-25-2013#time=13m">[13:00]</a> <a href="http://channel9.msdn.com/Forums/Coffeehouse/Visual-Studio-Achievements-theyre-not-Xbox-live-right?page=1" target="_blank">Visual Studio ​Achievement​s; they're not Xbox live right? (Cheevos!)</a> </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:97e9b2fb00424aac953ba150016dd600">]]></description>
      <comments>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-January-25-2013</comments>
      <itunes:summary>This week on Channel 9, Dan and Clint discuss the week&#39;s top developer news, including; [0:34]&amp;nbsp;Announcing Release of Windows Azure Media Services (Scott Guthrie) [1:42]&amp;nbsp;Broadcast push notifications to millions of mobile devices using Windows Azure Notification Hubs (Scott Guthrie) [2:33]&amp;nbsp;Now Available: Windows Phone SDK Update for 7.8 (Cliff Simpkins ) [3:25]&amp;nbsp;Fall Fury: Part 1 - Introduction (Den Delimarsky, Brian Peek, Clint Rutkas, Dan Fernandez, Rick Barraza ) [5:16]&amp;nbsp;Tile design guidelines for Windows Phone 8 (Shubhan Chemburkar) [6:08]&amp;nbsp;Building the Bing apps for Windows 8 (Jigar Thakkar) [7:18]&amp;nbsp;Building HTML5 Games for the Atari Arcade [8:36]&amp;nbsp;Introducing SvcPerf - An End-to-End trace Analysis tool for WCF (Sajay Antony), http://svcperf.codeplex.com/ [9:36]&amp;nbsp;CODEMINE: Building a Software Analytics Platform for Collecting and Analyzing Engineering Process Data at Microsoft (Jacek Czerwonka, Nachi Nagappan, and Wolfram Schulte) [10:40]&amp;nbsp;GoingNative 13: Visual Studio 3D Starter Kit, Meet Roberto Sonnino Picks of the Week! Clint&#39;s Pick of the Week:[11:43]&amp;nbsp;Everything you need to know about the Lumia 820 and 3D printing (Joel Willans) Dan&#39;s Pick of the Week:[13:00] Visual Studio ​Achievement​s; they&#39;re not Xbox live right? (Cheevos!) </itunes:summary>
      <itunes:duration>864</itunes:duration>
      <link>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-January-25-2013</link>
      <pubDate>Fri, 25 Jan 2013 18:58:49 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-January-25-2013</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.mp3" expression="full" duration="864" fileSize="13830269" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.mp4" expression="full" duration="864" fileSize="82622182" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.webm" expression="full" duration="864" fileSize="33033362" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.wma" expression="full" duration="864" fileSize="6995339" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.wmv" expression="full" duration="864" fileSize="52754765" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_high.mp4" expression="full" duration="864" fileSize="180372448" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_mid.mp4" expression="full" duration="864" fileSize="126644743" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125_Source.wmv" expression="full" duration="864" fileSize="170550063" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.ism/manifest" expression="full" duration="864" fileSize="6036" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/30ad/6aa4f0fa-3790-46ba-af54-4a27273930ad/TWC920130125.wmv" length="52754765" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Clint Rutkas, Dan Fernandez, Greg Duncan</dc:creator>
      <itunes:author>Clint Rutkas, Dan Fernandez, Greg Duncan</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Shows/This+Week+On+Channel+9/TWC9-January-25-2013/RSS</wfw:commentRss>
      <category>3D</category>
      <category>DirectX</category>
      <category>HTML5</category>
      <category>Microsoft Research</category>
      <category>Push Notifcation</category>
      <category>WCF</category>
      <category>Windows Azure</category>
      <category>Windows  Phone</category>
      <category>Game Development</category>
      <category>Windows 8</category>
      <category>Windows Phone 8</category>
      <category>Windows Store App</category>
    </item>
  <item>
      <title>December News - Developer Movement, Windows 8 App Labs, Upcoming LIVE Streamed Events, and New On-Demand Videos</title>
      <description><![CDATA[<p><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/6116.ms_5F00_0314_5F00_d3_5F00_logo.png" alt=""></p><p>Host <a href="http://jrozenblit.ca/about">Jonathan Rozenblit</a> goes through the monthly developer news:</p><ul><li>Developer Movement is back - <a href="http://developermovement.ca" target="_blank">join the Developer Movement</a> to earn points and be rewarded for publishing Windows Store and Windows Phone apps, with bonus points for adding in Windows Azure services. </li><li><strong>Windows 8</strong> <ul><li>Celebrate the launch of Windows 8 with Tim Horton's - <a href="http://devs3.ms/getwinstore" target="_blank">register </a>for your Windows Store developer account, forward your confirmation email to <a href="mailto:win8cdn@microsoft.com">win8cdn@microsoft.com</a> and enjoy. More details <a href="http://devs3.ms/celebratewin8" target="_blank">here</a>. </li><li>Get started building apps - 5 steps to get you going <ul><li><a href="http://aka.ms/win8hols" target="_blank">Learn Windows 8 with hands-on labs</a> </li><li><a href="http://devs3.ms/startyourapp" target="_blank">Start your app</a> </li><li><a href="http://devs3.ms/appoomph" target="_blank">Give your app some oomph</a> </li><li><em><a href="http://devs3.ms/w8applabs" target="_blank">Check out an app lab</a></em> </li><li><a href="http://devs3.ms/appcertprep" target="_blank">Prepare for certification</a> </li></ul></li><li>App Labs are starting to fill up fast. If you'd like to give your app a test drive on Windows 8 devices and have access to expert help, make sure to <a href="http://devs3.ms/w8applabs" target="_blank">register for an app lab appointment</a>&nbsp;today. </li></ul></li><li><strong>Windows Phone 8 </strong>- The Windows Phone 8 developer platform is here. <a href="http://devs3.ms/gowp8" target="_blank">Get started</a>. </li></ul><p><strong>Upcoming Events</strong></p><ul><li><a href="http://devs3.ms/devteachkeynote" target="_blank">Live from DevTeach Montreal</a>&nbsp;<strong>(LIVE, December 10, 6:30pm ET)</strong> - Howard Dierking from Microsoft Corp. keynotes DevTeach - Beyond VMs: From Saving Money to Adding Value. Of course everyone wants to save money – right? But how true is this in practice&nbsp; when it comes to cloud computing? And more importantly, if the cloud is little&nbsp; more than a bunch of rented virtual machines hosted by someone else, are you&nbsp; actually saving money? At the end of the day, business exists not to save money,&nbsp; but to make it, and if you're going to invest in the cloud, you should expect it&nbsp; to help you make money. Put another way, the cloud should be about adding value,&nbsp; not simply reducing costs. Come learn how Windows Azure makes the cloud into&nbsp; something that helps you reach more clients, gain deeper business insights,&nbsp; and yea, even save some money in the process. </li><li><a href="http://devs3.ms/officevirtualcamp" target="_blank">Office and SharePoint DevCamp&nbsp;</a><strong>(LIVE, December 14, 8:00am ET)</strong> - Covering topics such as building apps for Office, SharePoint, and Office 365 using web technologies you already know and leveraging the new Cloud app model, and more. </li></ul><p>Be in the know of all developer events happening across Canada. Check out the <a href="http://devs3.ms/cdndevevents" target="_blank">Canadian Developer Events directory</a>&nbsp;and make sure to subscribe via RSS, email, or iCal to be notified as soon as new events are added or existing ones are modified.</p><p><strong>New On-Demand</strong></p><ul><li><a href="http://pureimagination.ca" target="_blank">Pure Imagination</a>&nbsp;- 4 tracks, 23 sessions covering everything you need to know to turn your idea into the next great Canadian app. </li><li><a href="http://aka.ms/vsrise" target="_blank">Rise to the Modern App Challenge</a> -&nbsp;<span>Microsoft and ALM Certified Partner experts explore today's IT reality, modern app development challenges, and how tools such as Visual Studio 2012 and Team Foundation Server 2012 can help remedy those challenges.</span> </li></ul><p><a href="http://devs3.ms/d3ep13" target="_blank">Watch the full episode &gt;&gt;</a></p><p><strong>Happy Holidays!</strong></p><p>From all of us here at Microsoft Canada, happy holidays! Happy New Year! See you in 2013!</p><p><strong>D³: LIVE &amp; INTERACTiVE <br></strong>In case you haven't heard about the show, <a href="http://devs3.ms/devscubed">Developers, Developers, Developers: LIVE &amp; INTERACTIVE</a> (D³) is a monthly show hosted by <a href="http://jrozenblit.ca/about">Jonathan Rozenblit</a>. The show airs live <strong>every first Wednesday of the month at 12:00 PM ET</strong> and features the latest updates on what's new and exciting in the world of development; featured presentations; and guests. LIVE and INTERACTIVE means that you'll be part of the show – You're invited to interact with us; ask questions and get them answered; and share your thoughts and opinions.</p><p><a href="http://linkd.in/CanadianDeveloperConnection"><strong><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/1234.LinkedIn.png" alt=" " width="15" height="16" border="0"></strong></a> Join the <a href="http://linkd.in/CanadianDeveloperConnection">Canadian Developer Connection</a> LinkedIn group&nbsp; <br><a href="http://twitter.com/devsdevsdevs"><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/3806.Twitter.png" alt=" " width="15" height="15" border="0"></a> Follow <a href="http://twitter.com/devsdevsdevs">@devsdevdevs</a> <br><a href="https://www.facebook.com/#!/pages/Developers-Developers-Developers-LIVE-and-Interactive/273573892687218"><img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-devsdevsdevs/3487.Facebook.png" alt=" " width="15" height="15" border="0"></a> Like D³ on <a href="http://on.fb.me/DevsDevsDevs">Facebook</a> <br><img src="http://blogs.msdn.com/resized-image.ashx/__size/28x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/1512.itunes.png" alt="" width="15" height="15"> Subscribe to podcasts via <a href="http://devs3.ms/d3podcast" target="_blank">iTunes,</a> <a href="zune://feeds.feedburner.com/devscubed">Zune</a>, or <a href="http://devs3.ms/d3videorss" target="_blank">RSS</a> <br><img title="WindowsStore_tile_green_small_40x40" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-60-29-metablogapi/7288.WindowsStore_5F00_tile_5F00_green_5F00_small_5F00_40x40_5F00_thumb_5F00_1F01BFD7.png" alt="WindowsStore_tile_green_small_40x40" width="15" height="15" border="0"> Download the <a href="http://devs3.ms/cdndevsw8" target="_blank">Canadian Developer Connection Windows Store app </a><br><a href="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/2364.windowsphone.png" rel="lightbox"><img src="http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-components-userfiles/00-00-33-52-95-Attached&#43;Files/2364.windowsphone.png" alt="" width="15" height="15"></a> Download the <a href="http://aka.ms/cdndevswp" target="_blank">Canadian Developer Connection Windows Phone app</a></p><p><a href="http://devs3.ms/devscubed">More D³: LIVE &amp; INTERACTIVE &gt;&gt;</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:cbfddad83b194141b27da11e016b2438">]]></description>
      <comments>http://channel9.msdn.com/Blogs/devsdevsdevs/d3ep1300</comments>
      <itunes:summary> Host Jonathan Rozenblit goes through the monthly developer news: Developer Movement is back - join the Developer Movement to earn points and be rewarded for publishing Windows Store and Windows Phone apps, with bonus points for adding in Windows Azure services. Windows 8 Celebrate the launch of Windows 8 with Tim Horton&#39;s - register for your Windows Store developer account, forward your confirmation email to win8cdn@microsoft.com and enjoy. More details here. Get started building apps - 5 steps to get you going Learn Windows 8 with hands-on labs Start your app Give your app some oomph Check out an app lab Prepare for certification App Labs are starting to fill up fast. If you&#39;d like to give your app a test drive on Windows 8 devices and have access to expert help, make sure to register for an app lab appointment&amp;nbsp;today. Windows Phone 8 - The Windows Phone 8 developer platform is here. Get started. Upcoming Events Live from DevTeach Montreal&amp;nbsp;(LIVE, December 10, 6:30pm ET) - Howard Dierking from Microsoft Corp. keynotes DevTeach - Beyond VMs: From Saving Money to Adding Value. Of course everyone wants to save money – right? But how true is this in practice&amp;nbsp; when it comes to cloud computing? And more importantly, if the cloud is little&amp;nbsp; more than a bunch of rented virtual machines hosted by someone else, are you&amp;nbsp; actually saving money? At the end of the day, business exists not to save money,&amp;nbsp; but to make it, and if you&#39;re going to invest in the cloud, you should expect it&amp;nbsp; to help you make money. Put another way, the cloud should be about adding value,&amp;nbsp; not simply reducing costs. Come learn how Windows Azure makes the cloud into&amp;nbsp; something that helps you reach more clients, gain deeper business insights,&amp;nbsp; and yea, even save some money in the process. Office and SharePoint DevCamp&amp;nbsp;(LIVE, December 14, 8:00am ET) - Covering topics such as building apps for Office, SharePoint, and Office 365 using web technologies you</itunes:summary>
      <itunes:duration>779</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/devsdevsdevs/d3ep1300</link>
      <pubDate>Thu, 06 Dec 2012 01:27:12 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/devsdevsdevs/d3ep1300</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_512.jpg" height="288" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.mp3" expression="full" duration="779" fileSize="12476481" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.mp4" expression="full" duration="779" fileSize="74685720" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.webm" expression="full" duration="779" fileSize="28531493" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.wma" expression="full" duration="779" fileSize="6310427" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.wmv" expression="full" duration="779" fileSize="35788391" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_high.mp4" expression="full" duration="779" fileSize="161811229" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_mid.mp4" expression="full" duration="779" fileSize="113519419" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300_Source.wmv" expression="full" duration="779" fileSize="80559576" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.ism/manifest" expression="full" duration="779" fileSize="5996" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/663c/a5a63705-d52a-479f-be0c-bb240254663c/D3EP1300.wmv" length="35788391" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jonathan Rozenblit</dc:creator>
      <itunes:author>Jonathan Rozenblit</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/devsdevsdevs/d3ep1300/RSS</wfw:commentRss>
      <category>Office</category>
      <category>SharePoint</category>
      <category>Windows  Phone</category>
      <category>Contest</category>
      <category>Windows Store App</category>
    </item>
  <item>
      <title>AlignIT Manager Tech Talk: An App for Every Business</title>
      <description><![CDATA[<p>Apps enable a new level of customer engagement and are ushering a new wave of business for new and existing organizations. Are you thinking of app opportunities for your organization? The opportunity may or may not be obvious, but it is there. Hosts <a href="http://about.me/ruthmorton" target="_blank">Ruth Morton</a> and <a href="http://jrozenblit.ca/about" target="_blank">Jonathan Rozenblit </a>explore the motivations behind enabling business through Apps.</p><p><strong>Resources</strong></p><ul><li>Visit <a href="http://w00t.ms/">W00t</a> – a site centered around building apps. </li><li>The <a href="http://dev.windowsphone.com">Windows Phone Dev Center</a> will get you started building applications for Windows Phone. </li><li>The <a href="http://dev.windows.com/">Windows 8 Dev Center</a> will get you started building applications for Windows 8. </li></ul><p><strong>Jean-Luc David<br></strong>Jean-Luc David is the CTO for <a href="http://digiflare.com" target="_blank">Digiflare</a>, an interactive agency that helps brands discover new opportunities to enhance and expand their businesses through interactive experiences through the web, mobile, connected TVs, and emerging digital platforms. Prior to <a href="http://digiflare.com" target="_blank">Digiflare</a>, Jean-Luc was the Senior Manager for the Yellow Pages Group API &amp; Mobile team and worked at Microsoft in the Developer &amp; Platform Evangelism group.</p><p><strong>Podcast</strong></p><p>This episode will be available as a podcast shortly. <br><br>Listen Now - COMING SOON<br>Download as MP3 - COMING SOON<br><a href="zune://subscribe/?IT%20Manager%20Podcast%20=http://feeds.feedburner.com/itmanager">Subscribe with Zune &gt;&gt;</a> <br><a href="http://feeds.feedburner.com/itmanager">Subscribe with RSS Feed &gt;&gt; </a><br><a href="http://bit.ly/alignititunes">Subscribe with iTunes &gt;&gt;</a></p><p><strong>About AlignIT Manager Tech Talk <br></strong>The <a href="http://www.microsoft.ca/alignitshow">AlignIT</a> <a href="http://jrozenblit.ca/techtalk">Manager Talk</a> is a monthly live streamed video series hosted by <a href="http://about.me/ruthmorton">Ruth Morton</a> (<a href="http://www.linkedin.com/in/rmorton">LinkedIn</a>) and <a href="http://jrozenblit.ca/about">Jonathan Rozenblit</a> (<a href="http://ca.linkedin.com/in/jrozenblit">LinkedIn</a>). Each Tech Talk episode airs on the <strong>2nd Thursday of the month from 12:00pm to 12:30pm EST. </strong>The show focuses on a range of topics for both infrastructure and development managers and is interactive, taking questions via a live chat and providing answers on air</p><p><strong>About AlignIT <br></strong>The AlignIT program is dedicated to keeping IT leaders informed about what really matters in business and technology. We do that through in-person events, web casts, our blog and of course, this podcast series. You can find more information about the Align IT program at <a href="http://www.alignit.ca/">www.alignit.ca</a>. If you have comments, suggestions, and ideas for future topics please let us know by connecting with us via <a href="alignit@microsoft.com">email</a>, <a href="http://twitter.com/alignitca">Twitter</a>, or <a href="http://microsoft.ca/alignitgroup">LinkedIn</a>.</p><p><a href="http://www.align-it.ca">Visit the AlignIT site &gt;&gt;</a> <br><a href="http://twitter.com/alignitca">Follow AlignIT on Twitter &gt;&gt;</a> <br><a href="http://microsoft.ca/alignitgroup">Join the conversation on LinkedIn &gt;&gt;</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4a8f68ad11d74627975fa0d90157c9b4">]]></description>
      <comments>http://channel9.msdn.com/Blogs/AlignIT/AppForEveryBusiness</comments>
      <itunes:summary>Apps enable a new level of customer engagement and are ushering a new wave of business for new and existing organizations. Are you thinking of app opportunities for your organization? The opportunity may or may not be obvious, but it is there. Hosts Ruth Morton and Jonathan Rozenblit explore the motivations behind enabling business through Apps. Resources Visit W00t – a site centered around building apps. The Windows Phone Dev Center will get you started building applications for Windows Phone. The Windows 8 Dev Center will get you started building applications for Windows 8. Jean-Luc DavidJean-Luc David is the CTO for Digiflare, an interactive agency that helps brands discover new opportunities to enhance and expand their businesses through interactive experiences through the web, mobile, connected TVs, and emerging digital platforms. Prior to Digiflare, Jean-Luc was the Senior Manager for the Yellow Pages Group API &amp;amp; Mobile team and worked at Microsoft in the Developer &amp;amp; Platform Evangelism group. Podcast This episode will be available as a podcast shortly. Listen Now - COMING SOONDownload as MP3 - COMING SOONSubscribe with Zune &amp;gt;&amp;gt; Subscribe with RSS Feed &amp;gt;&amp;gt; Subscribe with iTunes &amp;gt;&amp;gt; About AlignIT Manager Tech Talk The AlignIT Manager Talk is a monthly live streamed video series hosted by Ruth Morton (LinkedIn) and Jonathan Rozenblit (LinkedIn). Each Tech Talk episode airs on the 2nd Thursday of the month from 12:00pm to 12:30pm EST. The show focuses on a range of topics for both infrastructure and development managers and is interactive, taking questions via a live chat and providing answers on air About AlignIT The AlignIT program is dedicated to keeping IT leaders informed about what really matters in business and technology. We do that through in-person events, web casts, our blog and of course, this podcast series. You can find more information about the Align IT program at www.alignit.ca. If you have comments, suggestions, and ideas </itunes:summary>
      <itunes:duration>2280</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/AlignIT/AppForEveryBusiness</link>
      <pubDate>Tue, 30 Oct 2012 20:57:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/AlignIT/AppForEveryBusiness</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_512.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.mp3" expression="full" duration="2280" fileSize="36492412" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.mp4" expression="full" duration="2280" fileSize="214812189" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.webm" expression="full" duration="2280" fileSize="73153209" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.wma" expression="full" duration="2280" fileSize="18446587" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.wmv" expression="full" duration="2280" fileSize="88876229" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_high.mp4" expression="full" duration="2280" fileSize="466337271" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_mid.mp4" expression="full" duration="2280" fileSize="326313582" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness_Source.wmv" expression="full" duration="2280" fileSize="402842250" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.ism/manifest" expression="full" duration="2280" fileSize="7870" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/d92a/530ca1d6-730f-483e-a505-2a75f53fd92a/AlignITMTTAppForEveryBusiness.wmv" length="88876229" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Ruth Morton, Jonathan Rozenblit</dc:creator>
      <itunes:author>Ruth Morton, Jonathan Rozenblit</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/AlignIT/AppForEveryBusiness/RSS</wfw:commentRss>
      <category>Windows  Phone</category>
      <category>Business</category>
      <category>Apps</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>//build/ 2012 Windows Phone App</title>
      <description><![CDATA[<p>A quick note (since my <a>http://buildwindows.com</a> earlier today was admittedly a little sparse), I just saw project the by David Burela cross my news stream and thought you might find it appropriate.</p><p>The source is available, though it does use a third party control set (the <a href="http://www.infragistics.com/products/windows-phone/">Infragistics NetAdvantage for Windows Phone controls</a>). You all know that I usually don't highlight projects that include components that are free, that include commercial libraries, but I thought I'd make a special exception for this one...</p><h2><a href="http://davidburela.wordpress.com/2012/10/29/build-2012-conference-app-for-windows-phone/">Build 2012 conference app for Windows Phone</a></h2><blockquote><p>This year I was given the location of the Build 2012 data feed, and asked if I could help build the conference app for the Windows Phone.</p><p>You can <a href="http://www.windowsphone.com/s?appid=d582a8b4-3904-4d7b-9eb2-3053a45a4f11&amp;apptype=regular">download the Build 2012 conference application from the Windows Phone marketplace</a>.</p><p><a href="https://github.com/DavidBurela/Build2012WinPhone">The source code is available on GitHub</a>.</p><p>I took the TechEd Australia app that I created earlier in the year, and modified it for the Build data stream (<a href="http://davidburela.wordpress.com/2012/09/18/post-mortem-of-the-microsoft-teched-wp7-app/">you can read my post-mortem of building the TechEd app here</a>)</p><p>The Build 2012 application has a few nice features:</p><ul><li>Search for sessions by title, session code or abstract. </li><li>View the sessions by schedule slot. </li><li>View slides directly on your phone (once uploaded to Channel 9). </li><li>Watch the sessions directly on your phone (once uploaded to Channel 9). </li></ul><p>And of course, the application was built using the <a href="http://www.infragistics.com/products/windows-phone/">Infragistics NetAdvantage for Windows Phone controls</a>.</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B2%5D-88.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb-88.png" alt="image" width="520" height="226" border="0"></a></p></blockquote><p>BTW, you can try the Infragistics controls for free, so you can grab them, this source and check it out to you hearts content (or until the trial expires at least). And hey, worse case, the app is free in the Windows Phone Marketplace... <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:124a6a8a223042d68dbda0f900f91d3d">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/build-2012-Windows-Phone-App</comments>
      <itunes:summary>A quick note (since my http://buildwindows.com earlier today was admittedly a little sparse), I just saw project the by David Burela cross my news stream and thought you might find it appropriate. The source is available, though it does use a third party control set (the Infragistics NetAdvantage for Windows Phone controls). You all know that I usually don&#39;t highlight projects that include components that are free, that include commercial libraries, but I thought I&#39;d make a special exception for this one... Build 2012 conference app for Windows PhoneThis year I was given the location of the Build 2012 data feed, and asked if I could help build the conference app for the Windows Phone. You can download the Build 2012 conference application from the Windows Phone marketplace. The source code is available on GitHub. I took the TechEd Australia app that I created earlier in the year, and modified it for the Build data stream (you can read my post-mortem of building the TechEd app here) The Build 2012 application has a few nice features: Search for sessions by title, session code or abstract. View the sessions by schedule slot. View slides directly on your phone (once uploaded to Channel 9). Watch the sessions directly on your phone (once uploaded to Channel 9). And of course, the application was built using the Infragistics NetAdvantage for Windows Phone controls.  BTW, you can try the Infragistics controls for free, so you can grab them, this source and check it out to you hearts content (or until the trial expires at least). And hey, worse case, the app is free in the Windows Phone Marketplace...  </itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/build-2012-Windows-Phone-App</link>
      <pubDate>Mon, 29 Oct 2012 15:10:10 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/build-2012-Windows-Phone-App</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/278ef9be-d73d-4a7b-bb4e-5526a4ba9bae.png" height="45" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/9375243e-cb2c-4072-bb79-53debc94e3f5.png" height="100" width="220"></media:thumbnail>      
      <dc:creator>Greg Duncan</dc:creator>
      <itunes:author>Greg Duncan</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/build-2012-Windows-Phone-App/RSS</wfw:commentRss>
      <category>Coding4Fun</category>
      <category>Windows  Phone</category>
      <category>XAML</category>
      <category>Build</category>
    </item>
  <item>
      <title>This Windows Phone 7.1(5) app is your source for WinSource (which comes with the source)</title>
      <description><![CDATA[<p>Today's Mobile Monday post is a Windows Phone 7.x app <a href="http://www.winsource.com/" target="_blank">WinSource</a> reader app by Sébastien Lachance.</p><p>&quot;A Windows Phone 7.x App! What are you thinking, Greg? Windows Phone 8 should be in days! Why highlight a 7.x app? Are you smoking dope?&quot;</p><p>No, no... The point I'm trying to make is that Windows Phone 7.x app's &quot;will just work&quot; on Windows Phone 8 (at least that's the intent and goal). So you don't have to wait for the Windows Phone 8 SDK to be released, you don't have to wait for Windows Phone 8 to take off, you can start coding today, releasing app's today. And if you release a Windows Phone 7.x app you will not only b e able to run on Windows Phone 8, but also on all the existing Windows Phone 7x devices too. See, I'm no smoking dope!</p><p>Anyway...</p><h2><a href="http://dotnetapp.com/blog/2012/09/21/my-winsource-app-is-now-open-source-on-the-nokia-developer-website/">My WinSource app is now open source on the Nokia developer website</a></h2><blockquote><h5>Introduction</h5><p>In the summer 2012, the <a href="http://www.winsource.com/">​WinSource</a> website held a contest among the Windows Phone developers to create an official application for their website.</p><p>I was a participant in the contest and I can tell you that it was a really interesting and challenging contest. My application finished in third position.</p><p>You can download the application from the winner at <a href="http://www.windowsphone.com/s?appid=dab5ea63-f5c3-4db7-87bf-6c4b2fad6d61">​here</a>.</p><h5>Important notice</h5><p>Before I decided to put the full source code of my complete application. I asked the owners of the <a href="http://www.winsource.com/">​WinSource</a> from the Neverstill company if I can publish the source code of my application. They accepted my idea, because it is a great way to help the Windows Phone community.</p><p>In the current form, the application has enough features that it can be an alternate ​WinSource application. <strong>The only restriction is a user cannot publish or use the </strong>​WinSource’s <strong>logo, the assets or the content from the </strong>​WinSource<strong>.</strong> NOTE, this project is ​licensed under a slightly modified MIT license which reflects the above restriction.</p><p>The purpose of having this open project is to help the community creating a professional news reader for any other websites that give the permissions. It also shows different concepts which can be applied in different type of applications.</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B2%5D-83.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb-83.png" alt="image" width="520" height="363" border="0"></a></p><p>...&quot;</p></blockquote><p>The app provides a working example of a number of cool features</p><blockquote><p>My application contains the following features:</p><ul><li>The metro design is used throughout the app, while the main page is showcased using the panorama design. </li><li>Fast navigation between pages. </li><li>Articles classified by date. </li><li>Play YouTube videos. </li><li>A description of each team member, including a display of the author name &amp; image on each author’s page. Also included is the option to send the author an email. </li><li>Article links can be shared on Twitter, Windows Live, Facebook, or by email. </li><li>The application bar contains shortcuts to the Facebook page and the Twitter page of the website. </li><li>The About page provides a way to send an email and to write a review of the app. </li><li>Option to automatically refresh articles when the application launches. </li></ul><p>The following list contains advanced features:</p><ul><li>Offline mode. Articles can be read even when no internet connection is available. </li><li>Unlimited space for saving articles, which can then be accessed using the <em>Saved Articles</em> page. </li><li>Articles can be periodically downloaded(every ~4 hours) in the background, even when the app is not running. This feature does not require server support. </li><li>Toast notification will display the number of new articles available, and a badge count in the application live tile will also display this number. </li><li>The back of the live tile will display the latest article title. </li></ul><p>...</p></blockquote><p>It also relies on a number of open source libraries;</p><blockquote><h5>Open source libraries</h5><p>I used three open source libraries that are well known in the developer community:</p><ul><li>GalaSoft MvvmLight (<a href="http://mvvmlight.codeplex.com/">​http://mvvmlight.codeplex.com/</a>): Used to architecture a modular application and to easily add future features. </li><li>Newtonsoft.Json (<a href="http://json.codeplex.com/">​http://json.codeplex.com/</a>): Used to save and love articles for the offline mode. </li><li>Silverlight Toolkit (<a href="http://silverlight.codeplex.com/">​http://silverlight.codeplex.com/</a>): Used for hub tile control and for the optimized list control. </li></ul><p>...</p></blockquote><p>The source (which you can get by clicking through and scrolling to the bottom of the page, compiled and ran for me the vey first time, with no hassles or tweaks.</p><p>Here's a snap of it running on my machine;</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/SNAGHTMLf9fd8c1%5B3%5D.png" target="_blank"><img title="SNAGHTMLf9fd8c1" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/SNAGHTMLf9fd8c1_thumb.png" alt="SNAGHTMLf9fd8c1" width="220" height="384" border="0"></a></p><p>Here's a snap of the Solution;</p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B5%5D-43.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb%5B1%5D-96.png" alt="image" width="245" height="147" border="0"></a></p><p><a href="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image%5B8%5D-43.png" target="_blank"><img title="image" src="http://files.channel9.msdn.com/wlwimages/ae054c0b4d7b402ab1239e6800c0220f/image_thumb%5B2%5D-79.png" alt="image" width="145" height="384" border="0"></a></p><blockquote><h6>What can you do with the source files of the application?</h6><p>Simple answer: <strong>create your own news application</strong>! The source files provided are the best starting point to get your news application ready. The mechanism is ready and your tasks are:</p><ul><li>Replace the assets in the <em>Assets </em>folder of the <em>WinSource</em> assembly. </li><li>Modify the classes in the <em>WinSource.Client</em> assembly in order to fetch the article descriptions and videos from your news source. </li><li>Remove or add sections in the Panorama. </li></ul><h6>Learning</h6><p>Also, if you read the code you can learn a lot about the Windows Phone SDK and about some best practices. The application is more complete than the ones in the MSDN samples.</p></blockquote><p>I think that sums it up well. There's a good bit you can learn from in this app, from MVVM, to keeping your UI responsive when doing network calls to interfacing with Facebook/Twitter and more. And that's nice is that you can leverage this code and knowledge if you're building apps for other platforms like Windows 8 or WPF on Windows 7...</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:af51953fcc72453da077a0f001565beb">]]></description>
      <comments>http://channel9.msdn.com/coding4fun/blog/This-Windows-Phone-715-app-is-your-source-for-WinSource-which-comes-with-the-source</comments>
      <itunes:summary>Today&#39;s Mobile Monday post is a Windows Phone 7.x app WinSource reader app by S&#233;bastien Lachance. &amp;quot;A Windows Phone 7.x App! What are you thinking, Greg? Windows Phone 8 should be in days! Why highlight a 7.x app? Are you smoking dope?&amp;quot; No, no... The point I&#39;m trying to make is that Windows Phone 7.x app&#39;s &amp;quot;will just work&amp;quot; on Windows Phone 8 (at least that&#39;s the intent and goal). So you don&#39;t have to wait for the Windows Phone 8 SDK to be released, you don&#39;t have to wait for Windows Phone 8 to take off, you can start coding today, releasing app&#39;s today. And if you release a Windows Phone 7.x app you will not only b e able to run on Windows Phone 8, but also on all the existing Windows Phone 7x devices too. See, I&#39;m no smoking dope! Anyway... My WinSource app is now open source on the Nokia developer websiteIntroductionIn the summer 2012, the ​WinSource website held a contest among the Windows Phone developers to create an official application for their website. I was a participant in the contest and I can tell you that it was a really interesting and challenging contest. My application finished in third position. You can download the application from the winner at ​here. Important noticeBefore I decided to put the full source code of my complete application. I asked the owners of the ​WinSource from the Neverstill company if I can publish the source code of my application. They accepted my idea, because it is a great way to help the Windows Phone community. In the current form, the application has enough features that it can be an alternate ​WinSource application. The only restriction is a user cannot publish or use the ​WinSource’s logo, the assets or the content from the ​WinSource. NOTE, this project is ​licensed under a slightly modified MIT license which reflects the above restriction. The purpose of having this open project is to help the community creating a professional news reader for any other websites that give the permissions. It also </itunes:summary>
      <link>http://channel9.msdn.com/coding4fun/blog/This-Windows-Phone-715-app-is-your-source-for-WinSource-which-comes-with-the-source</link>
      <pubDate>Mon, 22 Oct 2012 13:00:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/coding4fun/blog/This-Windows-Phone-715-app-is-your-source-for-WinSource-which-comes-with-the-source</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/69667be5-76a7-440c-a5f3-e8479d824a75.png" height="63" width="100"></media:thumbnail>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/b2ac7705-0fcf-4209-8a3b-21fb6c9c6bc0.png" height="138" width="220"></media:thumbnail>      
      <dc:creator>Greg Duncan</dc:creator>
      <itunes:author>Greg Duncan</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/coding4fun/blog/This-Windows-Phone-715-app-is-your-source-for-WinSource-which-comes-with-the-source/RSS</wfw:commentRss>
      <category>C#</category>
      <category>Coding4Fun</category>
      <category>MVVM</category>
      <category>Windows  Phone</category>
      <category>XAML</category>
    </item>
  <item>
      <title>The Full Stack, Part 16: More MVVM Fun With Some More Complex Binding Scenarios</title>
      <description><![CDATA[<p>Jesse and Jon dig a little deeper into the main screen of their Windows Phone Pomodoro client, looking at how MVVM works with more complex binding scenarios with selection and navigation.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:cfd4d82cd3874be4ba319fe50005fb31">]]></description>
      <comments>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-16-More-MVVM-Fun-With-Some-More-Complex-Binding-Scenarios</comments>
      <itunes:summary>Jesse and Jon dig a little deeper into the main screen of their Windows Phone Pomodoro client, looking at how MVVM works with more complex binding scenarios with selection and navigation. </itunes:summary>
      <itunes:duration>1486</itunes:duration>
      <link>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-16-More-MVVM-Fun-With-Some-More-Complex-Binding-Scenarios</link>
      <pubDate>Fri, 27 Jan 2012 20:12:51 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-16-More-MVVM-Fun-With-Some-More-Complex-Binding-Scenarios</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_2MB_ch9.wmv" expression="full" duration="1486" fileSize="52254071" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_ch9.mp3" expression="full" duration="1486" fileSize="11889264" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_ch9.webm" expression="full" duration="1486" fileSize="60608822" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_ch9.wma" expression="full" duration="1486" fileSize="12020977" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_ch9.wmv" expression="full" duration="1486" fileSize="56894342" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_high_ch9.mp4" expression="full" duration="1486" fileSize="236651922" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_low_ch9.mp4" expression="full" duration="1486" fileSize="30652656" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_med_ch9.mp4" expression="full" duration="1486" fileSize="184430132" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16.ism/manifest" expression="full" duration="1486" fileSize="6262" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/fb31/cfd4d82c-d387-4be4-ba31-9fe50005fb31/FullStack16_ch9.wmv" length="56894342" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Jesse Liberty</dc:creator>
      <itunes:author>Jon Galloway, Jesse Liberty</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-16-More-MVVM-Fun-With-Some-More-Complex-Binding-Scenarios/RSS</wfw:commentRss>
      <category>MVVM</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>The Full Stack, Part 13: Synchronizing the Windows Phone Client with the WCF Service</title>
      <description><![CDATA[ <p>In this episode of The Full Stack, Jesse and Jon hook up client-server data synchronization and discuss some interesting problems they run into along the way.</p><p>Highlights:</p><ul id="internal-source-marker_0.3983664223924279"><li><span>Jesse walks through the Windows Phone side, explaining how synchronization works when saving a new contact.</span></li><li><span>Jesse explains how to detect changes in network status, automatically synchronizing contacts added while offline as soon as a network connection is available.</span></li><li><span>Jon reviews the server-side API, shows how the API key is being passed in an HTTP header rather than a querystring argument, and walks through the process of submitting changes to the server.</span></li><li><span>Jon explains some of the interesting challenges he troubleshot on the server, including use of the new WCF ProcessingPipeline, catching WCF service exceptions, and use of Post Tunneling.</span></li><li><span>Jesse shows how to make sure your textbox bindings are updated when working with the Windows Phone Action Bar buttons.</span></li></ul><div>Show links:</div><div><ul><li><a href="http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkchange.networkaddresschanged(v=vs.95).aspx">Detecting Network Status on Windows Phone 7</a></li><li><a href="http://msdn.microsoft.com/en-us/library/ee474212(v=VS.100).aspx">WCF Data Service ProcessingPipeline documentation</a></li></ul></div> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4381552ea2d64ad692409f0801826ad9">]]></description>
      <comments>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-13-Synchronizing-the-Windows-Phone-Client-with-the-WCF-Service</comments>
      <itunes:summary> In this episode of The Full Stack, Jesse and Jon hook up client-server data synchronization and discuss some interesting problems they run into along the way. Highlights: Jesse walks through the Windows Phone side, explaining how synchronization works when saving a new contact.Jesse explains how to detect changes in network status, automatically synchronizing contacts added while offline as soon as a network connection is available.Jon reviews the server-side API, shows how the API key is being passed in an HTTP header rather than a querystring argument, and walks through the process of submitting changes to the server.Jon explains some of the interesting challenges he troubleshot on the server, including use of the new WCF ProcessingPipeline, catching WCF service exceptions, and use of Post Tunneling.Jesse shows how to make sure your textbox bindings are updated when working with the Windows Phone Action Bar buttons.Show links:Detecting Network Status on Windows Phone 7WCF Data Service ProcessingPipeline documentation</itunes:summary>
      <itunes:duration>1955</itunes:duration>
      <link>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-13-Synchronizing-the-Windows-Phone-Client-with-the-WCF-Service</link>
      <pubDate>Thu, 23 Jun 2011 22:46:32 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-13-Synchronizing-the-Windows-Phone-Client-with-the-WCF-Service</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_2MB_ch9.wmv" expression="full" duration="1955" fileSize="53237347" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_ch9.mp3" expression="full" duration="1955" fileSize="15645488" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_ch9.wma" expression="full" duration="1955" fileSize="15827047" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_ch9.wmv" expression="full" duration="1955" fileSize="73409164" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_high_ch9.mp4" expression="full" duration="1955" fileSize="499064286" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_low_ch9.mp4" expression="full" duration="1955" fileSize="35927801" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13.ism/manifest" expression="full" duration="1955" fileSize="8670" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/6ad9/4381552e-a2d6-4ad6-9240-9f0801826ad9/TheFullStack13_ch9.wmv" length="73409164" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Jesse Liberty</dc:creator>
      <itunes:author>Jon Galloway, Jesse Liberty</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-13-Synchronizing-the-Windows-Phone-Client-with-the-WCF-Service/RSS</wfw:commentRss>
      <category>WCF</category>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>The Full Stack, Part 12: Adding photo support to our Windows Phone app - Capture, storage, and display</title>
      <description><![CDATA[ <p>We walk through the code we used to add photo support to the WhoIsThat application, including:</p><ul><li>Using the Camera chooser&nbsp; </li><li>Restoring application state after the photo is taken&nbsp; </li><li>Decoding and displaying the image&nbsp; </li><li>Storing and retrieving the image </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2984e51908764c2aa3389ef4013f492e">]]></description>
      <comments>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-12-Adding-photo-support-to-our-Windows-Phone-app-Capture-storage-and-display</comments>
      <itunes:summary> We walk through the code we used to add photo support to the WhoIsThat application, including: Using the Camera chooser&amp;nbsp; Restoring application state after the photo is taken&amp;nbsp; Decoding and displaying the image&amp;nbsp; Storing and retrieving the image </itunes:summary>
      <itunes:duration>1788</itunes:duration>
      <link>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-12-Adding-photo-support-to-our-Windows-Phone-app-Capture-storage-and-display</link>
      <pubDate>Thu, 02 Jun 2011 18:14:21 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-12-Adding-photo-support-to-our-Windows-Phone-app-Capture-storage-and-display</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_2MB_ch9.wmv" expression="full" duration="1788" fileSize="45115291" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_ch9.mp3" expression="full" duration="1788" fileSize="14310562" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_ch9.wma" expression="full" duration="1788" fileSize="14475245" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_ch9.wmv" expression="full" duration="1788" fileSize="65952160" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_high_ch9.mp4" expression="full" duration="1788" fileSize="453179294" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_low_ch9.mp4" expression="full" duration="1788" fileSize="31394412" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12.ism/manifest" expression="full" duration="1788" fileSize="8672" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/492e/2984e519-0876-4c2a-a338-9ef4013f492e/TheFullStack12_ch9.wmv" length="65952160" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Jesse Liberty</dc:creator>
      <itunes:author>Jon Galloway, Jesse Liberty</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-12-Adding-photo-support-to-our-Windows-Phone-app-Capture-storage-and-display/RSS</wfw:commentRss>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>The Full Stack, Part 10: Accidentally Pair Programming and Writing Unit Tests</title>
      <description><![CDATA[ <p>In this episode of The Full Stack, Jesse and Jon continue their reboot of the windows phone client project. Having set up an MVVM application and decided on using a repository pattern on the phone that mirrors the server's repository, Jon throws caution to the wind and gives it a shot.</p><p>Some highlights:</p><ul><li><span class="Apple-style-span">Moving to the repository pattern breaks the application workflow</span><span class="Apple-style-span">&nbsp;causes some interesting changes in how state is maintained</span></li><li><span class="Apple-style-span">Jon and Jesse decide it's time to start moving towards separate client and server databases with a sync process</span></li><li><span class="Apple-style-span">Jon writes&nbsp;</span><span class="Apple-style-span">&nbsp;a buggy save method and actually decides to write a failing unit test before fixing it</span></li></ul><div><span class="Apple-style-span">Note: This episode was actually recorded in May and nearly got lost in the shuffle with MIX. We still think it's a good one since it explains where we're going with the client/server data storage, so here it is.</span></div> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:decef1b860184ca2935f9ee7014ea084">]]></description>
      <comments>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-10-Accidentally-Pair-Programming-and-Writing-Unit-Tests</comments>
      <itunes:summary> In this episode of The Full Stack, Jesse and Jon continue their reboot of the windows phone client project. Having set up an MVVM application and decided on using a repository pattern on the phone that mirrors the server&#39;s repository, Jon throws caution to the wind and gives it a shot. Some highlights: Moving to the repository pattern breaks the application workflow&amp;nbsp;causes some interesting changes in how state is maintainedJon and Jesse decide it&#39;s time to start moving towards separate client and server databases with a sync processJon writes&amp;nbsp;&amp;nbsp;a buggy save method and actually decides to write a failing unit test before fixing itNote: This episode was actually recorded in May and nearly got lost in the shuffle with MIX. We still think it&#39;s a good one since it explains where we&#39;re going with the client/server data storage, so here it is.</itunes:summary>
      <itunes:duration>3217</itunes:duration>
      <link>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-10-Accidentally-Pair-Programming-and-Writing-Unit-Tests</link>
      <pubDate>Wed, 18 May 2011 23:04:09 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-10-Accidentally-Pair-Programming-and-Writing-Unit-Tests</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_2MB_ch9.wmv" expression="full" duration="3217" fileSize="81529971" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_ch9.mp3" expression="full" duration="3217" fileSize="25737717" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_ch9.wma" expression="full" duration="3217" fileSize="26028629" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_ch9.wmv" expression="full" duration="3217" fileSize="115128734" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_high_ch9.mp4" expression="full" duration="3217" fileSize="816564112" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_low_ch9.mp4" expression="full" duration="3217" fileSize="54695421" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_Zune_ch9.wmv" expression="full" duration="3217" fileSize="169400782" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10.ism/manifest" expression="full" duration="3217" fileSize="8562" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/a084/decef1b8-6018-4ca2-935f-9ee7014ea084/TheFullStack10_ch9.wmv" length="115128734" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Jon Galloway, Jesse Liberty</dc:creator>
      <itunes:author>Jon Galloway, Jesse Liberty</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Series/The-Full-Stack/The-Full-Stack-Part-10-Accidentally-Pair-Programming-and-Writing-Unit-Tests/RSS</wfw:commentRss>
      <category>Windows  Phone</category>
    </item>
  <item>
      <title>Windows Phone 7 Demo: Twitter</title>
      <description><![CDATA[The Twitter application for Windows Phone 7.  <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2c4f369533e7401392a69df300df7efe">]]></description>
      <comments>http://channel9.msdn.com/Blogs/LauraFoy/Windows-Phone-7-Demo-Twitter</comments>
      <itunes:summary>The Twitter application for Windows Phone 7. </itunes:summary>
      <itunes:duration>89</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/LauraFoy/Windows-Phone-7-Demo-Twitter</link>
      <pubDate>Thu, 16 Sep 2010 14:10:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/LauraFoy/Windows-Phone-7-Demo-Twitter</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/574743_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/574743_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_320_ch9.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_85_ch9.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_2MB_ch9.wmv" expression="full" duration="89" fileSize="5238703" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_ch9.mp3" expression="full" duration="89" fileSize="718503" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_ch9.mp4" expression="full" duration="89" fileSize="5932724" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_ch9.wma" expression="full" duration="89" fileSize="731947" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_ch9.wmv" expression="full" duration="89" fileSize="3461967" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_Zune_ch9.wmv" expression="full" duration="89" fileSize="3366022" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/4743/574743/Twitter2_ch9.wmv" length="3461967" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Laura Foy</dc:creator>
      <itunes:author>Laura Foy</itunes:author>
      <slash:comments>8</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/LauraFoy/Windows-Phone-7-Demo-Twitter/RSS</wfw:commentRss>
      <category>Twitter</category>
      <category>Windows  Phone</category>
      <category>Windows Phone 7</category>
      <category>WP7</category>
    </item>
  <item>
      <title>Bytes by MSDN: Maarten Struys and Tim Huckaby discuss Silverlight and Windows Phone 7</title>
      <description><![CDATA[Watch this lively discussion between Tim Huckaby and Maarten Struys, Windows Mobile Evangelist. Maarten sounds off on why developers shouldn’t sweat not having native access, and discusses Silverlight’s role and other functionalities of Windows Phone 7.<br /><br /><a shape="rect" href="http://clk.atdmt.com/MRT/go/249592544/direct/01/" target="_blank" shape="rect"><strong>Click here</strong></a><strong>&nbsp;to download the Windows Phone 7 Toolkit<br /><br />About Marteen<br /></strong>Maarten Struys works as Windows Embedded and Windows Phone Evangelist for Alten-PTS in The Netherlands. Maarten is a well-known speaker at international conferences like Tech•Ed, MEDC and Mobile Connections. He is also the creator of a number of How-Do-I
 videos for MSDN around device development. Maarten has experience with Microsoft Windows CE and Windows Mobile / Windows Phone devices since their respective introduction. His main focus is on how to create well performing managed applications for smart devices,
 getting the most out of devices with limited resources and using as little battery power as possible. Maarten's website, www.dotnetfordevices.com, is loaded with information about using .NET in the embedded world.<br /><br /><strong>About Tim<br /></strong>Tim Huckaby is the Founder of InterKnowlogy, experts in Microsoft .NET and Microsoft Platforms, and has 25&#43; years experience including serving on a Microsoft product team as a development lead on an architecture team. Tim is a Microsoft Regional Director,
 an MVP and serves on multiple Microsoft councils and boards. Currently, Tim is focused on RIA &amp; Rich Client Technologies like WPF, VSTO, Surface, Silverlight, Windows 7 Touch, and Windows Phone 7. He has been called a &quot;Pioneer of the Smart Client Revolution&quot;
 by the press. Tim has been awarded multiple times for the highest-rated keynote for Microsoft and numerous other technology conferences around the world and is consistently rated in the top 10% of all speakers at these events. Tim has also done keynote demos
 for numerous Microsoft executives including Bill Gates and Steve Ballmer.<br /><br /><strong>Maarten Struys and Tim recommend you check out</strong>
<ul>
<li><a shape="rect" href="http://www.dotnetfordevices.com/" id="ctl00_mainContentContainer_ctl13" shape="rect">.NET For Devices</a>
</li><li><a shape="rect" href="http://www.altenpts.nl/en/index.php" id="ctl00_mainContentContainer_ctl14" shape="rect">ALTEN PTS</a>
</li><li><a shape="rect" href="http://twitter.com/mstruys" id="ctl00_mainContentContainer_ctl15" shape="rect">Maarten's twitter page</a>
</li><li><a shape="rect" href="http://www.windowsphone7.com/" id="ctl00_mainContentContainer_ctl16" shape="rect">Windows Phone 7 site</a>
</li><li><a shape="rect" href="http://developer.windowsphone.com/windows-phone-7/" id="ctl00_mainContentContainer_ctl17" shape="rect">Windows Phone 7 Developers Site</a>
</li><li><a shape="rect" href="http://msdn.microsoft.com/library/ff402529(v=VS.92).aspx" id="ctl00_mainContentContainer_ctl18" shape="rect">Getting started guide for developing for Windows Phone</a>
</li><li><a shape="rect" href="http://msdn.microsoft.com/library/ff431744(VS.92).aspx" id="ctl00_mainContentContainer_ctl19" shape="rect">Windows Phone 7 code samples</a>
</li><li><a shape="rect" href="http://windowsteamblog.com/Windows_Phone/b/wpdev/" id="ctl00_mainContentContainer_ctl20" shape="rect">Windows Phone 7 team blog</a>
</li><li><a shape="rect" href="http://www.mobileappmatch.com/?fbid=rBoE3gN300V" id="ctl00_mainContentContainer_ctl21" shape="rect">Mobile App Match</a>
</li></ul>
 <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Tags/windows-phone/RSS&WT.dl=0&WT.entryid=Entry:RSSView:adf2011f3e844da7a6fa9de901882c63">]]></description>
      <comments>http://channel9.msdn.com/Blogs/Bytes+by+MSDN/Bytes-by-MSDN-Maarten-Struys-and-Tim-Huckaby-talk-about-Silverlight-and-Windows-Phone-7</comments>
      <itunes:summary>Watch this lively discussion between Tim Huckaby and Maarten Struys, Windows Mobile Evangelist. Maarten sounds off on why developers shouldn’t sweat not having native access, and discusses Silverlight’s role and other functionalities of Windows Phone 7.Click here&amp;nbsp;to download the Windows Phone 7 ToolkitAbout MarteenMaarten Struys works as Windows Embedded and Windows Phone Evangelist for Alten-PTS in The Netherlands. Maarten is a well-known speaker at international conferences like Tech•Ed, MEDC and Mobile Connections. He is also the creator of a number of How-Do-I
 videos for MSDN around device development. Maarten has experience with Microsoft Windows CE and Windows Mobile / Windows Phone devices since their respective introduction. His main focus is on how to create well performing managed applications for smart devices,
 getting the most out of devices with limited resources and using as little battery power as possible. Maarten&#39;s website, www.dotnetfordevices.com, is loaded with information about using .NET in the embedded world.About TimTim Huckaby is the Founder of InterKnowlogy, experts in Microsoft .NET and Microsoft Platforms, and has 25&amp;#43; years experience including serving on a Microsoft product team as a development lead on an architecture team. Tim is a Microsoft Regional Director,
 an MVP and serves on multiple Microsoft councils and boards. Currently, Tim is focused on RIA &amp;amp; Rich Client Technologies like WPF, VSTO, Surface, Silverlight, Windows 7 Touch, and Windows Phone 7. He has been called a &amp;quot;Pioneer of the Smart Client Revolution&amp;quot;
 by the press. Tim has been awarded multiple times for the highest-rated keynote for Microsoft and numerous other technology conferences around the world and is consistently rated in the top 10% of all speakers at these events. Tim has also done keynote demos
 for numerous Microsoft executives including Bill Gates and Steve Ballmer.Maarten Struys and Tim recommend you check out

.NET For Devic</itunes:summary>
      <itunes:duration>340</itunes:duration>
      <link>http://channel9.msdn.com/Blogs/Bytes+by+MSDN/Bytes-by-MSDN-Maarten-Struys-and-Tim-Huckaby-talk-about-Silverlight-and-Windows-Phone-7</link>
      <pubDate>Fri, 27 Aug 2010 09:01:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/Blogs/Bytes+by+MSDN/Bytes-by-MSDN-Maarten-Struys-and-Tim-Huckaby-talk-about-Silverlight-and-Windows-Phone-7</guid>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/100/569753_100x75.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/previewImages/220/569753_220x165.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_320_ch9.jpg" height="240" width="320"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_85_ch9.jpg" height="64" width="85"></media:thumbnail>
      <media:group>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_2MB_ch9.wmv" expression="full" duration="340" fileSize="122399555" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_ch9.mp3" expression="full" duration="340" fileSize="2723657" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_ch9.mp4" expression="full" duration="340" fileSize="32526940" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_ch9.wma" expression="full" duration="340" fileSize="2759645" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_ch9.wmv" expression="full" duration="340" fileSize="57847471" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_Zune_ch9.wmv" expression="full" duration="340" fileSize="47143526" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ecn.channel9.msdn.com/o9/ch9/9753/569753/BytesbyMSDNSilverlightWindowsPhone_ch9.wmv" length="57847471" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Bytes by MSDN</dc:creator>
      <itunes:author>Bytes by MSDN</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/Blogs/Bytes+by+MSDN/Bytes-by-MSDN-Maarten-Struys-and-Tim-Huckaby-talk-about-Silverlight-and-Windows-Phone-7/RSS</wfw:commentRss>
      <category>Bytes by MSDN</category>
      <category>Silveright</category>
      <category>Silverlight</category>
      <category>Windows  Phone</category>
    </item>    
</channel>
</rss>