<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Ed Dunhill's Blog : Teaching</title><link>http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx</link><description>Tags: Teaching</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows Azure Online Training for Students</title><link>http://blogs.msdn.com/edunhill/archive/2009/10/20/windows-azure-online-training-for-students.aspx</link><pubDate>Tue, 20 Oct 2009 09:28:47 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909786</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9909786.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9909786</wfw:commentRss><description>&lt;p&gt;This will probably be particularly interesting for those of you who read &lt;a href="http://blogs.msdn.com/edunhill/archive/2009/10/07/try-microsoft-s-cloud-platform-for-free.aspx" target="_blank"&gt;my previous post on free student access to Azure&lt;/a&gt;. ICS, our partner on this offer are running a series of online training sessions later this week specifically for students.&lt;/p&gt;  &lt;p&gt;Each session will cover the following:&lt;/p&gt;  &lt;p&gt;- Overview and demonstration of Windows Azure    &lt;br /&gt;- How you can benefit from your free trial     &lt;br /&gt;- Understanding Windows Azure and the Azure platform     &lt;br /&gt;- Azure pricing and Proof of Concept offerings     &lt;br /&gt;- Next steps in your Azure adoption     &lt;br /&gt;- Azure resources available to you     &lt;br /&gt;- Q&amp;amp;A session &lt;/p&gt;  &lt;p&gt;&lt;a href="https://www506.livemeeting.com/lrs/8002044205/Registration.aspx?PageName=38mvgf0lpf3kzz1v" target="_blank"&gt;You can find out more and register for free here.&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fd4392de-e45b-4d22-8416-57c6c0c9a889" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Azure" rel="tag"&gt;Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Students" rel="tag"&gt;Students&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909786" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Try Microsoft’s Cloud Platform for Free!</title><link>http://blogs.msdn.com/edunhill/archive/2009/10/07/try-microsoft-s-cloud-platform-for-free.aspx</link><pubDate>Wed, 07 Oct 2009 20:02:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9904460</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9904460.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9904460</wfw:commentRss><description>&lt;p&gt;&lt;img style="margin: 0px 0px 0px 10px; display: inline" align="right" src="http://i.zdnet.com/blogs/azure-logo.png" /&gt;Windows Azure is Microsoft’s cloud computing platform allowing you to build and deploy scalable .NET applications online.&lt;/p&gt;  &lt;p&gt;Cloud Computing is a hot topic and likely to be a key part of of many organisations IT strategy moving forward. As a student now is the time to learn more!&lt;/p&gt;  &lt;p&gt;We are making a limited number of developer accounts available to students for free - all you have to do is &lt;a href="http://www.azureadvantage.co.uk/trialsignup/Pages/default.aspx" target="_blank"&gt;register here&lt;/a&gt; being sure to select ‘Student’ in the audience category drop down and using the promo code ‘blog’. &lt;/p&gt;  &lt;p&gt;Once you sign up you will receive an email with your login details and links to help you get started.&lt;/p&gt;  &lt;p&gt;This offer is strictly limited so if you want to get ahead in the field of cloud computing you should &lt;a href="http://www.azureadvantage.co.uk/trialsignup/Pages/default.aspx" target="_blank"&gt;register now&lt;/a&gt;!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:128f9c9d-d7bf-42f1-8bb8-b13daa9a7612" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Cloud+Computing" rel="tag"&gt;Cloud Computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Student" rel="tag"&gt;Student&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9904460" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Kodu is Here!</title><link>http://blogs.msdn.com/edunhill/archive/2009/07/01/kodu-is-here.aspx</link><pubDate>Wed, 01 Jul 2009 17:56:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9811211</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9811211.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9811211</wfw:commentRss><description>&lt;p&gt;Have you ever wanted to create your own game but don’t want to get your hands dirty with code? We now have the answer… Kodu!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/KoduisHere_E02E/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/KoduisHere_E02E/image_thumb.png" width="114" height="153" /&gt;&lt;/a&gt;Kodu allows you to build games using traditional programming paradigms such as conditional statements and loops but without having to fire up Visual Studio. Basically you start with a blank world which you can customise, add characters and set up interactions. Multiplayer is supported as is sharing created games online using &lt;a href="http://www.xbox.com/en-US/games/community/default.htm" target="_blank"&gt;Xbox Live Community Games&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Its great if you’re just looking for a bit of fun and its also a neat way to introduce children to programming.&lt;/p&gt;  &lt;p&gt;Kodu is available for purchase (or demo) on Xbox Live Community Games. You can find out more &lt;a href="http://marketplace.xbox.com/en-US/games/media/66acd000-77fe-1000-9115-d8025855024c/" target="_blank"&gt;here&lt;/a&gt; or watch a demo from GDC below:&lt;/p&gt;  &lt;p&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dVVYSUi-WeQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/dVVYSUi-WeQ&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="450" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:941f6735-6e79-463a-8dea-bf426a3b76c5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Kodu" rel="tag"&gt;Kodu&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Xbox+Live" rel="tag"&gt;Xbox Live&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Community+Games" rel="tag"&gt;Community Games&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Games" rel="tag"&gt;Games&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9811211" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Getting Started with Azure #1</title><link>http://blogs.msdn.com/edunhill/archive/2009/05/19/getting-started-with-azure-1.aspx</link><pubDate>Tue, 19 May 2009 20:06:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9628652</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9628652.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9628652</wfw:commentRss><description>&lt;p&gt;&lt;img style="margin: 0px 10px 10px 0px; display: inline" align="left" src="http://i.zdnet.com/blogs/azure-logo.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/azure/" target="_blank"&gt;Windows Azure&lt;/a&gt; is Microsoft’s cloud computing platform allowing deployment of .NET applications with flexible scaling. My colleague &lt;a href="http://blogs.msdn.com/pblog" target="_blank"&gt;Paolo&lt;/a&gt; recently wrote a &lt;a href="http://www.microsoft.com/education/facultyconnection/gb/articles/articledetails.aspx?cid=1659&amp;amp;c1=en-gb&amp;amp;c2=GB" target="_blank"&gt;great introductory article&lt;/a&gt; for our &lt;a href="http://www.microsoft.com/education/facultyconnection/gb/Default.aspx?c1=en-gb&amp;amp;c2=GB" target="_blank"&gt;Faculty Connection&lt;/a&gt; newsletter which outlines the fundamentals. &lt;/p&gt;  &lt;p&gt;Over the coming months I will be writing a series of posts focussed on getting you started developing with Azure. In this first post I will walk you through setting up the development environment.&lt;/p&gt;  &lt;p&gt;The development environment for Azure consists of Visual Studio and the Azure SDK. You can user either the free &lt;a href="http://www.microsoft.com/express/download/#webInstall" target="_blank"&gt;Visual Studio 2008 Web Developer Express Edition&lt;/a&gt; or a full version of Visual Studio 2008 (such as those available through &lt;a href="http://msdn.microsoft.com/en-gb/academic/default.aspx" target="_blank"&gt;MSDNAA&lt;/a&gt; and &lt;a href="http://www.dreamspark.com" target="_blank"&gt;DreamSpark&lt;/a&gt;). For this article I will be using Windows 7 as my operating system but you can also use Vista SP1 and Windows Server 2008.&lt;/p&gt;  &lt;p&gt;Once you have installed Visual Studio please update it to download SP1 which includes .NET 3.5 SP1 both of which are requirements for the Azure SDK. Finally, before installing the SDK you need to enable ASP.NET and WCF HTTP Activation. To do this on Windows Vista or 7 follow these steps:&lt;/p&gt;  &lt;p&gt;1. From the Start menu, choose Control Panel | Programs | Programs and Features.&lt;/p&gt;  &lt;p&gt;2. Click Turn Windows Features On or Off.&lt;/p&gt;  &lt;p&gt;3. Under Microsoft .NET Framework 3.5.1, select Windows Communication Foundation HTTP Activation.&lt;/p&gt;  &lt;p&gt;4. Under Internet Information Services, expand World Wide Web Services. &lt;/p&gt;  &lt;p&gt;5. Under Application Development Features, select ASP.NET.&lt;/p&gt;  &lt;p&gt;6. Under Common HTTP Features, choose Static Content.&lt;/p&gt;  &lt;p&gt;7. Click OK to install the selected features.&lt;/p&gt;  &lt;p&gt;You can now download and install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af10-3d2839a5a362&amp;amp;displaylang=en" target="_blank"&gt;Azure SDK&lt;/a&gt; and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59e8fc0c-c399-4ab7-8a93-882d8e74b67a&amp;amp;displaylang=en" target="_blank"&gt;Azure Tools for Visual Studio&lt;/a&gt;. The Azure SDK provides a simulation of the cloud on your desktop so you can test applications locally and the Tools for Visual Studio include the Windows Azure project types.&lt;/p&gt;  &lt;p&gt;We’re now set to develop our Azure web application, for this example we will build a simple ‘Hello World’ application but using the twist is that rather than running it as a single instance as you traditionally would we will fire it up with 5 instances.&lt;/p&gt;  &lt;p&gt;First open Visual Studio, select ‘File&amp;gt;New&amp;gt;Project...’ From the ‘Project types’ box select Cloud Service and from the ‘Templates’ box select ‘Web Cloud Service’, enter a name for the project and click OK.&lt;/p&gt;  &lt;p&gt;When the template loads you will notice in the ‘Solution Explorer’ we have a solution with two projects. The first project contains the cloud service which features two XML files containing the service configuration (.cscfg) and the service definition (.csdef). The second project is the web application itself where you will find a blank default.aspx file which is familiar in traditional ASP.NET development. For the purposes of this tutorial we will make a small change to the default.aspx file so double click it and in the left hand pane add the text ‘Hello World’ between the ‘&amp;lt;div&amp;gt;’ tags. You can now press F5 to setup the development fabric and deploy your application for local test.&lt;/p&gt;  &lt;p&gt;Your application should then launch in your web browser and display ‘Hello World’. If you look in your system tray you should notice an icon displaying two gears, this represents the Azure Development Fabric. Right click the icon and select ‘Show Development Fabric UI’. In the interface you can expand the application we have just built and you will see that there is one instance running. A single instance is the default configuration for a cloud application but if we want to scale our application and run multiple instances it is a simple matter of changing the XML configuration file I mentioned earlier. To do this go back to Visual Studio, stop debugging and open the .cscfg file. In the left hand pane you should be able to see a tag containing ‘&lt;i&gt;Instances count=&amp;quot;1&amp;quot;&lt;/i&gt;’, change the 1 to 5 and press F5 to rebuild your application. If you reopen the Development Fabric UI you will now see that there are 5 instances of our application running. &lt;/p&gt;  &lt;p&gt;As you can see it is very easy to run up multiple instances of our application and this works exactly the same when you deploy your application to the cloud which I will cover in my next post on Azure.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c728b2db-8d5e-4d62-b7c2-db9efb3070ba" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows+Azure" rel="tag"&gt;Windows Azure&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual+Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Cloud+Computing" rel="tag"&gt;Cloud Computing&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9628652" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Free MCTS Certification Through DreamSpark</title><link>http://blogs.msdn.com/edunhill/archive/2009/05/08/free-mcts-certification-through-dreamspark.aspx</link><pubDate>Fri, 08 May 2009 17:08:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9596994</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9596994.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9596994</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeMCTSCertificationThroughDreamSpark_D4D7/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeMCTSCertificationThroughDreamSpark_D4D7/image_thumb.png" width="150" height="134" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;For a limited time Microsoft is offering free vouchers to sit an MCTS exam through the &lt;a href="http://www.dreamspark.com" target="_blank"&gt;DreamSpark&lt;/a&gt; programme. The MCTS (Microsoft Certified Technology Specialist) stream is aimed at developers and IT professionals and is available in multiple flavours relevant to a raft of developer and infrastructure technologies. &lt;a href="http://www.microsoft.com/learning/mcp/mcts/default.mspx" target="_blank"&gt;Full list of MCTS certs&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;DreamSpark is available to all HE students through &lt;a href="https://www.dreamspark.com/Products/ProductList.aspx" target="_blank"&gt;direct verification&lt;/a&gt; as well as schools through an onsite admin. If you are a school pupil and would like access please direct a member of staff at your school to the &lt;a href="https://www.dreamspark.com/FAQ/AdministratorOverview.aspx" target="_blank"&gt;sign up page&lt;/a&gt; so they can register the school for free.&lt;/p&gt;  &lt;p&gt;As well as free exams DreamSpark provides a range of Microsoft products for free:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeMCTSCertificationThroughDreamSpark_D4D7/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeMCTSCertificationThroughDreamSpark_D4D7/image_thumb_1.png" width="540" height="259" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.dreamspark.com/Products/Product.aspx?productid=24" target="_blank"&gt;Find out more about the free MCTS offer.&lt;/a&gt;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:cfd1df8b-bab2-4765-98fd-1c77e3325036" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MCTS" rel="tag"&gt;MCTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MCP" rel="tag"&gt;MCP&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Student" rel="tag"&gt;Student&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DreamSpark" rel="tag"&gt;DreamSpark&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9596994" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/DreamSpark/default.aspx">DreamSpark</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Student Celebration Day Slides</title><link>http://blogs.msdn.com/edunhill/archive/2009/05/01/student-celebration-day-slides.aspx</link><pubDate>Fri, 01 May 2009 10:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9580231</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9580231.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9580231</wfw:commentRss><description>&lt;p&gt;To follow on from yesterday’s post I wanted to share the slides from the MSR talks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.slideshare.net/secret/kmjZYBgbAnIbKd" target="_blank"&gt;MSR Overview&lt;/a&gt; - Andrew Herbert &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.slideshare.net/secret/MM3kVvgvHMrplk" target="_blank"&gt;Getting from A to B: fast route-finding using slow computers&lt;/a&gt; - Simon Peyton-Jones&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.slideshare.net/secret/bFZC4Jx1npyGwz" target="_blank"&gt;Curing Cancer, Halting global Disease Outbreaks and averting Dangerous Climate Change&lt;/a&gt; - Drew Purves&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.slideshare.net/secret/FWZTkqBhs53SN4" target="_blank"&gt;Proving that programs eventually do something good&lt;/a&gt; - Byron Cook&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Videos will follow next week.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:18a81dd5-5c3e-41c1-85d0-5b066b355935" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft+Research" rel="tag"&gt;Microsoft Research&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Imagine+Cup" rel="tag"&gt;Imagine Cup&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MSP" rel="tag"&gt;MSP&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9580231" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Events/default.aspx">Events</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/MSPs/default.aspx">MSPs</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>IT Academy Student Pass - Free eLearning</title><link>http://blogs.msdn.com/edunhill/archive/2009/02/13/it-academy-student-pass-free-elearning.aspx</link><pubDate>Fri, 13 Feb 2009 13:31:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9414759</guid><dc:creator>edunhill</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/9414759.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=9414759</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/DreamSparkFreeSoftwareforallUKStudents_1405F/image_2.png"&gt;&lt;img style="margin: 0px 0px 10px 10px" border="0" alt="image" align="right" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/DreamSparkFreeSoftwareforallUKStudents_1405F/image_thumb.png" width="244" height="203" /&gt;&lt;/a&gt;A little while back I &lt;a target="_blank" href="http://blogs.msdn.com/edunhill/archive/2008/10/02/free-elearning-for-microsoft-certification.aspx"&gt;posted&lt;/a&gt; about a &lt;a target="_blank" href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx"&gt;great new programme&lt;/a&gt; we launched which gives students free access to official Microsoft eLearning courses. &lt;/p&gt;  &lt;p&gt;To sign up you need a unique code which authenticates you as a student, the great news is these codes are now available (along with a bunch of free software) from &lt;a target="_blank" href="http://www.dreamspark.com"&gt;DreamSpark&lt;/a&gt;. For more information about DreamSpark take a look at my posts &lt;a target="_blank" href="http://blogs.msdn.com/edunhill/archive/2008/02/20/dreamspark-verification-update.aspx"&gt;here&lt;/a&gt; and &lt;a target="_blank" href="http://blogs.msdn.com/edunhill/archive/2008/02/19/dreamspark-free-software-for-all-uk-students.aspx"&gt;here&lt;/a&gt; and to see exactly what's included in IT Academy Student Pass take a look at the &lt;a target="_blank" href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx"&gt;official site&lt;/a&gt;.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:dda4f2b6-11a6-461b-98d6-ec6b6334cdd0" class="wlWriterSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft%20eLearning" rel="tag"&gt;Microsoft eLearning&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DreamSpark" rel="tag"&gt;DreamSpark&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IT%20Academy" rel="tag"&gt;IT Academy&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Certification" rel="tag"&gt;Certification&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Student%20Pass" rel="tag"&gt;Student Pass&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9414759" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/DreamSpark/default.aspx">DreamSpark</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Free eLearning for Microsoft Certification</title><link>http://blogs.msdn.com/edunhill/archive/2008/10/02/free-elearning-for-microsoft-certification.aspx</link><pubDate>Thu, 02 Oct 2008 18:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8973722</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8973722.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8973722</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeeLearningforMicrosoftCertification_E422/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeeLearningforMicrosoftCertification_E422/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeeLearningforMicrosoftCertification_E422/image_thumb.png" width=300 height=70 mce_src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/FreeeLearningforMicrosoftCertification_E422/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ever fancied getting some more letters after you name and improving your job prospects when you leave uni? Then Microsoft certification is for you!&lt;/P&gt;
&lt;P&gt;We're making a whole bunch of official eLearning content available to students for free through the &lt;A target=_blank href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx" mce_href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx"&gt;IT Academy Student Pass&lt;/A&gt; programme. These courses will give you everything you need to learn to take a MCP exams and get ready for industry!&lt;/P&gt;
&lt;P&gt;&lt;STRIKE&gt;To sign up you need a unique code to authenticate yourself as a student, if you want one &lt;/STRIKE&gt;&lt;A target=_blank href="http://blogs.msdn.com/edunhill/contact.aspx" mce_href="http://blogs.msdn.com/edunhill/contact.aspx"&gt;&lt;STRIKE&gt;click here to email me&lt;/STRIKE&gt;&lt;/A&gt;&lt;STRIKE&gt;.&lt;/STRIKE&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;*** UPDATE - You can now get your code directly from &lt;/STRONG&gt;&lt;A target=_blank href="http://www.dreamspark.com/" mce_href="http://www.dreamspark.com"&gt;&lt;STRONG&gt;DreamSpark&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&amp;nbsp;(see &lt;/STRONG&gt;&lt;A target=_blank href="http://blogs.msdn.com/edunhill/archive/2009/02/13/it-academy-student-pass-free-elearning.aspx" mce_href="http://blogs.msdn.com/edunhill/archive/2009/02/13/it-academy-student-pass-free-elearning.aspx"&gt;&lt;STRONG&gt;this post&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;) ***&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Once you've got your code you can register &lt;A target=_blank href="http://itastudentpass.microsoftelearning.com/" mce_href="http://itastudentpass.microsoftelearning.com/"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;For all the details check out the &lt;A target=_blank href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx" mce_href="http://www.microsoft.com/education/MSITAcademy/itastudentpass.mspx"&gt;official website&lt;/A&gt;.&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1d737cba-3c2a-4e77-8168-eb5338583e5d class=wlWriterSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/MCP" rel=tag mce_href="http://technorati.com/tags/MCP"&gt;MCP&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Microsoft%20eLearning" rel=tag mce_href="http://technorati.com/tags/Microsoft%20eLearning"&gt;Microsoft eLearning&lt;/A&gt;,&lt;A href="http://technorati.com/tags/IT%20Academy" rel=tag mce_href="http://technorati.com/tags/IT%20Academy"&gt;IT Academy&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Student%20Pass" rel=tag mce_href="http://technorati.com/tags/Student%20Pass"&gt;Student Pass&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Certification" rel=tag mce_href="http://technorati.com/tags/Certification"&gt;Certification&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8973722" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Careers+_4000_+Microsoft/default.aspx">Careers @ Microsoft</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>New XNA Mini Game Available</title><link>http://blogs.msdn.com/edunhill/archive/2008/08/04/new-xna-mini-game-available.aspx</link><pubDate>Mon, 04 Aug 2008 12:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8829748</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8829748.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8829748</wfw:commentRss><description>&lt;EMBED name=msn_soapbox pluginspage=http://macromedia.com/go/getflashplayer src=http://images.video.msn.com/flash/soapbox1_1.swf width=432 height=364 type=application/x-shockwave-flash mce_src="http://images.video.msn.com/flash/soapbox1_1.swf" quality="high" base="http://images.video.msn.com/" allowfullscreen="true" allowscriptaccess="always" flashvars="c=v&amp;amp;v=8eb31326-da1c-4b65-964e-ef1d806729a0&amp;amp;ifs=true&amp;amp;fr=shared&amp;amp;mkt=en-US"&gt;&lt;/EMBED&gt; &lt;BR&gt;&lt;A title="XNA Creators Club Online: Movipa Mini Game" href="http://video.msn.com/video.aspx?mkt=en-US&amp;amp;playlist=videoByUuids:uuids:8eb31326-da1c-4b65-964e-ef1d806729a0&amp;amp;showPlaylist=true&amp;amp;from=msnvideo" target=_new mce_href="http://video.msn.com/video.aspx?mkt=en-US&amp;amp;playlist=videoByUuids:uuids:8eb31326-da1c-4b65-964e-ef1d806729a0&amp;amp;showPlaylist=true&amp;amp;from=msnvideo"&gt;Video: XNA Creators Club Online: Movipa Mini Game&lt;/A&gt; 
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The XNA team just announced a new mini game called &lt;A href="http://creators.xna.com/en-us/minigame/movipa" target=_blank mce_href="http://creators.xna.com/en-us/minigame/movipa"&gt;Movipa&lt;/A&gt;. Its basically a jigsaw game where you have to reorder the pieces to make the image complete the cool thing is it uses animations rather than static images.&lt;/P&gt;
&lt;P&gt;The game is available for free and ready to compile but as with all creators club content you can use the source in your own creations!&lt;/P&gt;
&lt;P&gt;You can find this game along with a whole bunch of code complete examples in the &lt;A href="http://creators.xna.com/education/catalog/" target=_blank mce_href="http://creators.xna.com/education/catalog/"&gt;content catalog&lt;/A&gt; and other full games in the &lt;A href="http://creators.xna.com/education/starterkits/" target=_blank mce_href="http://creators.xna.com/education/starterkits/"&gt;starter kit section of the site&lt;/A&gt;.&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:bb906ba5-f96f-4591-9d63-5c47760d915f style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/XNA" rel=tag mce_href="http://technorati.com/tags/XNA"&gt;XNA&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Movipa" rel=tag mce_href="http://technorati.com/tags/Movipa"&gt;Movipa&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Game%20Studio" rel=tag mce_href="http://technorati.com/tags/Game%20Studio"&gt;Game Studio&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Creators%20Club" rel=tag mce_href="http://technorati.com/tags/Creators%20Club"&gt;Creators Club&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8829748" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Live Mesh Now Available to UK Users</title><link>http://blogs.msdn.com/edunhill/archive/2008/07/31/live-mesh-now-available-to-uk-users.aspx</link><pubDate>Thu, 31 Jul 2008 11:58:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8793060</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8793060.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8793060</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/LiveMeshNowAvailabletoUKUsers_8C4E/image_2.png"&gt;&lt;img style="margin: 0px 10px 0px 0px" height="139" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/LiveMeshNowAvailabletoUKUsers_8C4E/image_thumb.png" width="200" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;You've probably all heard something in the IT press about &lt;a href="http://mesh.com" target="_blank"&gt;Live Mesh&lt;/a&gt; over the last couple of months well now you have a chance to go try the tech preview yourselves! Sign up is now open to UK users and if you already have a &lt;a href="http://get.live.com/getlive/overview?wa=wsignin1.0" target="_blank"&gt;Live ID&lt;/a&gt; then all you need to do is go to &lt;a href="http://mesh.com" target="_blank"&gt;mesh.com&lt;/a&gt; and log in.&lt;/p&gt; &lt;br /&gt; &lt;p&gt;To find out more about the tech preview take a look at the &lt;a href="https://www.mesh.com/Welcome/LearnMore.aspx" target="_blank"&gt;official site&lt;/a&gt; and the &lt;a href="http://blogs.msdn.com/livemesh" target="_blank"&gt;team blog&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Before you get too excited it is worth noting that currently the tech preview only includes access to the end user application, things will get really interesting when the SDK is released for developers. To find out more about the developer technologies and get on the waiting list for the SDK tech preview check out &lt;a href="https://www.mesh.com/web/developer.aspx" target="_blank"&gt;this page&lt;/a&gt;.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a1eb7db3-6421-456a-90b3-fc8e3c315875" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Live%20Mesh" rel="tag"&gt;Live Mesh&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Live%20ID" rel="tag"&gt;Live ID&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tech%20Preview" rel="tag"&gt;Tech Preview&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Mesh%20SDK" rel="tag"&gt;Mesh SDK&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8793060" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Introduction to Web Development; Popfly Input Blocks</title><link>http://blogs.msdn.com/edunhill/archive/2008/06/13/introduction-to-web-development-popfly-input-blocks.aspx</link><pubDate>Fri, 13 Jun 2008 14:59:15 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8594387</guid><dc:creator>edunhill</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8594387.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8594387</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/popfly_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="74" alt="popfly" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/popfly_thumb.jpg" width="192" align="left" border="0" /&gt;&lt;/a&gt; In this the last in a series of five articles on Microsoft Web Development we look at creating an input block to allow your web service to be used in Popfly.&lt;/p&gt;  &lt;h4&gt;Building our block&lt;/h4&gt;  &lt;p&gt;For the purpose of this tutorial we will implement a block that will take XML data (in the form of an RSS feed), process and display that data. This will demonstrate the principles of building an input block in Popfly using JavaScript. In this tutorial we will build out put functionality into our block so we can display our data formatted with html, it is very easy to tweak the output so it can be transformed and displayed using further blocks.&lt;/p&gt;  &lt;p&gt;Firstly, head over to &lt;a href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/a&gt; and login with your Windows Live ID. Then using the toolbar at the top, select Create Stuff &amp;gt; Block. Now we can start building our data input block...&lt;/p&gt;  &lt;p&gt;When you first view the &amp;#8216;create block&amp;#8217; screen, you&amp;#8217;ll see a bunch of XML &amp;#8211; this is the definition of the block so that you can provide customisation through Popfly&amp;#8217;s user interface. Seeing as we&amp;#8217;re creating an RSS-reader block, we&amp;#8217;ll call ours &amp;#8220;RSSFeed&amp;#8221;.&lt;/p&gt;  &lt;p&gt;1. Where it says class=&amp;#8220;HelloWorldClass&amp;#8221;, change it to read class=&amp;#8220;RSSFeed&amp;#8221;.&lt;/p&gt;  &lt;p&gt;2. You&amp;#8217;ll notice below there is a group tagged &amp;#8216;operations&amp;#8217;. This is where you can build different behaviours for your block to have. For this block, we&amp;#8217;ll implement one operation: getItems. This will simply return all the titles from our RSS feed.&lt;/p&gt;  &lt;p&gt;3. Rename the default operation from &amp;#8220;hello&amp;#8221; to &amp;#8220;getItems&amp;#8221;.&lt;/p&gt;  &lt;p&gt;4. Inside the description tags, change the description, to something such as &amp;#8220;Gets the titles from the RSS feed.&amp;#8221;&lt;/p&gt;  &lt;p&gt;5. Above the &amp;lt;outputs&amp;gt; group of tags, create another group called inputs.&lt;/p&gt;  &lt;p&gt;6. Create an input tag with the name=&amp;#8220;url&amp;#8221;, required=&amp;#8220;true&amp;#8221; and type=&amp;#8220;feedURL&amp;#8221;.&lt;/p&gt;  &lt;p&gt;7. Give this new input tag a new description, such as &amp;#8220;The URL of the RSS feed.&amp;#8221;&lt;/p&gt;  &lt;p&gt;8. If you like, you can give this a &amp;lt;defaultValue&amp;gt; property, I&amp;#8217;ve set mine to my blog: &lt;a href="http://blogs.msdn.com/edunhill/rss.xml"&gt;http://blogs.msdn.com/edunhill/rss.xml&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;9. Under the &amp;lt;outputs&amp;gt; group, change the isArray property to &amp;#8220;true&amp;#8221;, change the type to &amp;#8220;custom&amp;#8221; and add object=&amp;#8220;RSSItem&amp;#8221; &amp;#8211; this will show we&amp;#8217;re outputting a list of RSSItems.&lt;/p&gt;  &lt;p&gt;10. After the &amp;lt;operations&amp;gt; group, add a new group called &amp;lt;objects&amp;gt;, so we can quickly define what an RSSItem is.&lt;/p&gt;  &lt;p&gt;11. Create a new &amp;lt;object&amp;gt; tag, with name=&amp;#8220;RSSItem&amp;#8221;, then give it another tag called &amp;lt;field&amp;gt; with the properties name=&amp;#8220;title&amp;#8221;, type=&amp;#8220;title&amp;#8221; and isArray=&amp;#8220;false&amp;#8221;.&lt;/p&gt;  &lt;p&gt;12. That&amp;#8217;s it! The block is now defined so Popfly can understand it. Hopefully you should have something that looks like the below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_thumb_2.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, we have to head on over to the &amp;#8220;Block Code&amp;#8221; tab, to write the code that will actually make the block do it&amp;#8217;s thing.&lt;/p&gt;  &lt;p&gt;1. Change the HelloWorldClass text to read RSSFeed.&lt;/p&gt;  &lt;p&gt;2. Rename the first &amp;#8220;hello&amp;#8221; function to &amp;#8220;getItems&amp;#8221;, and add url in the brackets after the word &amp;#8220;function&amp;#8221;.&lt;/p&gt;  &lt;p&gt;3. Then inside the function, type the following:&lt;/p&gt;  &lt;p&gt;var returnResponse = environment.getXml(url);&lt;/p&gt;  &lt;p&gt;return this.__formatResponseDataRSSItem(returnResponse);&lt;/p&gt;  &lt;p&gt;These lines download the RSS feed into a readable format for use with our block.&lt;/p&gt;  &lt;p&gt;4. Create another RSSFeed.prototype. called &amp;#8220;__formatResponseDataRSSItem&amp;#8221; &amp;#8211; this will return the article titles as an array of strings (lines of text) for use with our block.&lt;/p&gt;  &lt;p&gt;5. Inside the new function, add the following code:&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var resultArray  = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Array();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var itemNodeList = resultXML.getElementsByTagName(&lt;span style="color: #006080"&gt;'item'&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var resultNodeCount = itemNodeList.length;            &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;var resultArray  = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Array(resultNodeCount);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;       &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt;(var i = 0; i &amp;lt; resultNodeCount; i++)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{   &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    var itemNode = itemNodeList[i];&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(itemNode)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    {                &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;        var title =         itemNode.getElementsByTagName(&lt;span style="color: #006080"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;).length &amp;gt;= 1 ?        itemNode.getElementsByTagName(&lt;span style="color: #006080"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;)[0].text : &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;            resultArray[i] = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; RSSItem(title);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    }&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; resultArray;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code iterates through each of the titles in the RSS XML document and adds them to our resultArray, which is in turn, returned to the block for output.&lt;/p&gt;

