<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-8109338</atom:id><lastBuildDate>Mon, 14 Jul 2008 14:09:14 +0000</lastBuildDate><title>C#, .Net Framework</title><description/><link>http://www.kinlan.co.uk/</link><managingEditor>noreply@blogger.com (Paul Kinlan)</managingEditor><generator>Blogger</generator><openSearch:totalResults>452</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-392238863958976180</guid><pubDate>Fri, 04 Apr 2008 22:22:00 +0000</pubDate><atom:updated>2008-04-04T22:22:57.795Z</atom:updated><title>Moving Blog</title><description>&lt;p&gt;I have been using Blogger for many years now on my own server. It has got to the point where I don't find the features of blogger fit in with my needs as a blogging platform so I am moving to Wordpress.&lt;/p&gt; &lt;p&gt;I am keeping all the content here on this site and I may still update it from now and then.&lt;/p&gt; &lt;p&gt;The new blog will still be more broadly focused against all aspects of the development of software not just c#.&amp;nbsp; The new blog can be found at the following URL: &lt;a href="http://www.kinlan.co.uk/blog/"&gt;http://www.kinlan.co.uk/blog/&lt;/a&gt;&lt;/p&gt;  </description><link>http://www.kinlan.co.uk/2008/04/moving-blog.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-5228675587655081227</guid><pubDate>Wed, 02 Apr 2008 20:23:00 +0000</pubDate><atom:updated>2008-04-02T20:39:45.482Z</atom:updated><title>DSL Tools Talk</title><description>&lt;p&gt;On the 17th of April I will be doing a talk at the Liverpool Users of .Net User group about Domain Specific Language Tools and T4 templates.&lt;/p&gt; &lt;p&gt;The general flow of the talk will be:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;A brief overview of Domain Specific Languages.&lt;/li&gt; &lt;li&gt;What are the Microsoft DSL Tools and examples of toolkits in use&lt;/li&gt; &lt;ol&gt; &lt;li&gt;What the Microsoft DSL Tools are not&lt;/li&gt;&lt;/ol&gt; &lt;li&gt;Where they can be used and how they can help developers and end-users.&lt;/li&gt; &lt;li&gt;And a step-by-step guide of the creation of a DSL Tool (hopefully this can be workshop based).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;If you would like to attend it is being held at AIMES (&lt;a title="http://upcoming.yahoo.com/venue/123846/" href="http://upcoming.yahoo.com/venue/123846/"&gt;http://upcoming.yahoo.com/venue/123846/&lt;/a&gt;) the event information can be found on upcomming: &lt;a title="http://upcoming.yahoo.com/event/454169/" href="http://upcoming.yahoo.com/event/454169/"&gt;http://upcoming.yahoo.com/event/454169/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I will make the slides available if anyone wants to look at them.&amp;nbsp; All I have to do is work out what to say!&lt;/p&gt; &lt;p&gt;If you know of any good tools implemented using the DSL Toolkit, let me know and I will include them in the talk.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c78a4dd3-8fa4-49a6-9d9f-f03b6bd3fee2" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/DSL" rel="tag"&gt;DSL&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/T4" rel="tag"&gt;T4&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/DSD" rel="tag"&gt;DSD&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/DSL%20Tools" rel="tag"&gt;DSL Tools&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/DSLTools" rel="tag"&gt;DSLTools&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/luodn" rel="tag"&gt;luodn&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/04/dsl-tools-talk.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-2156483270098784568</guid><pubDate>Thu, 27 Mar 2008 22:41:00 +0000</pubDate><atom:updated>2008-03-27T22:41:26.547Z</atom:updated><title>Topicala Business Search</title><description>&lt;p&gt;I am just about to release some Business Listing search software.&amp;nbsp; It is called Topicala Business (&lt;a href="http://www.topicala.com/business/"&gt;http://www.topicala.com/business/&lt;/a&gt;). If you are the owner of a UK business you have to opportunity to claim your listing and add a description of your line of business, a list of services you offer and contact information such as a URL, Address and telephone numbers for free.&lt;/p&gt; &lt;p&gt;Topicala Business is Unique in that it also searches the web for you so that you can find out what your customers and competitors are saying about your business.&lt;/p&gt; &lt;p&gt;If you know your company number you can visit your page by typing in the follow www.topicala.com/business/{companyNumber}.&amp;nbsp; Alternatively, you can perform search on the business name from either the main page (http://www.topicala.com/business/ ) or by using a direct query string request. For example, Topicala Ltd can be found using the URL &lt;a href="http://www.topicala.com/business/topicala"&gt;http://www.topicala.com/business/topicala&lt;/a&gt; or &lt;a title="http://www.topicala.com/business/06512461" href="http://www.topicala.com/business/06512461"&gt;http://www.topicala.com/business/06512461&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The information is pulled from Companies House (&lt;a href="http://www.companies-house.gov.uk"&gt;http://www.companies-house.gov.uk&lt;/a&gt;) and is licenced under Crown Copyright.&lt;/p&gt; &lt;p&gt;I am still in the process of loading business information but there are already 169106 companies listed.&amp;nbsp; Granted, only the registered addresses are available.&amp;nbsp; But as more companies use the site, the more information that will be available.&lt;/p&gt; &lt;p&gt;Anyway, give it a try, claim your business and edit your listings so that potential customers can find your business.&amp;nbsp; All the Business Listings are submitted to Google, so you can promote your listings how you like to give your company information a boost on the search engines.&lt;/p&gt; &lt;p&gt;I will be adding more features as I go, but I am very interested in any comments you have or any features you would like to see.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:20182c26-0194-4f1c-9046-3042c078619d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Topicala" rel="tag"&gt;Topicala&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Business" rel="tag"&gt;Business&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Yell" rel="tag"&gt;Yell&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Yellow%20Pages" rel="tag"&gt;Yellow Pages&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Business%20Listings" rel="tag"&gt;Business Listings&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/03/topicala-business-search.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-584266751941643973</guid><pubDate>Wed, 26 Mar 2008 22:22:00 +0000</pubDate><atom:updated>2008-03-26T22:22:59.428Z</atom:updated><title>Twitter</title><description>&lt;p&gt;I am now on twitter.&lt;/p&gt; &lt;p&gt;Twit me. My username is PaulKinlan &lt;a href="http://www.twitter.com/PaulKinlan"&gt;http://www.twitter.com/PaulKinlan&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:76a8ec8b-5637-4934-853b-531c03977653" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Twitter" rel="tag"&gt;Twitter&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Twit" rel="tag"&gt;Twit&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/PaulKinlan" rel="tag"&gt;PaulKinlan&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/03/twitter.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-5357700722565667591</guid><pubDate>Wed, 26 Mar 2008 21:42:00 +0000</pubDate><atom:updated>2008-03-26T21:42:25.879Z</atom:updated><title>Liverpool .Net User Group</title><description>&lt;p&gt;A few .Net developers have gotten together in Liverpool to form a User Group where we can discuss everything .Net.&lt;/p&gt; &lt;p&gt;We have a web page with a rather snappy URL (&lt;a title="http://liverpool.usersof.net/" href="http://www.usersof.net/"&gt;http://www.usersof.net/&lt;/a&gt;), so if you are in the area and are interested in .Net why not join the Google group &lt;a title="http://groups.google.co.uk/group/liverpoolusersofdotnet" href="http://groups.google.co.uk/group/liverpoolusersofdotnet"&gt;http://groups.google.co.uk/group/liverpoolusersofdotnet&lt;/a&gt; and come to meetings if you want(The next one is April the 17th 2008 - &lt;a title="http://upcoming.yahoo.com/event/454169/" href="http://upcoming.yahoo.com/event/454169/"&gt;http://upcoming.yahoo.com/event/454169/&lt;/a&gt;).&amp;nbsp; The more the merrier.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:336569b4-1e01-45a8-a53a-119927fbe78d" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/luodn" rel="tag"&gt;luodn&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Liverpool" rel="tag"&gt;Liverpool&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/.Net" rel="tag"&gt;.Net&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Usergroup" rel="tag"&gt;Usergroup&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/mvc" rel="tag"&gt;mvc&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/dsl" rel="tag"&gt;dsl&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/03/liverpool-net-user-group.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-3386921502838775268</guid><pubDate>Sat, 23 Feb 2008 14:44:00 +0000</pubDate><atom:updated>2008-02-23T14:44:09.444Z</atom:updated><title>Know your Privacy, an Application on Facebook</title><description>&lt;p&gt;I have created the "Know your Privacy" application on Facebook.&lt;/p&gt; &lt;p&gt;This application is designed to give you insight into how the data in your profile is available to Third Party applications. &lt;p&gt;Key pieces of your Facebook profile are available to external applications, this information could be used for purposes that harm you. &lt;p&gt;The application can be found at &lt;a title="http://apps.facebook.com/knowyourprivacy/" href="http://apps.facebook.com/knowyourprivacy/"&gt;http://apps.facebook.com/knowyourprivacy/&lt;/a&gt; &lt;p&gt;Please let me know what you think of the application and if it helps you understand the privacy aspects of letting 3rd Party applications into your Facebook profile. &lt;h4&gt;Disclaimer&lt;/h4&gt; &lt;p&gt;This application is for your informational purposes only. This application in no way suggests that the applications that you have installed in your profile are in anyway using your data for purposes other than those set out by their privacy statements. &lt;p&gt;The advice given by this application is &lt;b&gt;common sense&lt;/b&gt; and in no way represents the opinions of my employer's past, present and future. The information is not guaranteed to be correct, and the author cannot be held responsible. If you require accurate information contact your local authorities. Informational Links are at the end of this application. &lt;p&gt;If you believe you have been a victim of identity theft contact the police and your banks &lt;b&gt;immediately&lt;/b&gt;. &lt;h3&gt;Identity Theft Information&lt;/h3&gt; &lt;p&gt;If you would like more information about Identity theft, please contact your local authorities, police, credit reference agencies and banks. &lt;h4&gt;Links&lt;/h4&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.identity-theft.org.uk/"&gt;Home Office - Identity Theft&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.identity-theft.org.uk/who-can-help.html"&gt;Home office - Who can help&lt;/a&gt; &lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Identity_theft"&gt;Wikipedia - Information about Identity theft&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.cifas.org.uk/default.asp?edit_id=561-56"&gt;CIFAS&lt;/a&gt; &lt;li&gt;&lt;a href="http://apps.facebook.com/knowyourprivacy/www.experian.com/identity_fraud/fraud.html"&gt;Experian&lt;/a&gt; &lt;li&gt;&lt;a href="http://apps.facebook.com/knowyourprivacy/www.equifax.com/credit-information/identity-theft"&gt;Equifax&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.callcredit.co.uk/consumer/hot-topics/identity-theft"&gt;Call Credit&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b9a9bd58-665a-43a3-83e0-0df8be63af5a" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/fraud" rel="tag"&gt;fraud&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/privacy" rel="tag"&gt;privacy&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/facebook" rel="tag"&gt;facebook&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/facebook%20application" rel="tag"&gt;facebook application&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/02/know-your-privacy-application-on.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-2593333375236145200</guid><pubDate>Sat, 23 Feb 2008 13:27:00 +0000</pubDate><atom:updated>2008-02-23T13:27:51.306Z</atom:updated><title>Topicala on Facebook</title><description>&lt;p&gt;I have added the Topicala (&lt;a href="http://www.topicala.com/"&gt;www.topicala.com/&lt;/a&gt;) application in to Facebook (&lt;a href="http://www.facebook.com"&gt;www.facebook.com&lt;/a&gt;).&amp;nbsp; &lt;/p&gt; &lt;p&gt;If you add this application you will be able to search the Internet with directly leaving Facebook.&lt;/p&gt; &lt;p&gt;The application can be found at &lt;a title="Topicala" href="http://apps.facebook.com/topicala/ "&gt;http://apps.facebook.com/topicala/ &lt;/a&gt;&lt;/p&gt; &lt;p&gt;The application was really simple to develop and doesn't require that you pass any personal details to Topicala.&lt;/p&gt; &lt;p&gt;Let me know what you think.&amp;nbsp; I appreciate all feedback.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f65873d6-ee8f-44c4-a48a-89e839eabc54" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Facebook" rel="tag"&gt;Facebook&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Facebook%20Application" rel="tag"&gt;Facebook Application&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Topicala" rel="tag"&gt;Topicala&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Application" rel="tag"&gt;Application&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/API" rel="tag"&gt;API&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2008/02/topicala-on-facebook.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-1714036132809532123</guid><pubDate>Tue, 18 Dec 2007 08:14:00 +0000</pubDate><atom:updated>2007-12-18T08:14:41.877Z</atom:updated><title>IDataRecord Fields to Dictionary Extension Method</title><description>&lt;p&gt;I have never been a fan of directly passing IDataRecords, or IDataReaders for that matter, about the place to get simple field values out.&lt;/p&gt; &lt;p&gt;Therefore, with the introduction of C# 3.0 and Extension Methods, I thought it would be cool to write (and share) a simple implementation of some code that I use to convert the IDataRecord Field data to an Dictionary&amp;lt;string, object&amp;gt; object.&lt;/p&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; Kinlan.Data.Extensions&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; DataExtensions&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;gt; FieldsToDictionary(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt; IDataRecord dataRecord)&lt;br /&gt;        {&lt;br /&gt;            Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;gt; fieldBag = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&amp;gt;(dataRecord.FieldCount);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dataRecord != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;br /&gt;            {               &lt;br /&gt;                &lt;span style="color: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt; fieldIdx = 0; fieldIdx &amp;lt; dataRecord.FieldCount; fieldIdx++)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; name = dataRecord.GetName(fieldIdx);&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; &lt;span style="color: #0000ff"&gt;value&lt;/span&gt; = dataRecord[fieldIdx];&lt;br /&gt;                    fieldBag.Add(name, &lt;span style="color: #0000ff"&gt;value&lt;/span&gt;);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; fieldBag;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;It is quite simple really and nothing too complex.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;A place where it can be used it Windows Workflow.&amp;nbsp; If you are injecting parameters into your Workflow instance you need to pass a Dictionary&amp;lt;string, object&amp;gt; in, well now you can (if you desired) simply convert a IDataReader/IDataRecord object into with the following simple piece of code:&lt;/p&gt;&lt;pre&gt;WorkflowInstance instance = runtime.CreateWorkflow(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(_WorkflowClass_), dataReaderInstance.FieldsToDictionary());&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;This code should be used sparingly, for instance if you wanted a very high performance access to the field data, you might as well stay on the IDataRecord.&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8c7ab40a-da6d-4ede-a3e5-962c673fbbd0" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Extension%20Method" rel="tag"&gt;Extension Method&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/ExtensionMethod" rel="tag"&gt;ExtensionMethod&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/C#" rel="tag"&gt;C#&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/C#3.0" rel="tag"&gt;C#3.0&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/IDataReader" rel="tag"&gt;IDataReader&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/IDataRecord" rel="tag"&gt;IDataRecord&lt;/a&gt;&lt;/div&gt;  </description><link>http://www.kinlan.co.uk/2007/12/idatarecord-fields-to-dictionary.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7474558437188879595</guid><pubDate>Sat, 08 Sep 2007 14:02:00 +0000</pubDate><atom:updated>2007-09-10T10:34:52.684Z</atom:updated><title>Microformat.net</title><description>&lt;p&gt;I would like to take this opportunity to announce that I have&amp;nbsp;created a usable [although beta] release of a generic Microformat parser for .Net.&amp;nbsp; I don't know of any other frameworks that easily allow you to find Microformats in an html/XML stream that are specifically built for .Net, so I believe that this project is a first (and hopefully a de-facto choice in time to come).&lt;/p&gt; &lt;p&gt;The project can be found on Codeplex at &lt;a href="http://www.codeplex.com/microformat"&gt;http://www.codeplex.com/microformat&lt;/a&gt;.&amp;nbsp; The current release is Iteration 3.  &lt;p&gt;The parser is stream based and uses an application&amp;nbsp;configuration (see below for an example) to define the how the parser should parse the html/XML stream.&amp;nbsp; This flexible configuration means that if a spec changes for a Microformat or a new one is introduced then no code needs to be changed in the framework to let users of the framework see the changed data. &lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;configuration&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;configSections&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;section&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;MicroformatsSection&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Microformats.ConfigurationSections.MicroformatConfigSection, Microformat.net&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;configSections&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;MicroformatsSection&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformats&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;rel-tag&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;rootType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;rel&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;root&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;tag&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.Uri&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; /&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;hCard&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;rootType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;root&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;vcard&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Fields&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;fn&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;url&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.Uri&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;email&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.Uri&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;adr&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Microformat&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Fields&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;adr&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;rootType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;root&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;adr&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Fields&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;post-office-box&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;extended-address&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;street-address&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;locality&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;region&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;postal-code&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;          &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Field&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;name&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;country-name&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;dataType&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;System.String&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;plurality&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;Singular&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;/&amp;gt;&lt;br /&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Fields&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;      &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformat&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;Microformats&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;MicroformatsSection&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The above configuration says that the following Microformats are to be searched for: rel-tag, hCard and adr.&amp;nbsp; Each Microformat configuration can also be nested (see the hCard spec that allows an adr to be nested inside itself).&amp;nbsp; This saves on duplicating configuration information.&amp;nbsp; (Unfortunately a circular reference in the configuration can be defined and plurality of elements is not&amp;nbsp;implemented.&amp;nbsp; This will be fixed soon).&amp;nbsp; Currently in this configuration not all of the hCard spec is defined (this was done for simplicity of me showing you how the config works), obviously this means that any parts of a Microformat that you are not interested in you won't see in the output of the framework. &lt;br /&gt;&lt;p&gt;The code that follows shows how easy it is to use this framework:&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;TextReader&lt;/span&gt; ms = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringReader&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;@"&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div class=""vcard author""&amp;gt;&lt;br /&gt; &amp;lt;a class=""url fn"" href=""http://www.kinlan.co.uk/""&amp;gt;Paul Kinlan&amp;lt;/a&amp;gt;&lt;br /&gt; &amp;lt;a class=""email"" href=""mailto:paul.kinlan@gmail.com""&amp;gt;paul.kinlan@gmail.com&amp;lt;/a&amp;gt;&lt;br /&gt; &amp;lt;div class=""adr""&amp;gt;&lt;br /&gt;  &amp;lt;span class=""locality""&amp;gt;Liverpool&amp;lt;/span&amp;gt;,&amp;lt;span class=""region""&amp;gt;Merseyside&amp;lt;/span&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&amp;lt;a href=""http://test.com/test"" rel=""tag""&amp;gt;Test Tag&amp;lt;/a&amp;gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;"&lt;/span&gt;))&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; (Microformats.Readers.&lt;span style="color: rgb(43,145,175)"&gt;MicroformatReader&lt;/span&gt; mr = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; Microformats.Readers.&lt;span style="color: rgb(43,145,175)"&gt;MicroformatReader&lt;/span&gt;(ms))&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: rgb(43,145,175)"&gt;Microformat&lt;/span&gt; m = &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;while&lt;/span&gt;(( m = mr.Read()) != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.Out.Write(&lt;span style="color: rgb(163,21,21)"&gt;"Found Microformat: "&lt;/span&gt; + m.Name + &lt;span style="color: rgb(163,21,21)"&gt;". Machine Value:"&lt;/span&gt; + m.MachineValue + &lt;span style="color: rgb(163,21,21)"&gt;"\n"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                        &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;IField&lt;/span&gt; f &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; m.Fields)&lt;br /&gt;                        {&lt;br /&gt;                            &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.Out.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"\t"&lt;/span&gt; + f.Name + &lt;span style="color: rgb(163,21,21)"&gt;": "&lt;/span&gt; + f.MachineValue);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    &lt;br /&gt;                }&lt;br /&gt;            }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;The first line, simply converts makes a TextReader object that can be used to pass into the MicroformatReader object.&amp;nbsp; Once the stream has been presented to the framework, then it is as simple as calling mr.Read to iterate to across all the valid Microformats in the document.&amp;nbsp; The Read() method returns fully constructed Microformat objects that can be&amp;nbsp;examined and used directly in your programs.&lt;br /&gt;&lt;p&gt;I still have a lot of work to do, however it appears (to me at least) to be quite flexible.&amp;nbsp; I would greatly appreciate any comments and feedback and if you use the framework I would love to hear about it.&amp;nbsp; If anyone is interested in joining the project let me know. &lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:722ba1f4-c674-4af5-8c23-08c66a8e0340" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/c#" rel="tag"&gt;c#&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/c#.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/microformat" rel="tag"&gt;microformat&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/microformat.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/microformats" rel="tag"&gt;microformats&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/microformats.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/.net" rel="tag"&gt;.net&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/.net.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/framework" rel="tag"&gt;framework&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/framework.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/api" rel="tag"&gt;api&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/api.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/codeplex" rel="tag"&gt;codeplex&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/codeplex.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/09/microformatnet.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7283081771782603802</guid><pubDate>Sun, 26 Aug 2007 13:36:00 +0000</pubDate><atom:updated>2007-09-08T14:27:54.414Z</atom:updated><title>Technorati Claim</title><description>&lt;a href="http://technorati.com/claim/hcewwuijf" rel="me"&gt;Technorati Profile&lt;/a&gt;</description><link>http://www.kinlan.co.uk/2007/08/technorati-claim.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-2001069576511209405</guid><pubDate>Sat, 25 Aug 2007 14:40:00 +0000</pubDate><atom:updated>2007-08-25T14:41:31.769Z</atom:updated><title>Topicala People! and Topicala Popular! BETA</title><description>&lt;p&gt;I am pleased to announce that I have added some extra features in to my search engine&amp;nbsp;&lt;a href="http://www.topicala.com"&gt;www.topicala.com&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The two services are currently in Beta, and I encourage everyone to join in.&lt;/p&gt; &lt;p&gt;Firstly, &lt;a title="Topialca Popular" href="http://www.topicala.com/popular/"&gt;Topicala Popular!&lt;/a&gt;&amp;nbsp;is designed to help you discover what is popular on the Internet right now. Its kind of like &lt;a href="http://www.digg.com"&gt;www.digg.com&lt;/a&gt; and &lt;a href="http://www.delicious.com"&gt;www.delicious.com&lt;/a&gt; but slightly different.&amp;nbsp; To be listed on Topicala Popular, we need to able to track some of the visitors to your site, we do this by asking you to include an image (&lt;strong&gt;&amp;lt;img src="http://www.topicala.com/imageRefer/YOURSITEURL/topicala.png"&amp;gt;&lt;/strong&gt;)&amp;nbsp;on your site that is hosted by Topicala, then when ever anyone downloads this image we can tell that it came from your site.&lt;/p&gt; &lt;p&gt;Secondly, &lt;a title="People Search Engine" href="http://www.topicala.com/people"&gt;Topicala People!&lt;/a&gt; is designed to help you find people on the Internet. It acheives this by looking at information on your page stored in Microformats, more specifically hCards.&lt;/p&gt; &lt;p&gt;There are several ways that you can get your information on to Topicala, all of them are automatic so you have to do as little as possible.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Wrap your information and anyone you link to in the hCard format (See &lt;a title="http://microformats.org/wiki/hcard-authoring" href="http://microformats.org/wiki/hcard-authoring"&gt;hCard Authoring&lt;/a&gt;). You can easily create hCard contact information by using the &lt;a title="http://microformats.org/code/hcard/creator" href="http://microformats.org/code/hcard/creator"&gt;hCard Creator&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Either:&lt;/li&gt; &lt;ol&gt; &lt;li&gt;Include the Topicala image&amp;nbsp; from our servers (paste the following HTML into your page: &lt;strong&gt;&amp;lt;img src="http://www.topicala.com/imageRefer/YOURSITEURL/topicala.png"&amp;gt;&lt;/strong&gt;&amp;nbsp;- replacing YOURSITEURL with your domain name (this is optional, you can just use &lt;strong&gt;&amp;lt;img src="http://www.topicala.com/imageRefer/topicala.png"&amp;gt;&lt;/strong&gt;)&lt;/li&gt; &lt;li&gt;Or Ping our servers at the following URL: &lt;a href="http://www.topicala.com/ping"&gt;http://www.topicala.com/ping&lt;/a&gt; using your blogging software&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;Over the coming days these results will be integrated directly into Topicala so that when you search for a topic, you will find all the people associated with what you are searching for.&lt;/p&gt; &lt;p&gt;Topicala People will be great for indexing company information too, it will be like an automatic Yellow Pages that is not controlled by Topicala, but rather by you the user.&lt;/p&gt; &lt;p&gt;Anyway, I encourage you to get your sites on to Topicala and use the site and let me know what you like, dislike and would like to see changed.&lt;/p&gt; &lt;p&gt;Cheers!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:fdd5b44f-5a16-4ecf-b0fa-d48679ebb5f9" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Topicala" rel="tag"&gt;Topicala&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Topicala.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Topicala%20People" rel="tag"&gt;Topicala People&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Topicala%20People.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Topicala%20Popular" rel="tag"&gt;Topicala Popular&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Topicala%20Popular.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/hCard" rel="tag"&gt;hCard&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/hCard.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Microformat" rel="tag"&gt;Microformat&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Microformat.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Microformats" rel="tag"&gt;Microformats&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Microformats.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/ping" rel="tag"&gt;ping&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/ping.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/digg" rel="tag"&gt;digg&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/digg.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/delicious" rel="tag"&gt;delicious&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/delicious.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/search%20engine" rel="tag"&gt;search engine&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/search%20engine.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/People%20Search" rel="tag"&gt;People Search&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/People%20Search.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/08/topicala-people-and-topicala-popular.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-4151191977640026668</guid><pubDate>Sat, 25 Aug 2007 14:11:00 +0000</pubDate><atom:updated>2007-08-25T14:12:14.348Z</atom:updated><title>Topicala Desktop</title><description>&lt;p&gt;I am pleased to announce that the Topicala.com search engine has partnered with Rosetta Software Ltd (UK) to provide Topicala Desktop.&amp;nbsp; Topicala Desktop&amp;nbsp;is an application that allows users to search Topicala from within any application on Microsoft Windows platform by simply selecting the word and pressing CTRL-T (configurable).&lt;/p&gt; &lt;p&gt;Imagine you are reading an email, and you come across a term you wish to look up on the Internet.&amp;nbsp; With Topicala Desktop, simply highlight the text in your email program, and hit the Topicala Desktop hotkey. Internet Explorer will appear automatically with your search results! &lt;p&gt;Topicala Desktop is an extremely handy tool for those who find themselves making frequent Internet searches throughout the day. Journalists and students for example will find Topicala Desktop the ideal tool for getting a large amount of information quickly. &lt;p&gt;The true power and flexibility of Topicala Desktop becomes apparent when you consider that Internet searches can be performed from almost any Windows application. &lt;p&gt;Perhaps you are reading a legal agreement in &lt;b&gt;Microsoft Word&lt;/b&gt;, and you come across an unknown word or piece of terminology. Hit the Topicala Desktop hotkey, and you can be enlightened immediately.  &lt;p&gt;Topicala Desktop search is created by &lt;a href="http://rosettasoftware.com/"&gt;Rosetta Software Ltd&lt;/a&gt; (UK) and provided free of charge to the users of Topicala. It can be &lt;a href="http://rosettasoftware.com/downloads/TopicalaDesktop.msi"&gt;downloaded&lt;/a&gt; and installed in minutes. &lt;p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:48e91c26-ff1a-4979-b886-2c08d463689b" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Topicala" rel="tag"&gt;Topicala&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Topicala.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Rosetta%20Software" rel="tag"&gt;Rosetta Software&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Rosetta%20Software.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Search%20Appliance" rel="tag"&gt;Search Appliance&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Search%20Appliance.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Instant%20Search" rel="tag"&gt;Instant Search&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Instant%20Search.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Desktop%20Search" rel="tag"&gt;Desktop Search&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Desktop%20Search.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;&lt;/p&gt;</description><link>http://www.kinlan.co.uk/2007/08/topicala-popular-and-people-open-beta.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-764321905437659093</guid><pubDate>Sat, 25 Aug 2007 13:36:00 +0000</pubDate><atom:updated>2007-08-25T14:55:31.277Z</atom:updated><title>Review: Microsoft XNA Unleashed. By Chad Carter</title><description>&lt;p&gt;&lt;strong&gt;Note: I received a copy of this book to review from pearsoned.com&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.kinlan.co.uk/images/ReviewMicrosoftXNAUnleashed.ByChadCarter_C4A7/51tSOH5BuQL._BO2204203200_PIsitbdp500arrowTopRight4564_OU01_AA240_SH20_1.jpg" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" alt="51tSOH5BuQL._BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_[1]" src="http://www.kinlan.co.uk/images/ReviewMicrosoftXNAUnleashed.ByChadCarter_C4A7/51tSOH5BuQL._BO2204203200_PIsitbdp500arrowTopRight4564_OU01_AA240_SH20_1_thumb.jpg" width="240" align="left" border="0"&gt;&lt;/a&gt;&amp;nbsp;XNA is Microsoft unified gaming development platform for Windows and XBOX 360.&amp;nbsp; It was released in December 2006 and finally allowed hobbyist developers to program games using c# on the Xbox 360.&amp;nbsp; The book is aimed at getting people started on the XNA by showing them the basic concepts of &lt;/p&gt; &lt;p&gt;It took me a little while to read this book, only because I was busy all the time and never got around to reading it.&amp;nbsp; However, I sat down one evening an went through the whole book.&lt;/p&gt; &lt;p&gt;From the outset this book focuses on teaching you to at least think about the performance of your application (there is a whole chapter, most of which seemed to be taken up by pointless code).&amp;nbsp; To be honest it annoyed me a little bit when I was reading it.&amp;nbsp; However, it does prove a point and it stuck with me for the rest of the book.&lt;/p&gt; &lt;p&gt;I am a big fan of componentisation when it comes to programming (which is one of the key concepts of the XNA), I was expecting this book not to cover any of this.&amp;nbsp; Luckily, this book is strong in this area, not the for precise details of the API strong, but for pointing out the benefits and sticking to the idea of Game Components and Services.&amp;nbsp; There are several components that would-be game developers could copy straight from the book and use in their own games.&lt;/p&gt; &lt;p&gt;The whole book is at a sufficiently high level for nearly any level of programmer to get started using the XNA with.&lt;/p&gt; &lt;p&gt;Before I got this book I was expecting it just to be about the graphics side of the XNA, however I was pleasantly surprised that it is really about how to make a complete game using the XNA.&amp;nbsp; Which is a good thing really, because like myself (and acknowledged at the start of the book) many people who get it to programming, it&amp;nbsp;is because they see a game and wonder how it works.&lt;/p&gt; &lt;p&gt;&lt;em&gt;I remember my father trying to get me into programming as a child and I never really understood it nor was I interested by it.&amp;nbsp; It wasn't until I played Street Fighter II in an arcade on the River Dee in Chester that I had an epiphany, I worked out what programming meant and how the movements on the Joystick translated to Ryu on the screen throwing fireballs&lt;/em&gt;&lt;/p&gt; &lt;p&gt;The quantity of pictures in this book describing the output is minute, I would have loved to see more pictures when describing the 2d blending effects and the HLSL examples.&amp;nbsp; The quality of the pictures are very poor too, at a minimum they should have been in colour.&lt;/p&gt; &lt;p&gt;There are several non-graphics related chapters: Physics and AI for example.&amp;nbsp; I expected to not like the physics chapter, however, it is short, too the point and gets everything across that you would need to create basic kinetic effects in your games.&amp;nbsp; I really liked it; The AI chapter was too short and only really describes how to follow a game character, this should have been removed or extended because as it stands I thought it was one of the&amp;nbsp;books weakest sections.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Overall, I quite enjoyed the book. I was fairly proficient with the 2d programming aspects of the XNA and the coverage was quite good, it even covered a parallax engine which suspiciously looked like my Codeplex XNA project :) &lt;/p&gt; &lt;p&gt;I really liked his vertex shader and pixel shader introductions and his overview of HLSL (this was one of my weaker areas), however, that is all they are introductions they served me well but a whole book could be devoted to that area.&lt;/p&gt; &lt;p&gt;The structure of this book is quite good too, it starts off simple and gets progressively more advanced.&amp;nbsp; I believe that the structure of the XNA requires you to know about a lot of little things at the same time (the learning curve isn't linear, it is parallel) and&amp;nbsp;when I was reading this book I was coming from knowing a little about the XNA already and I was questioning the author (in my head) "how is he going to explain this concept without X, Y&amp;nbsp;and Z first.&amp;nbsp; Luckily it is handled quite well, with enough information to get the reader by with having to understand too much, then later in the book that X, Y and Z concept is explained in more detail (most of the time :))&lt;/p&gt; &lt;p&gt;I&amp;nbsp;believe, that if the XNA existed&amp;nbsp;when I started programming (about 14 years ago) and I&amp;nbsp;would have found this book&amp;nbsp;to&amp;nbsp;it would have been a great help to get me gently in to games programming.&amp;nbsp; Therefore, I would recommend this book for anyone who has c# experience and wants to start using the XNA to make some cool games.&amp;nbsp; I would not recommend it to people who have no experience using c#, or are already strong at graphics programming.&amp;nbsp; If you have used either Managed DirectX or Direct X I think you would get more benefit from the help file that comes with the XNA.&lt;/p&gt; &lt;p&gt;The timing of this book is a little off, unfortunately Microsoft have just released v2 of the XNA which could make some of this book redundant (for instance, the first chapter is about requiring Visual Studio Express).&amp;nbsp; However, I have not delved into it yet (Chad: Is v2 of Microsoft XNA Unleashed on the horizon? I look forward to it).&lt;/p&gt; &lt;p&gt;Let me know what you thought of the book!&lt;/p&gt; &lt;p&gt;&lt;a title="XNA Unleashed" href="http://www.amazon.com/gp/product/0672329646?ie=UTF8&amp;amp;tag=cnetfra-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0672329646"&gt;Purchase from Amazon.com&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:4b7a251d-a1eb-4d5f-9ea3-1a43a19b6b49" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/XNA" rel="tag"&gt;XNA&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/XNA.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/XNA%20Unleashed" rel="tag"&gt;XNA Unleashed&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/XNA%20Unleashed.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Book" rel="tag"&gt;Book&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Book.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/C#" rel="tag"&gt;C#&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/C#.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Game%20Programming" rel="tag"&gt;Game Programming&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Game%20Programming.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Chad%20Carter" rel="tag"&gt;Chad Carter&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Chad%20Carter.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Review" rel="tag"&gt;Review&lt;/a&gt; [&lt;a href="http://www.topicala.com/opml/Review.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/08/review-microsoft-xna-unleashed-by-chad.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7340895220760875746</guid><pubDate>Tue, 07 Aug 2007 10:11:00 +0000</pubDate><atom:updated>2007-08-07T14:47:43.535Z</atom:updated><title>Looking for some people to help test new features of Topicala</title><description>I am looking for people who have small blogs to help me test some new features on &lt;a href="http://www.topicala.com/"&gt;http://www.topicala.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The software that I am creating is similar to &lt;a href="http://digg.com/"&gt;http://digg.com/&lt;/a&gt;, but different. :) And is intended to help the "little guy" (you and me) get more people visiting our sites.&lt;br /&gt;&lt;br /&gt;The new features aren't complete yet, but a basic page has been created and I am working on it daily.&lt;br /&gt;&lt;br /&gt;So if you are interested, please email me at &lt;a href="mailto:paul.kinlan@gmail.com"&gt;paul.kinlan@gmail.com&lt;/a&gt;, or leave a comment and I will get back to you straight away. I will be also contacting people whose blogs I read to see if they are interested helping the project.&lt;br /&gt;&lt;br /&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Digg"&gt;Digg&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Topicala" rel="tag"&gt;Topicala&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Beta" rel="tag"&gt;Beta&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Bloggers" rel="tag"&gt;Bloggers&lt;/a&gt;</description><link>http://www.kinlan.co.uk/2007/08/looking-for-some-people-to-help-test.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-2184669310370624230</guid><pubDate>Fri, 25 May 2007 09:18:00 +0000</pubDate><atom:updated>2007-05-25T09:33:42.861Z</atom:updated><title>Resharper Live Template for Default Constructor</title><description>I have created a simple Resharper Live Template for saving typing time when you want to create a default constructor.&lt;br /&gt;&lt;br /&gt;The basic templzate is:&lt;br /&gt;&lt;strong&gt;Abbreviation&lt;/strong&gt;: dc&lt;br /&gt;&lt;strong&gt;Description&lt;/strong&gt;: Create a Default Constructor&lt;br /&gt;&lt;strong&gt;Available&lt;/strong&gt;: everywhere&lt;br /&gt;&lt;strong&gt;Template&lt;/strong&gt; &lt;strong&gt;Text&lt;/strong&gt;:&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;public&lt;/span&gt; &lt;span style="color:#cc6600;"&gt;$CLASSNAME$&lt;/span&gt;()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Template Variables&lt;/strong&gt;:&lt;br /&gt;&lt;strong&gt;Name&lt;/strong&gt;:CLASSNAME&lt;br /&gt;&lt;strong&gt;Value&lt;/strong&gt;: Containing type name&lt;br /&gt;&lt;strong&gt;Editable&lt;/strong&gt; Occurence: false&lt;br /&gt;&lt;br /&gt;See the image below as an example:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kinlan.co.uk/uploaded_images/dcTemplate-782778.PNG"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://www.kinlan.co.uk/uploaded_images/dcTemplate-782775.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Topicala Tags:&lt;br /&gt;&lt;a href="http://www.topicala.com/tag/Resharper"&gt;Resharper&lt;/a&gt;, &lt;a href="http://www.topicala.com/tag/Live Templates"&gt;Live Templates&lt;/a&gt;</description><link>http://www.kinlan.co.uk/2007/05/resharper-live-template-for-default.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-2774439963206609318</guid><pubDate>Sat, 03 Mar 2007 20:23:00 +0000</pubDate><atom:updated>2007-03-03T20:23:18.287Z</atom:updated><title>DevWeek Day 3 Review</title><description>&lt;p&gt;Day three was the last day for me (this review is a little late because of my trip back was quite long).&amp;nbsp;&amp;nbsp;Over the week the lectures seemed to be getting progressively more advanced and this day wasn't and exception.&lt;/p&gt; &lt;p&gt;Christian Weyer's first lecture&amp;nbsp;was really really good.&amp;nbsp; His talk was about developing SOA's using the Webservice Software Factory, it was a good demonstration of the fact that at the moment the Webservice Software Factory is not a Software Factory, it is a set of tools that helps the developers start an Service Orientated Application.&amp;nbsp; One of his points about why the Webservice&amp;nbsp;Software Factory is not a software factory just yet is that factory doesn't maintain a model of the SOA, rather it is a Guidance package.&amp;nbsp;&amp;nbsp; I spoke to him about the WSCF (Webservice Contract First Tool) that he made at Thinktecture, he mentioned that it will be Open Source'd soon so that the community can maintain it.&amp;nbsp; This is good because he demonstrated a DSL tool that he had created which integrates into Visual Studio and does maintain a model of the SOA.&lt;/p&gt; &lt;p&gt;Christian Weyer's second lecture was all about integrating WPF, WCF and WF into a single solution, this was a really good lecture because he had created a great sample application (a media library) that developers should be able to learn from.&amp;nbsp; It was quite a cool application, because it demonstrated how Workflow Foundation can be integrated with Webservice's into the Windows Communication Foundation, and then with WCF he demonstrated how to write different data bindings so that you don't have to simply rely on HTTP Webservice.&amp;nbsp; Christian said that they will be releasing this sample soon so that the world can see how cool the integrated technologies are.&lt;/p&gt; &lt;p&gt;Niels Berglund talk on LINQ was good, it wasn't as technical as I would have liked.&amp;nbsp; It&amp;nbsp;was a demonstration of&amp;nbsp;LINQ to SQL and how&amp;nbsp;it provides a strongly-typed access to the database. I did learn in the lecture that "LINQ for SQL" should be translated as "LINQ for SQLServer" and that Microsoft are unlikely to make any other Database providers (This was from the mouth of a Microsoft developer in the audience).&amp;nbsp; I do have reservations about this technology, mainly that you are tightly coupling the database into you application logic.&amp;nbsp; I would much prefer to use the Conceptual Model provided by LINQ to Entities so that I can abstract my Data Model from my Application model of the data.&lt;/p&gt; &lt;p&gt;Jeff Prosise WPF/E talk was another great talk by Jeff,&amp;nbsp; he basically demonstrated WPF/E and how "easy" it is to create rich UI's in the web browser simply by writing XAML.&amp;nbsp; I double quoted "easy" because he pointed out that WPF/E at the moment doesn't have any Input Controls or Data binding in, this means that you will have to create them all by hand yourself.&amp;nbsp; Saying that his sample photo browser was pretty cool.&amp;nbsp; I did notice that the VisualBrush in WPF is not present in WPF/E so things like reflections (like in his demo) have to be hacked in.&amp;nbsp; I asked him if he knew if it was planned to be, however he said it is hard to say because he has only just started to work with the WPF/E team.&amp;nbsp; He also that mentioned that some people in Microsoft are really worried about the upcoming release of Flash (Version 9) because it does very similar declarative mark-up to WPF/E.&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:39e2b0d1-2f33-4608-a479-daccd7676847" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/LINQ" rel="tag"&gt;LINQ&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/LINQ.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/WPF" rel="tag"&gt;WPF&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/WPF.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/WPF/E" rel="tag"&gt;WPF/E&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/WPF/E.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/SOA" rel="tag"&gt;SOA&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/SOA.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Thinktecture" rel="tag"&gt;Thinktecture&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Thinktecture.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Devweek2007" rel="tag"&gt;Devweek2007&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek2007.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Devweek" rel="tag"&gt;Devweek&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;&lt;/p&gt;</description><link>http://www.kinlan.co.uk/2007/03/devweek-day-3-review.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-3589371051480669949</guid><pubDate>Thu, 01 Mar 2007 00:20:00 +0000</pubDate><atom:updated>2007-03-01T00:20:26.177Z</atom:updated><title>DevWeek Day 2</title><description>&lt;p&gt;Niels Berglund's "ADO.Net&amp;nbsp;v.Next and the Entity Framework"&amp;nbsp;was the first lecture of the day, I decided to skip Dino Espistos lecture after I read his slides and decided to go for something that I had not even looked at.&amp;nbsp; I am glad that I did.&amp;nbsp; Niels lecture was brilliant and he showed us some of the things that can be done with ADO.NET v.Next.&amp;nbsp; Especially the abstraction of the DataModel into a more programmer friendly model.&amp;nbsp; What this means is that you query something that is meaningful to you rather than querying the database that might be more databasey than you need.&amp;nbsp; You configure ADO.NET via a series of files which map the Database model to&amp;nbsp;a model that is conceptually similar to&amp;nbsp;the domain you application is in.&amp;nbsp; The example that Niels gave was the AdventureWorks database which is a highly normalized database that can be very hard to query against; with the ADO.NET v.Next framework you can map the multiple tables into a single .Net space view that you can then query (with ADO.Net handling the mapping between your query and the SQL database query).&amp;nbsp; I am probably not explaining it that well, but I don't think LINQ will replace this product, rather ADO.NET v.Next will remove the requirement of encoding the exact database structure into your LINQ queries and ADO.NET v.Next&amp;nbsp;will allow you to query a model that you have defined via the Mapping files.&lt;/p&gt; &lt;p&gt;Kelvin Henney's "Streamlined Object-Oriented Analysis.&amp;nbsp; With UML and Use cases" was a very good lecture, he really knows his stuff.&amp;nbsp; I say that because he could talk for ages and ages about the topic and it all made sense.&amp;nbsp; His basic statement was that analysis shouldn't be that hard, and a lot of the books about Analysis with UML are written by a developer for a developer perspective, and the result is that the writers tend to suggest that the Analysis stage is to basically do the design stage but leave out some of the detail.&amp;nbsp; When in actual fact you should be modeling the system as it is currently, by looking at the systems and decomposing the problem into a resulting model.&amp;nbsp; Models&amp;nbsp;remove the fluff and unrelated information and show you what the problem is in terms that can be&amp;nbsp;solved.&amp;nbsp;&amp;nbsp; Then from there you can set about solving the problem, starting with Use cases that rationalise the solution to the problem and the requirements&amp;nbsp;into discrete packages&amp;nbsp;of functionality and work.&amp;nbsp; He also talked about modeling the interactions of the system from the point of decomposing the information, its relationships with other information&amp;nbsp;and its&amp;nbsp;intended flow through the system that you are creating.&amp;nbsp;There was a lot more to this talk, and it also went into a lot more detail than I could write now.&amp;nbsp; Kelvin, if you are reading this and it sounds rubbish please feel free to correct me.&lt;/p&gt; &lt;p&gt;Ingo Rammer's first lecture that I attended "(Re-)Designing for Scalability and Performance" was packed out, and for good reason.&amp;nbsp; It was a lecture about some of the (Anonymous) consulting experiences that he has had, and the steps he took to improve the scalability his clients applications.&amp;nbsp; I thought this session was really interesting because it touched on some of the design decisions that we all make and how they can cause problems when it comes to scaling the applications that we create.&amp;nbsp; He also gave some practical advice about data Caching, such as caching the data on a small SQL server instance that sits on the same machine as the Web server.&amp;nbsp; I believe he implied that because it sits on the same machine it is very fast to get data from because it uses Named Pipes which are very very efficient.&lt;/p&gt; &lt;p&gt;Ingo Ramma's second lecture that I attended was about Windows Workflow and how to Integrate it in to applications.&amp;nbsp; I already know a little about Windows Workflow and this was the second lecture he did about the WF.&amp;nbsp;&amp;nbsp;I am glad I missed the first one, not because he is a bad talker, he is brilliant, but because I think the first one would have covered what I already knew to some extent.&amp;nbsp; Ingo's talking is quick and he gets through a lot of information, but I believe that he is very good at what he does.&amp;nbsp; He was talking about some of the custom activities as well as asynchronous activities and how best to code them.&amp;nbsp; I had a question to ask at the end of the presentation, and he was very personable and had a instant answer to my question, which cleared some of the understandings that I had of WF a little.&amp;nbsp; Additionally, I was being nosey and I stayed a bit longer to see what other people where asking and he was very good with his answers.&lt;/p&gt; &lt;h3&gt;Vendors&lt;/h3&gt; &lt;p&gt;I got an email from the Peter Lindsey, the managing director of Infragistics Europe about the experiences I had at the demo booth.&amp;nbsp; I met up with in between meetings and I got to see the&amp;nbsp;Infragisitics a bit better this time.&amp;nbsp; Some of the XAML stuff they are doing is pretty cool, the data grid is smart and so is the the Carousel List box.&amp;nbsp; I was attempting to implement my own carousel listbox in xaml a little while ago, and whilst if I had the time I think I could have got a fairly decent one made, the Infragistics one is pretty darn smart.&lt;/p&gt; &lt;p&gt;Olive360, so far I think the lectures are of an amazing quality, but if you are to improve on this years DevWeek I would make it easier and more appealing for vendors to be present.&amp;nbsp; There are not that many companies here.&amp;nbsp; I like to see what people are offering, I like to meet the people who are selling software so that I can see if they are simply resellers of a product or that the develop the software the The majority of the lectures were about .Net and .Net technologies, yet there were a couple of vendors that were c++ specific.&amp;nbsp; Also, to some of the vendors.&amp;nbsp; You were terrible!&amp;nbsp; You came to sell something, yet I felt that the assistants were not really that bothered. &lt;/p&gt; &lt;p&gt;On a lighter note, even though I am an avid Resharper user, Mark Miller from Dev Express was their showing off his product, and it does look pretty darn smart.&amp;nbsp; His presentations are slick, his attitude is spot on and he is even respectful of his competitors.&amp;nbsp; If only there were more people like him.&lt;/p&gt; &lt;p&gt;I forgot to mention that yesterday I spoke to Developmentor, man do they seem like a really cool training company.&amp;nbsp; They have experts in the domains that are new and current and the courses are their own, based around the trainers experiences and own knowledge rather than the course the Microsoft lease out to other Training companies.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:e62a1caa-d4f8-478e-bb48-e6bc63e0abf1" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/devweek2007" rel="tag"&gt;devweek2007&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/devweek2007.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/devweek" rel="tag"&gt;devweek&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/devweek.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/devexpress" rel="tag"&gt;devexpress&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/devexpress.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/infragistics" rel="tag"&gt;infragistics&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/infragistics.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/ingo+rammer" rel="tag"&gt;ingo+rammer&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/ingo+rammer.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Kelvin+Henlly" rel="tag"&gt;Kelvin+Henlly&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Kelvin+Henlly.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Niels+Burglund" rel="tag"&gt;Niels+Burglund&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Niels+Burglund.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/ADO" rel="tag"&gt;ADO&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/ADO.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/.NET" rel="tag"&gt;.NET&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/.NET.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Analysis" rel="tag"&gt;Analysis&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Analysis.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/UML" rel="tag"&gt;UML&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/UML.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/WF" rel="tag"&gt;WF&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/WF.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Workflow" rel="tag"&gt;Workflow&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Workflow.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/03/devweek-day-2.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-8305585537183202347</guid><pubDate>Tue, 27 Feb 2007 19:41:00 +0000</pubDate><atom:updated>2007-02-27T19:41:29.669Z</atom:updated><title>Day 1 of the DevWeek Conference</title><description>&lt;p&gt;Day 1 is over, and all in all it was very good.&amp;nbsp; It started off with Jeff Prosise's keynote speech, he is an excellent orator for 1.5 hours the majority of the lecture theater was hanging off nearly every word, well at least I was.&amp;nbsp; He took everyone through the history of CGI/ISAPI programming, noting the EBay have the most complex ASAPI DLL ever written and then on to how classic ASP and PHP revolutionized how we write web app's.&amp;nbsp; Then on to ASP.Net and on to how AJAX and Microsoft ASP.Net AJAX framework is cool (which I happen to agree).&amp;nbsp; He spruced up his talk with various films of people hurting themselves with planes and boats (it was quite funny).&amp;nbsp; Finally he showed us the Microsoft future of web programming is in WPF/E.&amp;nbsp; Overall his talk was very cool, I personally would have liked to see more of the future and less of the past, but I believe that was saved for his other lectures that I was unable to go to.&lt;/p&gt; &lt;p&gt;The second lecture that I attended was "Attack and Defense: Securing ASP.NET 2.0", this was the weakest lecture that I attended, it didn't really cover ASP.Net 2.0, for instance Keith didn't mention event source validation and it was basically a copy of &lt;a title="http://msdn2.microsoft.com/en-us/library/ms998258.aspx#pagguidelines0001_inputdatavalidation" href="http://msdn2.microsoft.com/en-us/library/ms998258.aspx#pagguidelines0001_inputdatavalidation"&gt;http://msdn2.microsoft.com/en-us/library/ms998258.aspx#pagguidelines0001_inputdatavalidation&lt;/a&gt;&amp;nbsp;but not as thorough or as interesting.&amp;nbsp; Saying that Keith was a good speaker.&lt;/p&gt; &lt;p&gt;The last two lectures were a two-parter called "Practical Patterns" run by David Wheeler.&amp;nbsp; Dave was a really great speaker, he was entertaining and funny and the two sessions didn't seem to drag.&amp;nbsp; He basically went through about 12 of the design patterns that you can use in everyday development.&amp;nbsp; There were about 130 odd slides, however the lecture was a "Code" lecture with Dave producing code version of the patterns in "life-like" applications.&amp;nbsp; It was very good, his explanations were extremely clear and concise.&lt;/p&gt; &lt;p&gt;There are not that many vendors here this year.&amp;nbsp; I have been told that in previous conferences there were more.&amp;nbsp; It is a shame really because I wanted to see how many free T-shirts I could get (the current count is 1, from Infragistics) :).&amp;nbsp; Seriously though, I would have loved to see a lot more .Net component developers showcasing their wares.&lt;/p&gt; &lt;p&gt;Infragistics, speaking of which didn't put on a great demo, however, their new XAML controls are looking pretty good especially the Carousel Listbox.&lt;/p&gt; &lt;p&gt;I also spoke to NAG (Numerical Analysis Group) however they didn't come across like they were bothered to be there.&lt;/p&gt; &lt;p&gt;TechExcel were really good.&amp;nbsp; I spoke to Richard Zhu, and he is really enthusiastic about the software they are make and gave me a great demo of their Defect and Issue Tracking Software.&lt;/p&gt; &lt;p&gt;The guys distributing Enterprise Architect in the UK could have done a better job, they weren't demoing from what I remember or really selling the software.&amp;nbsp; However one of their Tech Specialists will be there tomorrow so I will be speaking to him.&lt;/p&gt; &lt;p&gt;The QBS stand is okay, I spoke to the woman doing the Camtasia demo (for which you can get £60 off the retail price) but unfortunately it is more expensive the BBFlashback with from what I could tell the exact same features.&amp;nbsp; I have used the trial version of BBFlashback and I was very impressed with.&amp;nbsp; Saying that Camtasia does appear to be a fantastic product.&lt;/p&gt; &lt;p&gt;And that is about it for today.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:a5dc77b1-324f-4b80-84ce-e9885028e2d0" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Devweek" rel="tag"&gt;Devweek&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Devweek2007" rel="tag"&gt;Devweek2007&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek2007.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/ASP.NET.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/.Net" rel="tag"&gt;.Net&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/.Net.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Security" rel="tag"&gt;Security&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Security.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/conference" rel="tag"&gt;conference&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/conference.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/talks" rel="tag"&gt;talks&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/talks.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/presentations" rel="tag"&gt;presentations&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/presentations.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/David%20Wheeler" rel="tag"&gt;David Wheeler&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/David%20Wheeler.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Jeff%20Prosise" rel="tag"&gt;Jeff Prosise&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Jeff%20Prosise.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/02/day-1-of-devweek-conference.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7357506289653290514</guid><pubDate>Tue, 27 Feb 2007 06:56:00 +0000</pubDate><atom:updated>2007-02-27T06:56:58.546Z</atom:updated><title>DevWeek 2007</title><description>&lt;p&gt;I arrived at the Hotel last night, which is bolted on to the side of the conference center which is really handy.&amp;nbsp; I am just getting ready for the first days lectures.&lt;/p&gt; &lt;p&gt;Looking at the schedule everyone will be going to the Technical Keynote speech by Jeff Prosise called "Web programming yesterday, today and tommorrow: why ASP.NET AJAX will change your life".&amp;nbsp; Once that one is over I will be attending the following lectures:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Attack and Defense: securing ASP.NET 2.0 applications&lt;/li&gt; &lt;li&gt;Practical Patterns in .Net, Part 1&lt;/li&gt; &lt;li&gt;Practical Patterns in .Net Part 2&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I am basically attending the Architect track.&amp;nbsp; I hope I can put up summaries of the lectures, however Internet access is a little expensive from the Hotel.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:db6f0240-b28d-4b4c-b251-81528c9a0827" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http://www.topicala.com/tag/Devweek" rel="tag"&gt;Devweek&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/Devweek2007" rel="tag"&gt;Devweek2007&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/Devweek2007.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/ASP.NET.opml"&gt;OPML&lt;/a&gt;], &lt;a href="http://www.topicala.com/tag/.NET" rel="tag"&gt;.NET&lt;/a&gt;[&lt;a href="http://www.topicala.com/opml/.NET.opml"&gt;OPML&lt;/a&gt;]&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/02/devweek-2007_27.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-3389098488982518917</guid><pubDate>Fri, 09 Feb 2007 08:17:00 +0000</pubDate><atom:updated>2007-02-09T08:11:25.495Z</atom:updated><title>Resharper 2.0 Plugins</title><description>&lt;p&gt;I little while ago I wrote about the lack of resharper plugins and sample code for the plugins [&lt;a title="Resharper Plugin Post" href="http://www.kinlan.co.uk/2006/11/resharper-20-plugins.html" target="_blank"&gt;http://www.kinlan.co.uk/2006/11/resharper-20-plugins.html&lt;/a&gt;].&amp;nbsp; Jetbrains has now started up a new page [&lt;a title="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+Plugin+Development" href="http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+Plugin+Development"&gt;http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+Plugin+Development&lt;/a&gt;] which contains guides and also sample code on how to create plugins.&amp;nbsp; You will need Resharper 2.5+, but that is a free upgrade if you already have resharper.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:975c8f85-aedf-44bf-badf-fa30d9668b9b" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http:/www.topicala.com/tag/resharper" rel="tag"&gt;resharper&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/openApi" rel="tag"&gt;openApi&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/development" rel="tag"&gt;development&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/.net" rel="tag"&gt;.net&lt;/a&gt;&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/02/resharper-20-plugins.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7324524798338880498</guid><pubDate>Fri, 09 Feb 2007 08:11:00 +0000</pubDate><atom:updated>2007-02-07T04:11:01.353Z</atom:updated><title>DevWeek 2007</title><description>&lt;p&gt;I will be heading off to DevWeek 2007 in London between the 27th Feb and 1st March.&amp;nbsp; I will hopefully be attending the architecuture and patterns meetings.&lt;/p&gt; &lt;p&gt;Drop me an email if you are going too.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:71086bfd-df80-4c93-bf60-4fc97f7eb26f" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http:/www.topicala.com/tag/devweek" rel="tag"&gt;devweek&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/devweek2007" rel="tag"&gt;devweek2007&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/patterns" rel="tag"&gt;patterns&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/practices" rel="tag"&gt;practices&lt;/a&gt;&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/02/devweek-2007.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7560517631607266533</guid><pubDate>Mon, 29 Jan 2007 15:24:00 +0000</pubDate><atom:updated>2007-01-29T15:25:35.214Z</atom:updated><title>Technorati Claim Fix, Please Ignore</title><description>&lt;a href="http://www.technorati.com/claim/cdc7wjqxj" rel="me"&gt;Technorati Profile&lt;/a&gt;</description><link>http://www.kinlan.co.uk/2007/01/technorati-claim-fix-please-ignore.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7930648054939674666</guid><pubDate>Mon, 29 Jan 2007 14:44:00 +0000</pubDate><atom:updated>2007-01-29T14:44:07.025Z</atom:updated><title>Easy HTML Screen Capture in Windows</title><description>&lt;p&gt;For a while I have been thinking about how to capture the output of IE into a Bitmap or other image format.&amp;nbsp; The attempts that I have done normally center around hosting an IE control on a WinForm and then render the page inside the control and then capture the output.&amp;nbsp; This however seems to be pretty hairy, I could never get it to work after the initial screen capture.&lt;/p&gt; &lt;p&gt;It just so happens that the WindowsLiveWriter API has an object called HtmlScreenCapture.&amp;nbsp; &lt;/p&gt; &lt;p&gt;HtmlScreenCapture is really simle to use.&amp;nbsp; The code below captures the webpage and renders it to a picture box that I have on my WinForm.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Uri uri = new Uri("&lt;a href="http://www.kinlan.co.uk/&amp;quot;);"&gt;http://www.kinlan.co.uk/");&lt;/a&gt; &lt;p&gt;WindowsLive.Writer.Api.HtmlScreenCapture hsc = new HtmlScreenCapture(uri, 800);&lt;br&gt;pictureBox1.Image = hsc.CaptureHtml(1000);&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;You can import the WindowsLiveWriter API into your project by finding the WindowsLive.Writer.Api.dll file in the WindowsLiveWriter install directory. &lt;p&gt;Obviously, WindowsLiveWriter is still beta as of Jan 2007, so they may remove this API. &lt;p&gt;Anyway it is really simple to use, so anyone could create an imaging service in minutes, much like &lt;a title="http://www.websnapr.com/" href="http://www.websnapr.com/"&gt;http://www.websnapr.com/&lt;/a&gt;&amp;nbsp;can. &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:3fd3801f-1770-41a5-825e-85ed0656e82a" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http:/www.topicala.com/tag/windowslivewriter" rel="tag"&gt;windowslivewriter&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/c#" rel="tag"&gt;c#&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/image" rel="tag"&gt;image&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/screen%20capture" rel="tag"&gt;screen capture&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/winform" rel="tag"&gt;winform&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/.net" rel="tag"&gt;.net&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/HtmlScreenCapture" rel="tag"&gt;HtmlScreenCapture&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/live%20writer" rel="tag"&gt;live writer&lt;/a&gt;&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2007/01/easy-html-screen-capture-in-windows.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-170922467606120944</guid><pubDate>Fri, 05 Jan 2007 11:34:00 +0000</pubDate><atom:updated>2007-01-05T11:34:58.305Z</atom:updated><title>Wii, oh Wii did I cancel my Wii</title><description>&lt;p&gt;A couple of months ago I pre-ordered a Nintendo Wii on Argos, however I cancelled the order..... which was a silly thing to do&amp;nbsp;because it meant that I have not been able to find one since the launch in the UK.&amp;nbsp; Everyone else in work got theirs and have been talking about how cool it is, and all I could do was wobble my bottom lip and long for a Wii, that is until now!&lt;/p&gt; &lt;p&gt;I got mine yesterday (5th Jan 2007) from Asda in Aintree, Liverpool.&amp;nbsp; They had 3 in stock at the time. I also bought the last Wii Play that they had.&amp;nbsp; I only got it by chance, I decided to ring around some shops like Game (they are rubbish, they never answer the phone and are pretty rude most of the time when you do get a chance to speak to them) and Game Station, it was only a fluke that I thought I might try Asda.&lt;/p&gt; &lt;p&gt;I got the box home and set the box&amp;nbsp;it up&amp;nbsp;later&amp;nbsp;that&amp;nbsp;night and we played on it for an hour or two.&amp;nbsp; I absolutly love it, &amp;nbsp;I think it is a brilliant piece of kit, the Wiimote seems pretty accurate and the WiiSports&amp;nbsp;graphics are really cute!&amp;nbsp; The graphics are not as good as the 360, but that doesn't matter because it appears to be all about the games.&lt;/p&gt; &lt;p&gt;I haven't set up the Wireless access yet because I need a wireless router! Doh :)&lt;/p&gt; &lt;p&gt;Nintendo have had a stroke of genius here, it is reported that they are making a profit on every piece of hardware that they sell unlike some of other Next Gen Consoles have at their launch, and they are sold out nearly straight away.&lt;/p&gt; &lt;p&gt;Anyway, I can't wait to get more games for it.&amp;nbsp; Let me know if you have any suggestions or know any cool links for Wii and i'll post it here.&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:705b60d9-2a67-4553-85bb-08375ffb3a84" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Topicala Tags: &lt;a href="http:/www.topicala.com/tag/Wii" rel="tag"&gt;Wii&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/Argos" rel="tag"&gt;Argos&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/Asda" rel="tag"&gt;Asda&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/Wii%20Play" rel="tag"&gt;Wii Play&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/Nintendo" rel="tag"&gt;Nintendo&lt;/a&gt;, &lt;a href="http:/www.topicala.com/tag/WiiSports" rel="tag"&gt;WiiSports&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://www.kinlan.co.uk/2007/01/wii-oh-wii-did-i-cancel-my-wii.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-8109338.post-7470546662010759282</guid><pubDate>Sat, 18 Nov 2006 19:34:00 +0000</pubDate><atom:updated>2006-11-18T19:34:23.170Z</atom:updated><title>Why I love WSE 3.0</title><description>&lt;p&gt;I have been using WSE 3.0 for a while now and I really like it.&amp;nbsp; I really like the policy mechanism in the WSE, it affords me a kind of AOP (aspect orientated programming) that I am really starting to get into.&amp;nbsp;&amp;nbsp; For instance I have made a lot of SoapFilters recently, some handy, some just for tests, but each of them allow me to add an aspect of functionality into the webservice that I am creating in a configuration and not a design time.&amp;nbsp; If I want security, just add a policy line in the XML config, if I want auditing another line, if I want exception shielding another line.&amp;nbsp;&amp;nbsp; All of these aspects of the system I am creating can be added at deployment time thus leaving my web service code clean and simple.&lt;/p&gt; &lt;p&gt;An example, pseudo code: &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:82c14519-f5de-4e40-bcc9-b27423352713" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000; "&gt;[Webservice]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderService&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    [WebMethod]&lt;br /&gt;    [Policy(ServerPolicy)]&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderList SubmitOrders(OrderList input)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;return&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderListRepository.InsertNewOrders(input);&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And a policy file (not an actual file that would work in this example) would say:&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:5dcf0f00-df5f-4472-ac6f-d7968353eaf4" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;Policy&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;type&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Security&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; MustHaveRole&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Add&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;type&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Auditing&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;add &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;type&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ExceptionSheilding&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;Policy&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;This service code and policy file model is so much cleaner and simpler than what you would have to write if you didn't have an AOP style policy system:&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:aff4ead3-95dd-4a62-8ac7-28b1e68622de" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000; "&gt;[Webservice]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderService&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;    [WebMethod]&lt;br /&gt;    [Policy(ServerPolicy)]&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderList SubmitOrders(OrderList input)&lt;br /&gt;    {&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;try&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt;(User.IsInRole(&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Add&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;) &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000; "&gt; User.IsAuthenticated)&lt;br /&gt;            {&lt;br /&gt;                OrderListRepository.InsertNewOrders(input);&lt;br /&gt;                Log.Audit(Success);&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;else&lt;/span&gt;&lt;span style="color: #000000; "&gt;&lt;br /&gt;            {&lt;br /&gt;                Log.Error(SecurityError);&lt;br /&gt;            }    &lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;catch&lt;/span&gt;&lt;span style="color: #000000; "&gt;(RepositoryException ex)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;throw&lt;/span&gt;&lt;span style="color: #000000; "&gt; SheildedException(ex, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Problem in Repository&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;catch&lt;/span&gt;&lt;span style="color: #000000; "&gt;(Exception ex)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;throw&lt;/span&gt;&lt;span style="color: #000000; "&gt; SheildedException(ex, &lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;Unkown Exception&lt;/span&gt;&lt;span style="color: #000000; "&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000; "&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Now tell me which code you would like to maintain! :)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0790c1e7-e075-4b70-b618-082bf317ec4a" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Tags: &lt;a href="http://www.kinlan.co.uk/tag/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;, &lt;a href="http://www.kinlan.co.uk/tag/WSE" rel="tag"&gt;WSE&lt;/a&gt;, &lt;a href="http://www.kinlan.co.uk/tag/WSE3" rel="tag"&gt;WSE3&lt;/a&gt;, &lt;a href="http://www.kinlan.co.uk/tag/c#" rel="tag"&gt;c#&lt;/a&gt;, &lt;a href="http://www.kinlan.co.uk/tag/.net" rel="tag"&gt;.net&lt;/a&gt;, &lt;a href="http://www.kinlan.co.uk/tag/webservice" rel="tag"&gt;webservice&lt;/a&gt;&lt;/div&gt;</description><link>http://www.kinlan.co.uk/2006/11/why-i-love-wse-30.html</link><author>noreply@blogger.com (Paul Kinlan)</author></item></channel></rss>