&lt;p&gt;6. The two final things to do are define (in code) an RSSItem, and then define how our block will pass it&amp;#8217;s data to another block (or optionally, how it will output the data).&lt;/p&gt;

&lt;p&gt;7. Define another function called &amp;#8220;RSSItem&amp;#8221; with &amp;#8220;title&amp;#8221; as a parameter, then insert the code: this.title = title;&lt;/p&gt;

&lt;p&gt;This code defines RSSItem as &amp;#8216;having a title&amp;#8217;.&lt;/p&gt;

&lt;p&gt;8. Finally, we need to output some sort of data. Create another RSSItem.prototype. called &amp;#8220;toString&amp;#8221; and insert the following code:&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;var html = &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;html += &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;strong&amp;gt;&amp;quot;&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.title + &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;/strong&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;&lt;/span&gt;; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt; html;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This code simply outputs all the titles in bold as html to be read either by the user, or another block.&lt;/p&gt;

&lt;p&gt;And that&amp;#8217;s it! Now our block is totally built and configured, hopefully you&amp;#8217;ll be looking at something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="184" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentPopflyInputB_B621/image_thumb_3.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Now we can quickly test the block, by clicking the &amp;#8220;Save and Run&amp;#8221; option to the top-right of your screen. Give the block a name, like RSSFeed, and Popfly will create a new Mashup with your block. If you want to see what it looks like, you can hit preview and should be able to see a list of article titles.&lt;/p&gt;

&lt;p&gt;You can change the code in step 8 above to output variables instead of html so you can hook this block up with a display or transform block.&lt;/p&gt;

&lt;p&gt;I hope you've enjoyed the series, if you have any questions about any aspect of Microsoft Web Dev don't hesitate to &lt;a href="http://blogs.msdn.com/edunhill/contact.aspx"&gt;drop me a line&lt;/a&gt;.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:2c37a8df-a036-4fcc-a5eb-680b1d44eda9" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Popfly" rel="tag"&gt;Popfly&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JavaScript" rel="tag"&gt;JavaScript&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Silverlight" rel="tag"&gt;Silverlight&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8594387" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Silverlight 2 Beta 2 Now Available</title><link>http://blogs.msdn.com/edunhill/archive/2008/06/09/silverlight-2-beta-2-now-available.aspx</link><pubDate>Mon, 09 Jun 2008 10:23:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8582103</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8582103.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8582103</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://silverlight.net/GetStarted/" target="_blank"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="205" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/Silverlight2Beta2NowAvailable_1423C/image_3.png" width="244" align="left" border="0" /&gt;&lt;/a&gt; The Beta 2 of Silverlight v2 is now available adding a bunch of new features to .NET based SL development.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/" target="_blank"&gt;Scott Guthrie&lt;/a&gt; has put together an &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx" target="_blank"&gt;awesome post&lt;/a&gt; detailing all the new stuff.&lt;/p&gt;  &lt;p&gt;Everything you need is available on the official &lt;a href="http://silverlight.net/GetStarted/" target="_blank"&gt;Silverlight website&lt;/a&gt; so there's no time like the present to go and have a play :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e772753d-0108-45b9-9519-7e2cddcc5b54" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Silverlight%202" rel="tag"&gt;Silverlight 2&lt;/a&gt;,&lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Expression%20Blend" rel="tag"&gt;Expression Blend&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8582103" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Introduction to Web Development; Silverlight and SQL</title><link>http://blogs.msdn.com/edunhill/archive/2008/05/15/introduction-to-web-development-silverlight-and-sql.aspx</link><pubDate>Thu, 15 May 2008 09:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8506005</guid><dc:creator>edunhill</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8506005.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8506005</wfw:commentRss><description>&lt;P&gt;In the fourth in a series of five articles exploring Microsoft Web technologies we'll look at implementing a Silverlight front end for our SQL database/WCF Web Service.&lt;/P&gt;
&lt;H4&gt;Prerequisites&lt;/H4&gt;
&lt;P&gt;For this tutorial you will need &lt;A href="http://downloads.channel8.msdn.com/" target=_blank mce_href="http://downloads.channel8.msdn.com"&gt;Visual Studio 2008&lt;/A&gt; Standard or above and the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E0BAE58E-9C0B-4090-A1DB-F134D9F095FD&amp;amp;displaylang=en"&gt;Silverlight 2 Beta 1 Tools for Visual Studio 2008&lt;/A&gt;. Both items are available for free for students (see links).&lt;/P&gt;
&lt;H4&gt;Getting started&lt;/H4&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 10px 15px 10px 20px; BORDER-RIGHT-WIDTH: 0px" height=154 alt=image src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_thumb.png" width=139 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDevelopmentSilverlighta_85BD/image_thumb.png"&gt;&lt;/A&gt; Last month we looked at building a simple ASP.NET Web App that connected to a SQL database to add and retrieve data. This month we will build on that example and create a Silverlight frontend for the database. Because Silverlight is a client side technology and we want to retrieve data from the server side we need to implement a Web Service that will retrieve the data on the server side and then provide that data to our Silverlight application.&lt;/P&gt;
&lt;H4&gt;The Web Service&lt;/H4&gt;
&lt;P&gt;We will start by building a WCF web service that will retrieve data from our database (using the principles demonstrated last month) and allow us to access this data in our Silverlight application.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Visual Studio and select 'File'&amp;gt;'New'&amp;gt;'Project...'&amp;gt;'Web'&amp;gt;'WCF Service Application' &lt;/LI&gt;
&lt;LI&gt;Firstly we need to reset the default binding in the Web.config file to Basic HttpBinging: 
&lt;UL&gt;
&lt;LI&gt;Open the Web.config file &lt;/LI&gt;
&lt;LI&gt;Find &amp;lt;System.serviceModel&amp;gt; &amp;lt;service&amp;gt; &amp;lt;endpoint&amp;gt; &lt;/LI&gt;
&lt;LI&gt;Set the 'binding' property to 'basicHttpBinding' &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Now lets implement our database and dataset - follow the instructions in &lt;A href="http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx" target=_blank mce_href="http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx"&gt;last months article&lt;/A&gt;. 
&lt;UL&gt;
&lt;LI&gt;If you get stuck take a look at the below code which implements retrieval of data using our dataset and returns an int specifying the number of rows in our table: 
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; CountUsers()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            DataSet1TableAdapters.addressesTableAdapter addressAdapter = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; CustomerService.DataSet1TableAdapters.addressesTableAdapter();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            DataSet1.addressesDataTable addresses = addressAdapter.GetData();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            ArrayList addressList = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ArrayList();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt; (DataSet1.addressesRow addressRow &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; addresses)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;                addressList.Add(addressRow.Name + &lt;SPAN style="COLOR: #006080"&gt;" - "&lt;/SPAN&gt; + addressRow.Phone);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; rows = addressList.Count;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; rows;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;That's our service implemented! &lt;/P&gt;
&lt;H4&gt;The Silverlight Frontend&lt;/H4&gt;
&lt;P&gt;Once you have your WCF Web Service up and running you can move onto implementing your Silverlight frontend. I will now show you how to consume data from your service using Silverlight. &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;First we need to add a Silverlight Project to our solution: 
&lt;UL&gt;
&lt;LI&gt;Right click the solution in the Solution Explorer and select 'Add'&amp;gt;'New Project...'&amp;gt;'Silverlight'&amp;gt;'Silverlight Application' &lt;/LI&gt;
&lt;LI&gt;In the following dialog box leave the default settings intact and click OK. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Now you should see your page.xaml file in design/code view &lt;/LI&gt;
&lt;LI&gt;Add '&amp;lt;TextBox Height="50" Width="200" x:Name="userCountResult"/&amp;gt;' within the '&amp;lt;Grid&amp;gt;' tags to create a TextBox we can manipulate in code. &lt;/LI&gt;
&lt;LI&gt;Now we need to create a reference to the service we created in the previous section: 
&lt;UL&gt;
&lt;LI&gt;In the Solution Explorer right click the references folder under the Silverlight project and select 'Add service reference...'&amp;gt;'Discover' &lt;/LI&gt;
&lt;LI&gt;You should now see the Web service you created so just click OK to create the reference. &lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;Next we're going to write the code to connect to the Web service, download the data and when the data is fully downloaded fire an event that will update out TextBox: 
&lt;UL&gt;
&lt;LI&gt;You need to insert the below code into your Page() class (&lt;EM&gt;NB: you may have to change some of the reference names depending on the naming conventions you have used&lt;/EM&gt;) &lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; Page()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            InitializeComponent();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            Binding binding = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; BasicHttpBinding();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            EndpointAddress address = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; EndpointAddress(&lt;SPAN style="COLOR: #006080"&gt;"http://localhost:54580/service1.svc"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            ServiceReference.Service1Client proxy = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ServiceReference.Service1Client(binding, address);  &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            proxy.CountUsersCompleted += &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; EventHandler&amp;lt;CustomerClient.ServiceReference.CountUsersCompletedEventArgs&amp;gt;(proxy_CountUsersCompleted);&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;            proxy.CountUsersAsync();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;UL&gt;
&lt;LI&gt;This code will connect with the service running on the same domain, set up a proxy, initiate data retrieval and create an event that will be fired when data retrieval is complete. &lt;/LI&gt;
&lt;LI&gt;So now we need to handle the event: &lt;/LI&gt;&lt;/UL&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; proxy_CountUsersCompleted(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, CustomerClient.ServiceReference.CountUsersCompletedEventArgs e)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;            userCountResult.Text = &lt;SPAN style="COLOR: #006080"&gt;"Number of users: "&lt;/SPAN&gt; + e.Result;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;        }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Hit F5 and it should all work. If you find it throws an unhandled exception related to http error codes the chances are that the dev server provided by VS2008 is not using port 54580 as in the above example. The port used is dynamic and you just need to check in your IE address bar and update the code accordingly. If you come up against any other problems take a look at the zip file below - it contains my working sln file which you can download and play with.&lt;/P&gt;
&lt;P&gt;Also why not check out these excellent tutorials on &lt;A href="http://msdn.com/" target=_blank mce_href="http://msdn.com"&gt;MSDN&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc197940(VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc197940(VS.95).aspx"&gt;How to: Build a Service for Silverlight Clients&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc197937(VS.95).aspx"&gt;How to: Access a Service from Silverlight using Visual Studio&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H4&gt;Next Month&lt;/H4&gt;
&lt;P&gt;Next month will be the final article in this series and will investigate implementing our Web Service as a Block in &lt;A href="http://www.popfly.com/" target=_blank mce_href="http://www.popfly.com"&gt;Popfly&lt;/A&gt; to allow us to rapidly build Web Apps and share our data in new ways.&lt;/P&gt;
&lt;DIV class=wlWriterSmartContent id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:47c5027d-1d08-4745-92cf-6771b5ea5690 style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/Silverlight" rel=tag mce_href="http://technorati.com/tags/Silverlight"&gt;Silverlight&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SQL" rel=tag mce_href="http://technorati.com/tags/SQL"&gt;SQL&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Visual%20Studio%202008" rel=tag mce_href="http://technorati.com/tags/Visual%20Studio%202008"&gt;Visual Studio 2008&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Popfly" rel=tag mce_href="http://technorati.com/tags/Popfly"&gt;Popfly&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Web%20Service" rel=tag mce_href="http://technorati.com/tags/Web%20Service"&gt;Web Service&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Web%20Application" rel=tag mce_href="http://technorati.com/tags/Web%20Application"&gt;Web Application&lt;/A&gt;,&lt;A href="http://technorati.com/tags/ASP.NET" rel=tag mce_href="http://technorati.com/tags/ASP.NET"&gt;ASP.NET&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8506005" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/edunhill/attachment/8506005.ashx" length="879159" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Robochamps Robotics League - Win Real Robots!</title><link>http://blogs.msdn.com/edunhill/archive/2008/04/24/robochamps-robotics-league-win-real-robots.aspx</link><pubDate>Fri, 25 Apr 2008 00:35:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8422794</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8422794.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8422794</wfw:commentRss><description>&lt;a href="http://www.robochamps.com" target="_blank"&gt;&lt;img style="margin: 0px 10px 0px 0px" alt="Robochamps" src="http://www.robochamps.com/rc/Images/FunStuff/BlogBling/RoboBling_Generic.jpg" align="left" /&gt;&lt;/a&gt;Today saw the launch of a new &lt;a href="http://www.robochamps.com/" target="_blank"&gt;website&lt;/a&gt; which allows users to compete in a&amp;#160; series of challenges to program virtual robots using &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=EB00C558-2163-45A5-BEFE-531AD48BC525&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Robotics Studio&lt;/a&gt; (a plugin for &lt;a href="http://msdn2.microsoft.com/en-gb/vstudio/default.aspx" target="_blank"&gt;Visual Studio&lt;/a&gt; - &lt;a href="http://www.microsoft.com/express/download/" target="_blank"&gt;C# Express&lt;/a&gt; and above).   &lt;p&gt;Historically robotics has had many barriers to entry for the casual users wanting to get started such as the cost of hardware. The cool thing about &lt;a href="http://www.robochamps.com" target="_blank"&gt;Robochamps&lt;/a&gt; is it uses 3D simulation technology built into Robotics Studio to allow users to program virtual robots at no cost. Even cooler you can actually win real robots by competing!&lt;/p&gt;  &lt;p&gt;It's really easy to get started; just set up the IDE (you can get a Visual Studio 2008 from &lt;a href="http://downloads.channel8.msdn.com" target="_blank"&gt;DreamSpark&lt;/a&gt; if you're a student), pick a challenge and start coding, if you get stuck there's even a &lt;a href="http://www.robochamps.com/rc/Info/LearningArea/Links.aspx" target="_blank"&gt;learning zone&lt;/a&gt; on the site.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c097f70d-0cd3-45d9-a6f8-0edf2b49a950" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Robotics" rel="tag"&gt;Robotics&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Robochamps" rel="tag"&gt;Robochamps&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Robots" rel="tag"&gt;Robots&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8422794" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/DreamSpark/default.aspx">DreamSpark</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item><item><title>Introduction to Web Development; Building an ASP.NET/SQL Web Application</title><link>http://blogs.msdn.com/edunhill/archive/2008/04/19/introduction-to-web-development-building-an-asp-net-sql-web-application.aspx</link><pubDate>Sat, 19 Apr 2008 12:32:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8409348</guid><dc:creator>edunhill</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/edunhill/comments/8409348.aspx</comments><wfw:commentRss>http://blogs.msdn.com/edunhill/commentrss.aspx?PostID=8409348</wfw:commentRss><description>&lt;p&gt;In the third of a series of five articles exploring Microsoft Web technologies I'll walk you through building a simple Web application which retrieves and stores data in a SQL database.&lt;/p&gt;  &lt;h4&gt;Getting Started&lt;/h4&gt;  &lt;p&gt;First off you need to set up your development environment, to find out how see my &lt;a href="http://blogs.msdn.com/edunhill/archive/2008/03/12/introduction-to-web-development-getting-started-with-asp-net.aspx" target="_blank"&gt;previous article&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I'm going to show you how to build a simple address book application which will allow you to search for a contact by name and add new contacts. The data will be stored in a SQL database and the frontend will be built using ASP.NET.&lt;/p&gt;  &lt;p&gt;To kick off you need to open Visual Studio and create a new Web Site:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Click the File menu &amp;gt; New &amp;gt; Web Site... &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="71" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the resulting dialogue box select 'ASP.NET Web Site' and give your project a name in the Location dialogue. &lt;/li&gt;    &lt;li&gt;A new Web Site project will then be shown in Visual Studio. Locate the Solution Explorer: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_2.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;(If the Solution Explorer is not displayed press Ctrl + S + W)&lt;/em&gt;&lt;/p&gt;  &lt;h4&gt;The Database...&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Now we will create a new SQL database to store out data. Right click the App_Data folder (&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="14" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_3.png" width="69" border="0" /&gt;&lt;/a&gt; ) folder and select 'Add New Item...' &lt;/li&gt;    &lt;li&gt;Select 'SQL Database' and give your database a name. &lt;/li&gt;    &lt;li&gt;Locate the 'Server Explorer' pane, select your database and right click Tables and select 'Add New Table' &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="226" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_4.png" width="289" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;(If the Server Explorer is not displayed press Ctrl + S + L)&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the centre pane create two columns called Name and Phone, set their Data Types to 'varchar(50)' and uncheck the 'Allow Nulls' box in the Name column. &lt;/li&gt;    &lt;li&gt;Hit Ctrl + S and give the table a name. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We now have our database ready to use so its time to link it to our web app and build a simple frontend.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Go back to the Solution Explorer and right click your project and select 'Add New Item...' &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="178" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_5.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Now select Dataset and give it a name. (&lt;em&gt;If you get a warning simply click OK and the appropriate folder structure will be created&lt;/em&gt;) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You will now get a wizard pop up which will walk you through the creation of your Dataset.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the first window select your database and click next, give the 'Connection String' a name and select Use SQL statements &lt;/li&gt;    &lt;li&gt;At the next step select the 'Query Builder...' button, select your table and click close. &lt;/li&gt;    &lt;li&gt;Click *(All Columns) and OK. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_14.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="85" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_6.png" width="157" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;In the wizard click Finish &lt;/li&gt;    &lt;li&gt;Click on the query section and click Add &amp;gt; Query... &lt;/li&gt;    &lt;li&gt;In the wizard select Use SQL statements, Next, Insert, Finish. &lt;/li&gt; &lt;/ul&gt;  &lt;h4&gt;The frontend...&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;In the Solution Explorer double click Default.aspx and when it loads click on the 'Design' tab &lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_16.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="21" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_7.png" width="67" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;At the bottom of the Server Explorer click 'Toolbox and then drag and drop three textboxes and two buttons onto the page: &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_18.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="74" alt="image" src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/image_thumb_8.png" width="292" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Change the name of each control in the Properties pane. &lt;/li&gt;    &lt;li&gt;Now double click the top button to create the click event and access the code. &lt;/li&gt;    &lt;li&gt;Copy and paste the below code into your click even for the search button (please note this code may need tweaking depending on the naming conventions you've used) &lt;/li&gt; &lt;/ul&gt;  &lt;div&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;         DataSet1.addressBookDataTable addresses = addressAdapter.GetData();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataSet1.addressBookRow addressRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; addresses)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;             Response.Write(addressRow.Name + &lt;span style="color: #006080"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + addressRow.Phone);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;         }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Once you've got your code working and everything compiles we have a way to retrieve all the data from the database and display it. The code can be modified slightly to display only results matching what was entered in the search box with the addition of an if statement:&lt;/p&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt;         DataSet1.addressBookDataTable addresses = addressAdapter.GetData();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt;         &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   4:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DataSet1.addressBookRow addressRow &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; addresses)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   5:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (searchBox.Text == addressRow.Name)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   7:&lt;/span&gt;             Response.Write(addressRow.Name + &lt;span style="color: #006080"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + addressRow.Phone);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   8:&lt;/span&gt;         }&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is the quickest way to implement search functionality for this example but it would be much more elegant to construct a SQL query based on the search term to avoid iterating over all data in the table.&lt;/p&gt;

&lt;p&gt;Now we have our database and means of getting data out implemented it just leaves the small task of implementing the ability to put some data in!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;First go back to the Solution Explorer and open the Dataset then right click the Table Adapter and select Add &amp;gt; Query... &lt;/li&gt;

  &lt;li&gt;Select 'Use SQL statements' &amp;gt; Next &amp;gt; Insert &amp;gt; Next&amp;gt; Finish &lt;/li&gt;

  &lt;li&gt;Go back to Default.aspx and double click the second button. &lt;/li&gt;

  &lt;li&gt;Copy in the below code - again it may need tweaking. &lt;/li&gt;
&lt;/ul&gt;

&lt;div&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   1:&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter addressAdapter = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DataSet1TableAdapters.addressBookTableAdapter();&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   2:&lt;/span&gt; addressAdapter.InsertQuery(nameBox.Text,phoneBox.Text);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #606060"&gt;   3:&lt;/span&gt; Response.Write(nameBox.Text + &lt;span style="color: #006080"&gt;&amp;quot; and &amp;quot;&lt;/span&gt; + phoneBox.Text + &lt;span style="color: #006080"&gt;&amp;quot; written to database!&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you hit F5 it will compile and run and you should be able insert data and then search it.&lt;/p&gt;

&lt;p&gt;If you get stuck check out the below video of me building the application from start to finish.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:62fc8d62-8dd8-4911-9789-49268d7f2aa5" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; width: 325px; padding-top: 0px"&gt;&lt;div id="a8458fb8-a624-4f9a-9c05-779f856764c8" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=fe09a70b-0a49-44b4-982c-c35ec74e0db6&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/edunhill/WindowsLiveWriter/IntroductiontoWebDe.NETSQLWebApplication_AADF/videoff23c2568145_1.jpg" galleryimg="no" onload="var downlevelDiv = document.getElementById('a8458fb8-a624-4f9a-9c05-779f856764c8'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;embed src=\&amp;quot;http://images.video.msn.com/flash/soapbox1_1.swf\&amp;quot; quality=\&amp;quot;high\&amp;quot; width=\&amp;quot;325\&amp;quot; height=\&amp;quot;273\&amp;quot; wmode=\&amp;quot;transparent\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; pluginspage=\&amp;quot;http://macromedia.com/go/getflashplayer\&amp;quot; flashvars=\&amp;quot;c=v&amp;amp;v=fe09a70b-0a49-44b4-982c-c35ec74e0db6&amp;amp;from=writer\&amp;quot; &amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4&gt;Next Month...&lt;/h4&gt;

&lt;p&gt;We will be looking at building a &lt;a href="http://www.silverlight.net" target="_blank"&gt;Silverlight&lt;/a&gt; front end for our address book database.&lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:231cb870-717e-47ac-a8c3-f6e8a289bf2e" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL" rel="tag"&gt;SQL&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Studentzine" rel="tag"&gt;Studentzine&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8409348" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/edunhill/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Software/default.aspx">Software</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Studentzine+Articles/default.aspx">Studentzine Articles</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Student/default.aspx">Student</category><category domain="http://blogs.msdn.com/edunhill/archive/tags/Teaching/default.aspx">Teaching</category></item></channel></rss>