<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Softwarefun</title>
	<atom:link href="http://blog.softwarefun.nl/Index.php?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.softwarefun.nl</link>
	<description>Fun in Softwareland</description>
	<lastBuildDate>Mon, 09 Nov 2009 20:48:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Devnology Community Day</title>
		<link>http://blog.softwarefun.nl/?p=39</link>
		<comments>http://blog.softwarefun.nl/?p=39#comments</comments>
		<pubDate>Mon, 09 Nov 2009 20:43:04 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[Devnology]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=39</guid>
		<description><![CDATA[
			
				
			
		
Saturday November the 17th 2009 Devnology held their first Devnology Community Day. A great day with amazing content for developers.This post gives my impressions of the day.
For people who don’t like to read just watch the slideshow.
 
General Impression
When you put a&#160; group of people that all share the same interests in a room it [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D39"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D39&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>Saturday November the 17th 2009 <a href="http://devnology.nl/" target="_blank">Devnology</a> held their first Devnology Community Day. A great day with amazing content for developers.This post gives my impressions of the day.</p>
<p>For people who don’t like to read just watch the slideshow.</p>
<p> <object width="400" height="300"><param name="flashvars" value="offsite=true&lang;=en-us&amp;page_show_url=%2Fphotos%2Fdevnology%2Fsets%2F72157622762810848%2Fshow%2Fwith%2F4086751579%2F&amp;page_show_back_url=%2Fphotos%2Fdevnology%2Fsets%2F72157622762810848%2Fwith%2F4086751579%2F&amp;set_id=72157622762810848&amp;jump_to=4086751579"></param><param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowFullScreen="true" flashvars="offsite=true&#038;lang=en-us&#038;page_show_url=%2Fphotos%2Fdevnology%2Fsets%2F72157622762810848%2Fshow%2Fwith%2F4086751579%2F&#038;page_show_back_url=%2Fphotos%2Fdevnology%2Fsets%2F72157622762810848%2Fwith%2F4086751579%2F&#038;set_id=72157622762810848&#038;jump_to=4086751579" width="400" height="300"></embed></object>
<p><strong>General Impression</strong></p>
<p>When you put a&#160; group of people that all share the same interests in a room it always creates a breeding ground for discussions and sharing knowledge. If you than put these same people in a nice building, feed them and in general make sure they have nothing to complain it only gets better. I could feel this from the first minute I arrived at the community day and it lasted for the rest of the day. The only thing I possible can complain about was the lack of an internet connection. This was an unforeseen problem and will be double checked next time. Pieter Joost <a href="http://twitter.com/pjvds/statuses/5541659784" target="_blank">promised me</a> so it must be true.</p>
<p><strong>Sessions</strong></p>
<p>The session where divers in content and in setting, there were workshops, presentations, Chalk ‘n Talks and Lightning talks. Topics you could choose from are in the table below.</p>
<table border="1" cellspacing="0" cellpadding="2" width="483">
<tbody>
<tr>
<td valign="top" width="162"><a href="http://blog.tty.nl/2009/11/08/slides-haskell-workshop/" target="_blank">An introduction to Functional Programming using Haskell</a></td>
<td valign="top" width="166">The Lean Lego Game</td>
<td valign="top" width="153">Software engineering and multicore applications</td>
</tr>
<tr>
<td valign="top" width="162">Introduction to BDD</td>
<td valign="top" width="166">Code reviews</td>
<td valign="top" width="153">Software development anti patters found in the real world</td>
</tr>
<tr>
<td valign="top" width="162">Building an artificial game player in smalltalk</td>
<td valign="top" width="166">Flying Horses – cleaner&#160; code in other languages</td>
<td valign="top" width="153">Math for Programmers</td>
</tr>
<tr>
<td valign="top" width="162">From idea to successful ISV: Traps and tricks</td>
<td valign="top" width="166"><a href="http://www.theenterprisearchitect.eu/archive/2009/11/09/10-things-you-should-know-model-driven-development" target="_blank">Ten things you should know about model driven development</a></td>
<td valign="top" width="153"><a href="http://www.slideshare.net/Narnach/an-introduction-to-ruby-2449085" target="_blank">An introduction to Ruby</a></td>
</tr>
<tr>
<td valign="top" width="162"><a href="http://code.google.com/p/multiverse/" target="_blank">Software Transactional Memory</a></td>
<td valign="top" width="166">Give your code some love</td>
<td valign="top" width="153">Message passing concurrency with F#</td>
</tr>
<tr>
<td valign="top" width="162">File Carving revisited (with Scala)</td>
<td valign="top" width="166">Introduction to Acceptance Test Driven Development</td>
<td valign="top" width="154">&#160;</td>
</tr>
</tbody>
</table>
<p>I learned some Haskell ( Even won a book ), got an introduction to Ruby and saw some amazing Java code for Software transactional Memory.</p>
<p><strong>Devnology</strong></p>
<p><a href="http://devnology.nl/" target="_blank">Devnology</a> is a great organization that already has organized a lot of amazing meetings. A panel discussion on Model Driven development and a session with <a href="http://codebetter.com/blogs/gregyoung/" target="_blank">Greg Young</a> about domain driven design are just a few of the highlights. Devnology has a mission that says it all:</p>
<p><em>Devnology aims to provide the Dutch software development community with opportunities to exchange knowledge and experience. We aim to bridge the gap between theory and practice of software development.</em></p>
<p>Most of the twitter tweets about Devnology use #devnology so you can see what people are saying over <a href="http://search.twitter.com/search?q=%23devnology" target="_blank">here</a>.</p>
<p>Contacting and asking Devnolgy questions is easy, just follow <a href="http://devnology.nl/en/about-devnology" target="_blank">this English contact page</a>, they are all very involved and more than willing to answer questions.</p>
<p>Devnology depends on sponsors and so far they had some great sponsors. The community day was held at <a href="http://www.vxcompany.com/" target="_blank">VXCompany</a> in Baarn. <a href="http://www.vxcompany.com/" target="_blank">VXCompany</a> hosted the event very well and free charge.</p>
<p><strong>Conclusion</strong></p>
<p>I had a very well spent Saturday. Everything was taken care off but there also was a lot of freedom to find your way. The speakers were very involved, very easy to talk to and as far as I can assess very knowledgeable. You just have to love the organizers, the speakers and the attendees for giving up their free Saturday and making this an event to remember. </p>
<p><a href="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4086730705_e05b6962ce.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SONY DSC" border="0" alt="SONY DSC" src="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4086730705_e05b6962ce_thumb.jpg" width="490" height="328" /></a> <a href="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4086751579_95bdc94055.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SONY DSC" border="0" alt="SONY DSC" src="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4086751579_95bdc94055_thumb.jpg" width="244" height="164" /></a> <a href="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4087518114_efdf5687a2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SONY DSC" border="0" alt="SONY DSC" src="http://softwarefun.nl/wordpress/wp-content/uploads/2009/11/4087518114_efdf5687a2_thumb.jpg" width="244" height="165" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=39</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Exploring ASP.NET MVC application architecture</title>
		<link>http://blog.softwarefun.nl/?p=25</link>
		<comments>http://blog.softwarefun.nl/?p=25#comments</comments>
		<pubDate>Mon, 26 Oct 2009 21:24:57 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=25</guid>
		<description><![CDATA[
			
				
			
		
I am planning on exploring how to architect a good MVC application. During this exploration I found some interesting web-resources. I might be using this post in possible future blog posts as a reference.
Sample apps
I really think that looking at other peoples code can give you great ideas about what to do and what not. [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D25"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D25&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>I am planning on exploring how to architect a good MVC application. During this exploration I found some interesting web-resources. I might be using this post in possible future blog posts as a reference.</p>
<p><strong>Sample apps</strong></p>
<p>I really think that looking at other peoples code can give you great ideas about what to do and what not. So here are some sample apps to look at. You could look at SharpArchitecture also as a sample app but I thought that one deserved a paragraph of it’s own.</p>
<ul>
<li>I don’t know Rob Connery personally but you gotta love what he does. <a href="http://mvcsamples.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=18861" target="_blank">StoreFront</a>, is his sample app. And you can find a lot about it <a href="http://blog.wekeroad.com/category/mvc-storefront" target="_blank">here</a>. </li>
<li>Read the separate Oxite paragraph for more details before downloading ! <a href="http://www.codeplex.com/oxite" target="_blank">Oxite</a> got a lot of bad credits but combined with the critics you can find it still has value in learning how to architect an MVC app or how not to architect an MVC app. </li>
<li><a href="http://nerddinner.codeplex.com/" target="_blank">NerdDinner</a> is rather basic but still is a nice starter with a <a href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf" target="_blank">free chapter</a> of the “<a href="http://www.amazon.com/gp/product/0470384611?ie=UTF8&amp;tag=scoblo04-20&amp;linkCode=xm2&amp;camp=1789&amp;creativeASIN=0470384611" target="_blank">Proffesional ASP.NET MVC 1.0</a>” book coming with it. </li>
<li><a href="http://code.google.com/p/codecampserver/" target="_blank">Codecamp server</a> is on my list to explore, haven’t seen it yet. Is is part of the “<a href="http://www.amazon.com/ASP-NET-MVC-Action-Jeffrey-Palermo/dp/1933988622/ref=pd_sim_b_5" target="_blank">ASP.NET MVC in Action</a>” book. </li>
</ul>
<p><strong>SharpArchitecture</strong></p>
<p>SharpArchitecture already has an architecture and while exploring it you can get very inspired. As far as I can tell there went a lot of thought in this architecture and for now I see it as a starting and reference point for my explorations.</p>
<p>You can find it <a href="http://github.com/codai/Sharp-Architecture/downloads" target="_blank">here</a>.</p>
<p><strong>Oxite</strong></p>
<p>When Oxite got out it got a lot of criticism, but also a lot of love to make it better. There is a lot to find in the comments about Oxite about what people expect from an MVC app.</p>
<ul>
<li>This <a href="http://twitter.com/simonech/status/1058754441" target="_blank">tweet</a> from Simone Chiaretta is what most people thought about Oxite when it got out. </li>
<li><a href="http://blog.wekeroad.com/blog/some-thoughts-on-oxite/" target="_blank">This post</a> is my all-time Oxite favourite. Rob Connery gives explanations and solutions. </li>
<li>Chad Myers is a good second with also <a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/12/20/oxite-review.aspx" target="_blank">constructive comments</a> </li>
<li>Although I don’t like the tone, <a href="http://codebetter.com/blogs/karlseguin/archive/2008/12/15/oxite-oh-dear-lord-why.aspx" target="_blank">this post</a> still has some great comments. </li>
<li>A <a href="http://www.lazycoder.com/weblog/2008/12/15/new-aspnet-mvc-sample-oxite-needs-some-tlc/" target="_blank">collection</a> of Oxite tweets </li>
</ul>
<p><strong>Screen casts</strong></p>
<p>Most screen casts are not on an architecture level, but I do believe that the more details you know, the better you can architect the application. Also you need to be aware that these screen casts might be about different versions of the MVC framework.</p>
<ul>
<li>Scott Guthrie has a nice <a href="ScottGu Manchester ASP.NET MVC Video" target="_blank">session</a> at the Manchester user group </li>
<li>Dimecast has a lot of <a href="http://www.dimecasts.net/Casts/ByTag/MVC" target="_blank">screen casts</a> also about SharpArchitecture </li>
<li>At oredev there was an advanced MVC <a href="http://www.softdevtube.com/2009/08/24/advanced-asp-net-mvc/" target="_blank">session</a> </li>
<li>Rob Connery has multiple screen casts about the <a href="http://blog.wekeroad.com/category/mvc-storefront" target="_blank">storefront app</a> and TDD. </li>
<li>I realy like this one: <a href="http://www.chrisvandesteeg.nl/2009/07/13/aspnet-mvc-dynamicdata-domain-riaservices-unity-and-nhibernate-part-1/" target="_blank">ASP.NET MVC, DynamicData, Domain-/RiaServices, Unity and NHibernate: Part 1</a> </li>
<li>A lot off screen casts at <a href="http://www.asp.net/learn/mvc-videos/" target="_blank">the official ASP.Net site</a> </li>
</ul>
<p><strong>Books</strong></p>
<ul>
<li>This <a href="http://davidhayden.com/blog/dave/archive/2009/10/14/ChoosingAnMvcBook.aspx" target="_blank">post</a> by David Hayden says enough about some books, take your pick. </li>
<li><a href="http://stackoverflow.com/questions/240905/best-asp-net-mvc-book" target="_blank">This</a> is a nice Stackoverflow answer about some books. </li>
</ul>
<p><strong>Miscellaneous</strong></p>
<p>I just had to mention these posts, but did not have a real category for it.</p>
<ul>
<li>Simone Chiaretta describes <a href="http://codeclimber.net.nz/archive/2009/10/15/my-asp.net-mvc-stack-and-why-i-chosen-it.aspx" target="_blank">the stack he uses with MVC</a>. This gives a great overview of choices to make. </li>
<li>Simone Chiaratte lists <a href="http://codeclimber.net.nz/archive/2009/10/27/12-asp.net-mvc-best-practices.aspx" target="_blank">12 ASP.NET MVC Best Practices</a> </li>
</ul>
<p><strong>Other posts like this one</strong></p>
<p>You wouldn’t have guessed it, but other people have collected resources too.</p>
<ul>
<li><a href="http://www.asp.net/mvc/learn/" target="_blank">The official ASP.Net site</a> </li>
<li>From the polymorphic podcast 47 <a href="http://weblogs.asp.net/craigshoemaker/archive/2008/04/24/47-asp-net-mvc-resources-to-rock-your-development.aspx" target="_blank">resources</a> to rock your development </li>
<li><a href="http://stephenwalther.com/blog/archive/2009/01/27/a-guide-to-learning-asp.net-mvc-release-candidate-1.aspx" target="_blank">Stephen Walther on ASP.NET MVC</a> </li>
<li><a href="http://blogs.msdn.com/cbowen/archive/2009/10/31/asp-net-mvc-resource-guide.aspx" target="_blank">Chris Bowen’s Asp.Net resource guide</a></li>
</ul>
<p>I hope everybody has just as much fun as I have exploring this. If anybody has something to add, please do so in&#160; the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Woodcutter and the Leprechaun</title>
		<link>http://blog.softwarefun.nl/?p=22</link>
		<comments>http://blog.softwarefun.nl/?p=22#comments</comments>
		<pubDate>Sun, 11 Oct 2009 11:12:09 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=22</guid>
		<description><![CDATA[
			
				
			
		
There once was a woodcutter working hard cutting down a tree. Suddenly a leprechaun appeared and started yelling stop stop.
The woodcutter looked at the leprechaun and started smiling : “Are you going to offer me a pot of gold if I quit cutting down your house ?”. The leprechaun frowned and replied “off course not [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D22"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D22&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>There once was a woodcutter working hard cutting down a tree. Suddenly a leprechaun appeared and started yelling stop stop.</p>
<p>The woodcutter looked at the leprechaun and started smiling : “Are you going to offer me a pot of gold if I quit cutting down your house ?”. The leprechaun frowned and replied “off course not silly, leprechauns don’t live in trees ! I live in a beach house in Miami, but I do want to make you an offer.”</p>
<p>The leprechaun made the following offer:</p>
<p><strong>If you promise you will give half of your winnings to charity, I will let you win twenty million.</strong></p>
<p>The woodcutters first thought was that he was not going to give away ten million. But thinking a bit harder he came to the conclusion that he just was offered ten million and he should accept the offer as fast as he could. So he started picturing what his wife would say when they would have won the ten million. Humm wait a minute, I won’t be able to convince my wife to give away ten million. So he asked the leprechaun if he was allowed to tell his wife about the deal. The leprechaun agreed.</p>
<p><strong>If you and your wife will give half of your winnings to charity, I will let you win twenty million.</strong></p>
<p>So the woodcutter started picturing again how he and his wife would celebrate the ten million tomorrow or the day after. Hummm the leprechaun did not say anything about a date. So leprechaun when is this going to happen ?. Oh sorry said the leprechaun I cannot commit to a date, it will be in your lifetime. The woodcutter thought hard and did not find this very acceptable, suppose he was already going to win twenty million, was the leprechaun going to cheat him out of ten million ? The woodcutter strongly suggested that the leprechaun would give a date, the leprechaun finally agreed.</p>
<p><strong>If you and your wife will give half of your winnings to charity, I will let you win twenty million before the end of this year.</strong></p>
<p>The woodcutter started imaging again about spending all those euro’s. Hummmm the leprechaun did not say anything about euro’s. So leprechaun what will the currency be ? Oh the leprechaun could not really tell, it was a matter of what lottery he could manipulate and negotiations with other leprechauns. The leprechaun and the woodcutter discussed this a bit and came to a new agreement.</p>
<p><strong>If you and your wife give half of your winnings to charity, I will let you win about twenty million euro’s, remaining after being converted form the original currency, before the end of this year.</strong></p>
<p>Learning from the discussion so far the woodcutter did not start imaging anything but he started analyzing the agreement and the word ‘about’ started to feel a bit funny. What would happen if it was nineteen million nine hundred thousand, would he still be required to give half ? And what charity ? He could start his own foundation for the needy woodcutter. After three days of negotiating they came to an agreement.</p>
<p><strong>If you and your wife give exactly half (rounded down) of your winnings to a charity of the leprechauns choice. The leprechaun will let the woodcutter win at least twenty million euro’s, remaining after being converted from the original currency, before the thirty first of December this year at midnight. The wife will not get her own amount but she shares with the woodcutter and if anything significant changes in the made agreement the woodcutter and the leprechaun will renegotiate the agreement.</strong></p>
<p>The woodcutter went home a happy man. When he got home, his wife was mad for him being late three days. After some explaining she did not like the deal, she wanted half of the ten million. The wife left the woodcutter and the woodcutter went back to the forest to renegotiate.</p>
<p>The wife lived happily ever after.</p>
<p>When making agreements consider your organization, time, cultural differences, measurability of requirements, changes in the environment, personal viewpoints and as much as you can think of. Make the choices flexible enough to last and make them fast enough so you won’t be caught by design creep. Don’t exclude any major stakeholders.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=22</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DevDays 2009 Introduction</title>
		<link>http://blog.softwarefun.nl/?p=20</link>
		<comments>http://blog.softwarefun.nl/?p=20#comments</comments>
		<pubDate>Thu, 28 May 2009 20:08:46 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[DevDays2009]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=20</guid>
		<description><![CDATA[
			
				
			
		
Today I went to devdays 2009 www.devdays.nl. Except from the terrible traffic it was a great day. A lot of good content and it was hard to make a choice on what session to go to. 
During the sessions I made notes on my new msi netbook. It worked great and only in the last [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D20"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D20&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>Today I went to devdays 2009 <a href="http://www.devdays.nl">www.devdays.nl</a>. Except from the terrible traffic it was a great day. A lot of good content and it was hard to make a choice on what session to go to. </p>
<p>During the sessions I made notes on my new msi netbook. It worked great and only in the last session suddenly shut down because the battery was low.&#160; I am posting my notes as is, so if it reads a bit clunky it is because it was written in a hurry. Feel free to ask questions or add content in the comments.</p>
<p>The sessions I went to on day one:</p>
<ul>
<li><a href="http://blog.softwarefun.nl/?p=19" target="_blank">C# 4.0 / The Future of C#</a> </li>
<li><a href="http://blog.softwarefun.nl/?p=18">Securing ASP.NET applications</a> </li>
<li><a href="http://blog.softwarefun.nl/?p=17">TDD and S.O.L.I.D</a> </li>
<li><a href="http://blog.softwarefun.nl/?p=16">Tasks threading and parallel programming</a> </li>
</ul>
<p>the session for day two I will be posting later.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=20</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DevDays 2009 day 1 C# 4.0 / The Future of C#</title>
		<link>http://blog.softwarefun.nl/?p=19</link>
		<comments>http://blog.softwarefun.nl/?p=19#comments</comments>
		<pubDate>Thu, 28 May 2009 20:08:29 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=19</guid>
		<description><![CDATA[
			
				
			
		
A small introduction for these posts you can find here.Today the first day of www.devdays.nl. the day started great with a broken Tom-tom and me taking a wrong turn in The Hague. So I missed the keynote.
First session &#34;C# 4.0 / The Future of C#&#34; http://tinyurl.com/qczdjs by Krishnan Subramanian. Krishnan likes to type code while [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D19"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D19&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>A small introduction for these posts you can find <a href="http://blog.softwarefun.nl/?p=20">here</a>.Today the first day of <a href="http://www.devdays.nl">www.devdays.nl</a>. the day started great with a broken Tom-tom and me taking a wrong turn in The Hague. So I missed the keynote.</p>
<p>First session &quot;C# 4.0 / The Future of C#&quot; <a href="http://tinyurl.com/qczdjs">http://tinyurl.com/qczdjs</a> by <a href="http://www.devdays.nl/sprekers/detail.aspx?id=a7a85025-59d8-4e33-ad15-77081552128d">Krishnan Subramanian</a>. Krishnan likes to type code while presenting, so it promised to be a fun session. Krishnan starts with a history lesson:</p>
<ul>
<li>C# 1.0 first managed Code </li>
<li>C# 2.0 Generics </li>
<li>C# 3.0 LINQ </li>
<li>C# 4.0 Dynamic programming </li>
</ul>
<p>trends now in C# declarative, dynamic, concurrency</p>
<p>We are programming very declarative, this creates a lot of noise. Finding out what the code does can be hard. A lot of details go into the how instead of the what. Krishnan uses linq to show that linq already has less noise. His non-technical girlfriend can understand a linq query.</p>
<p>Krishnan says that there is room for static and dynamics languages.</p>
<p>When you look at hardware trends,more and more multi processors machines are getting mainstream. C# 4.0 will give more possibilities for parallel programming. Krishnan demo’s this by using a LINQ ray tracer program this program is part of the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3&amp;displaylang=en" target="_blank">parallel extensions</a>. To make it parallel he only uses the .asParralel keyword on a LINQ query.</p>
<p>The themes for C# 4.0 are</p>
<ul>
<li>Dynamically typed objects </li>
<li>Optional and Named Parameters </li>
<li>improved COM interoperability </li>
<li>Co- and Contra-variance </li>
</ul>
<p>For some parts of the programs we write statically typed objects can get in your way. For these parts you can use dynamic typed features of the DLR. The DLR provides for expression trees, dynamic dispatch and call site caching. As an example Krishnan shows ugly C# reflection to determine a type and invoking a method and compares it to JavaScript and&#160; to c# use the dynamic keyword. The dynamic keyword is a much cleaner piece of code. In the demo he calls an iron python coded calculator form c# using the dynamic keyword. The add function can take any argument that exposes the + operator to function correctly, any argument compiles. The next demo shows writing a dynamicbag that is a child implementation of DynamicObject. In this demo he uses a dictionary that is holding the properties you can call on the object, these methods than can be added at build time from the calling code. So DynamicBag.MyCustomProp = 1 will create an entry in the dictionary the holds MyCustomProp and value 1, so this code works with some minor overriding of methods even if DynamicBag doesn’t have a property MyCustomProp.</p>
<p>The current way to use methods with less or more parameters is to use overloads. In C# 4.0 you have named and optional parameters. The optional parameter feature you can use by setting a default value to the parameter in the method declaration. When calling the method you can use named parameters this makes the code more readable.</p>
<p>For COM interop there are improvements:</p>
<ul>
<li>Dynamic mapping </li>
<li>Optional and named parameters </li>
<li>Indexed properties </li>
<li>Optional ref modifier </li>
<li>interop type embedding </li>
</ul>
<p>To explain Co- variance you can look at an array of strings and putting a button in it. This is co-variant but not safe. When looking at List&lt;String&gt; and Ienumarble&lt;object&gt; these cannot be cast to each other. In C#4.0 you can now use IEnumarable&lt;in T&gt; and IEnumarable&lt;out T&gt;. </p>
<p>In the future it might be possible to use the compiler as a service. Your program should be able to change compile behaviour.Krishnan shows a demo of code that will compile in the C# version that will come out after C# 4.0. In this he uses a CSharpEvaluator class with which he writes a program from strings. Using this he writes a command line c# interpreter. Kewl.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=19</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Attack and defence: Securing ASP.NET applications</title>
		<link>http://blog.softwarefun.nl/?p=18</link>
		<comments>http://blog.softwarefun.nl/?p=18#comments</comments>
		<pubDate>Thu, 28 May 2009 20:08:14 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=18</guid>
		<description><![CDATA[
			
				
			
		
A small introduction for these posts you can find here. Lunch at www.devdays.nl was well taken care of. Salmon sandwiches and plenty of them.
The next session for day 1 for me was “Attack and defence: Securing ASP.NET applications”&#160; http://www.devdays.nl/sessies/detail.aspx?code=SEC01KB By Keith Brown. ( http://twitter.com/keithbrown42 )
As a preface Keith showed us is jojo skills, pretty impressive.
According [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D18"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D18&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>A small introduction for these posts you can find <a href="http://blog.softwarefun.nl/?p=20">here</a>. Lunch at <a href="http://www.devdays.nl">www.devdays.nl</a> was well taken care of. Salmon sandwiches and plenty of them.</p>
<p>The next session for day 1 for me was “Attack and defence: Securing ASP.NET applications”&#160; <a title="http://www.devdays.nl/sessies/detail.aspx?code=SEC01KB" href="http://www.devdays.nl/sessies/detail.aspx?code=SEC01KB">http://www.devdays.nl/sessies/detail.aspx?code=SEC01KB</a> By <a href="http://www.devdays.nl/sprekers/detail.aspx?id=b7cdfb78-3f4c-43a4-9efe-7227292ab525">Keith Brown</a>. ( <a href="http://twitter.com/keithbrown42">http://twitter.com/keithbrown42</a> )</p>
<p>As a preface Keith showed us is jojo skills, pretty impressive.</p>
<p>According to Keith in security you need to find a balance. You need to start by thread modelling. You can find info from P&amp;P <a href="http://www.msdn.com/securityguidance">http://www.msdn.com/securityguidance</a>.</p>
<p>tips:</p>
<ol>
<li>principle of minimum privileges. Don’t use the network&#160; service account, create your own account </li>
<li>do security in depth,&#160; assume all input is evil. Do security validation on the server. </li>
<li>put user input quickly in strongly typed variables don’t keep them in strings to long </li>
<li>don’t use regex without ^ and $, otherwise people still can insert stuff . </li>
<li>use sql parameters , don’t concatenate input in your query. </li>
<li>don’t show complete error messages, put the in the log and give the user the possibility to correlate there error with the log. </li>
<li>using a maximum length in textboxes doesn’t help. Use server side validation </li>
</ol>
<p>If you use validation controls you need to program them correctly. You need the check on the server side the IsValid property.</p>
<p>Viewstate by default gets hashed and checked on tampering. Cookies don’t get this, form login cookies do.</p>
<p>printf(a,b,c,d) has a big security issue (not console,writeline()) a is a control channel, the rest is a data channel. Don’t give up control of the control channel. Equal so Proces.Start(a,b) and sql.commandtext = a.</p>
<p>demo on sql- injection (people have automated this)</p>
<ul>
<li>in a search box start with a ‘ and see if you get an error (if it is a string, for a number you don’t need it. </li>
<li>use ‘ or 1=1 – to get all the rows </li>
<li>do ‘union select null,null,null (keep adding rows) </li>
<li>replace a null with intersting stuf @@version, username, tables from table_schema </li>
<li>if there is a user table, select emails and passwords and put them in an excell sheet. </li>
<li>change price </li>
<li>exec xp_cmdshell ‘net user hacker password /add’ </li>
</ul>
<p>Keith his anti virus software wanted to let the entire audience know that it was out of date during the presentation.</p>
<p>To test for XSS protection turn of validateRequest and see if your application can handle it. Web.config Demo:</p>
<ul>
<li>put in a textbox &lt;h2&gt;test&lt;h2&gt; see if the formatting is kept. </li>
<li>put forms, JavaScript and what you want in the textbox (example change logo to Google) </li>
<li>when an error page is show that get’s its message from the query string, you can use this to enhance a phishing attack. </li>
</ul>
<p>To fix the problem sandbox the output. When getting the data out of the database use HttpUtility.HtmlEncode(data). On the input side filter the input.</p>
<p>get free modules and examples form <a href="http://www.pluralsight.com/main/olt/Module.aspx?a=keith-brown&amp;n=aspdotnet-security&amp;cn=aspdotnet-fundamentals" target="_blank">pluralsight</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=18</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DevDays 2009 day 1 TDD and S.O.L.I.D</title>
		<link>http://blog.softwarefun.nl/?p=17</link>
		<comments>http://blog.softwarefun.nl/?p=17#comments</comments>
		<pubDate>Thu, 28 May 2009 20:08:03 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=17</guid>
		<description><![CDATA[
			
				
			
		
A small introduction for these posts you can find here. My third session was a wildcard session by Dennis Doomen on TDD and S.O.L.I.D. Even though the room wasn’t on the map and the session wasn’t on the session overview the room was packed.
People who didn’t know what inheritance is, were asked to leave.
Dennis uses [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D17"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D17&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>A small introduction for these posts you can find <a href="http://blog.softwarefun.nl/?p=20">here</a>. My third session was a wildcard session by Dennis Doomen on TDD and S.O.L.I.D. Even though the room wasn’t on the map and the session wasn’t on the session overview the room was packed.</p>
<p>People who didn’t know what inheritance is, were asked to leave.</p>
<p>Dennis uses a definition by Michael Feathers to define quality. You must be able to write a unit test of your code within five minutes. There are multiple principles you can use, Dennis is going to focus on some of them:</p>
<ul>
<li>TDD </li>
<li>S.O.L.I.D </li>
</ul>
<p>TDD is a design process, tests are your first users, tests can be documentation. If TDD hurts you are doing it wrong.</p>
<p>For S.O.L.I.D I say read the <a href="http://www.amazon.co.uk/Principles-Patterns-Practices-Robert-Martin/dp/0131857258/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1243543743&amp;sr=1-1" target="_blank">book</a> by Uncle Bob Martin. Dennis gives an introduction.</p>
<p>In the demo Dennis an aaa template for creating unit tests.( Arrange, Act, Assert) For naming he follows a Should_When naming convention. During the demo, Resharper and RhinoMocks prove their usefulness. Make unit tests intention revealing.</p>
<p>An extra tip from Dennis, it is possible to decorate your unit tests with the workitem attribute, this will couple the unit test with a workitem in TFS.</p>
<p>The samples are posted on Dennis’s <a href="http://www.dennisdoomen.net/">blog</a>.</p>
<p>It was a nice session with enough interaction. I would like to see this talk held in a room full of none believers though but then with enough time to discuss. For a nice simple introduction to S.O.L.I.D watch the dimecast <a href="http://www.dimecasts.net/Casts/ByTag/SOLID%20Principle" target="_blank">screencasts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=17</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DevDays 2009 day 1 Tasks threading and parallel programming.</title>
		<link>http://blog.softwarefun.nl/?p=16</link>
		<comments>http://blog.softwarefun.nl/?p=16#comments</comments>
		<pubDate>Thu, 28 May 2009 20:07:48 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=16</guid>
		<description><![CDATA[
			
				
			
		
A small introduction for these posts you can find here. The last session of the day was by&#160; Ingo Rammer about parallel programming in .Net 4.0.
The slides and code of this session will be under conferences on http://www.thinktecture.com/.
Multithreading vs Parallelism. Multithreading is easy, just call Thread.start(). It is primarily used to keep the ui responsive.Parallel [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D16"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D16&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>A small introduction for these posts you can find <a href="http://blog.softwarefun.nl/?p=20">here</a>. The last <a href="http://www.devdays.nl/sessies/detail.aspx?code=NET03IR" target="_blank">session</a> of the day was by&#160; <a href="http://www.devdays.nl/sprekers/detail.aspx?id=6c273687-aefb-4a60-9a2f-8be030eabc7f">Ingo Rammer</a> about parallel programming in .Net 4.0.</p>
<p>The <a href="http://static.thinktecture.com/conferences/TasksThreadingAndParallel.zip" target="_blank">slides and code</a> of this session will be under conferences on <a title="http://www.thinktecture.com/" href="http://www.thinktecture.com/">http://www.thinktecture.com/</a>.</p>
<p>Multithreading vs Parallelism. Multithreading is easy, just call Thread.start(). It is primarily used to keep the ui responsive.Parallel programming is used to maximally use the cores that are available.</p>
<p>The ray traces sample comes form the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3&amp;displaylang=en" target="_blank">parallel extensions</a>.</p>
<p>Ingo shows a demo walking a large tree structure and visualizing this. The first version uses no threading and takes about 1500 ms to complete. In the second version he tries to make a thread for every node. This version blows up, every thread takes up one mb of memory. The third version uses Threadpool.QueueUeserWorkitem, timing is off now because the threads are fire and forget. The fourth version works with the new tasks from the parallel extensions. This version does the work in about 800ms.</p>
<p>More functionality of the Task is making the creation possible using a factory (shorter, cleaner code). Also the results of a task can be simply used, all synchronization is done for you. In the demo he sums up all values in the tree without having to worry about synchronisation.</p>
<p>After that my netbook just closed down. Basically Ingo covered three ways to do parallel programming in C# 4.0.</p>
<ul>
<li>Fine-Grained Parallelism: Task-API and coordination structures (the foundation of it all)</li>
<li>Structured Parallelism: Parallel</li>
<li>Declarative Parallelism: PLINQ</li>
</ul>
<p>Ingo is a great speaker and made this last session while everybody was tired still fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=16</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SharpDevelop 3.0 vs Visual Studio Express edition</title>
		<link>http://blog.softwarefun.nl/?p=10</link>
		<comments>http://blog.softwarefun.nl/?p=10#comments</comments>
		<pubDate>Sun, 15 Feb 2009 15:55:47 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Express Editions]]></category>
		<category><![CDATA[SharpDevelop]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=10</guid>
		<description><![CDATA[
			
				
			
		
For developers who&#160; don’t know, SharpDevelop is a great free IDE for developing .Net framework applications. SharpDevelop is comparable to the express editions of Visual Studio. So since they are comparable, I will compare them in this post.
On februari the 10th 2009 sharpdevelop 3.0 was released, you can download it here. The version before this [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D10"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D10&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>For developers who&#160; don’t know, SharpDevelop is a great free IDE for developing .Net framework applications. SharpDevelop is comparable to the express editions of Visual Studio. So since they are comparable, I will compare them in this post.</p>
<p>On februari the 10th 2009 sharpdevelop 3.0 was released, you can download it <a href="http://www.icsharpcode.net/OpenSource/SD/Download/" target="_blank">here</a>. The version before this one was 2.2 and was released on the 8th of august of 2007, that is a long gap. I thought that SharpDevelop was dead. The 3.0 version shows that it is alive and kicking.     <br />The visual studio express editions are also great. Just the idea of giving away a free IDE to starting developers or just developers who can’t or will not pay for the full editions&#160; of Visual Studio is magnificent. The express editions can be found <a href="http://www.microsoft.com/express/product/" target="_blank">here</a></p>
<p><strong>First Impressions      <br /></strong>When you spent a lot of time in Visual Studio, starting up the express editions will make you feel right at home. Everything is where you think it is. Stating SharpDevelop will make you feel a bid off. It is like someone has build a new house, redecorated it and made it look like your own house, but you know it isn’t. Still once you see there is enough beer in the fridge and have found the remote , you can have lot of fun in the new house also.     <br /><a title="ExpressFirstImpression" href="http://softwarefun.nl/wordpress/wp-content/uploads/2009/02/express.jpg"><img alt="ExpressFirstImpression" src="http://softwarefun.nl/wordpress/wp-content/uploads/2009/02/express.jpg" /></a>     <br /><strong>Spoiled by Resharper      <br /></strong>In my normal development I am totally spoiled by Resharper. These IDE’s don’t support Resharper. How easy are they to use without Resharper.     <br />Renaming a class with Resharper&#160; also renames the file that the class is in, if you want it to. Resharper also renames all references to your renamed class and even gives you a change to change them in comments AND strings. SharpDevelop does not rename the file directly but if it detects that the class and filename are different it gives you the option to rename the file from right clicking the class name. SharpDevelop does also rename all references but does not look at comments by default. The Express Editions give the option to rename also in comments OR strings, it does not rename the filename.</p>
<p>When I use a class that is in the same solution but in another project Resharper gives me the option to reference the project and insert a using statement with a single shortcut. After making a reference in SharpDevelop and the Express Editions by hand you can add the using statement with a right and left click.</p>
<p>In general neither wins, only Resharper wins.</p>
<p><strong>Add Ins and external tools      <br /></strong>The express editions let you define your own external tools, so you can startup notepad or ildasm from your IDE and pass in parameters from your IDE. SharpDevelop lets you do the same but by default has already defined some of them. Extra to this SharpDevelop has a Regular Expression Toolkit a resource toolkit, support for subversion, FXCop and stylecop. I can see a lot more of these add- ins for SharpDevelop being developed. The express editions don’t have and probably never will have these possibilities because , and I quote :” We made a business decision to not allow 3rd party extensibility in Express.” From <a href="http://blogs.msdn.com/danielfe/archive/2007/05/31/visual-studio-express-and-testdriven-net.aspx" target="_blank">this </a>post.</p>
<p>SharpDevelop wins this one easily.</p>
<p><strong>Targeting .net frameworks      <br /></strong>Both IDE’s by default target .net Framework 3.5 but also support 3.0 and 2.0. In addition SharpDevelop supports compact framework 3.5 and 2.0.</p>
<p>Another point for SharpDevelop.</p>
<p><strong>Web Development      <br /></strong>This one makes me a little sad. SharpDevelop just fails short to the “visual web developer express edition”. The express edition has a graphical designer for the pages, split screen functionality, javascript debugging possibilities and his build in web server. SharpDevelop has not.</p>
<p>A big win for the express editions.</p>
<p><strong>Little Annoyances      <br /></strong>The express editions don’t support solution folders, luckily SharpDevelop does.     <br />If you want to combine a console or windows forms application with a web application or web service in a single solution the express edition don’t support this,&#160; SharpDevelop does.</p>
<p>Two point for SharpDevelop.</p>
<p><strong>Conlusion      <br /></strong>If I have to choose for web applications than the express edition wins easily. The build in webserver, the graphical designer with split screen functionality and javascript debugging just make it too good.     <br />If you think you really need to work with a database from within the IDE than also SharpDevelop is not for you. If you want to create a windows forms or console application both will work fine, if you want to build these applications more seriously and use a source control system, static code analysis and stylecop from the IDE you need SharpDevelop !</p>
<p>If the express editions would allow third party extensibility (Resharper) and solve my little annoyances,&#160; it would be number one.    <br />If SharpDevelop would get a resharper add-in, a graphical designer for web pages and a build in web server, it would be number one.</p>
<p><strong>Feature Table      <br /></strong>Matt Ward did a comparison of SharpDevelop 2.1 and the Express Editions at that time <a href="http://community.sharpdevelop.net/blogs/mattward/pages/VisualStudioExpressComparison.aspx" target="_blank">here</a>. I stole his table and reevaluated. Thanks Matt I hope you don’t mind. The result is shown below:</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); border-top: black 1pt solid; padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt"><strong>Feature<o:p></o:p></strong></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); border-left-color: rgb(240,240,240); border-top: black 1pt solid; padding-top: 0cm" valign="top" width="166"><strong><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">SharpDevelop </span></strong><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">3.0<strong><o:p></o:p></strong></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-top: black 1pt solid; border-right: black 1pt solid; padding-top: 0cm" valign="top"><strong><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Visual Studio Express Editions<o:p></o:p></span></strong></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Code auto-completion<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Code syntax highlighting<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Windows Forms Designer<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Web Forms Designer<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Provided with Visual Web Developer<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Code Coverage<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Unit Testing<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Languages Supported<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">C#, VB.NET, Boo,F#, Python, ILASM<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">C#, C++, VB.NET, J#<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Help documentation<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Plug-in support<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">No explicit support for plug-ins however third party plug-ins can work with the Express edition.<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Insert PInvoke Signatures<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Testing Regular Expressions<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Class View<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Solution Explorer<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Project and Solution File Format<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">MSBuild<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">MSBuild<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Web references<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Refactorings<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Rename, Extract Method, Extract Interface<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Rename, Extract Method<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Go to definition<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Find References<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Code generation<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Yes. Not as powerful as Visual Studio&#8217;s Code Snippet Manager.<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Object Browser<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Database Explorer<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Yes. Lacking support for many database providers.<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Publishing<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Data Sources View<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Add Data Source Wizard<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Document Outline View<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Resources<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Local only<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Local and project<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">ActiveX Toolbox Items<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Partial &#8211; need to generate .NET interop library<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Integrated debugger<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Targeting different .NET frameworks<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Code Completion for different .NET frameworks<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Reporting<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Yes through the report viewer plug-in<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Task List<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Error List<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Database Designer Tools<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Code conversion<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Integrated NAnt support<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Integrated WiX support<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Integrated FxCop support<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Navigation History<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">XPath Queries<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Incremental Search<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">XML documentation preview and generation<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Solution Folders<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Class Diagram<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom-color: rgb(240,240,240); border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Build in webserver<o:p></o:p></span></td>
<td style="border-bottom-color: #f0f0f0; padding-bottom: 0cm; background-color: transparent; border-top-color: #f0f0f0; padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: #f0f0f0; border-left-color: #f0f0f0; padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
<td style="border-bottom-color: rgb(240,240,240); padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
</tr>
<tr>
<td style="border-bottom: black 1pt solid; border-left: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 161.35pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="215"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt" lang="EN-US">Integrated subversion support<o:p></o:p></span></td>
<td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; width: 124.45pt; padding-right: 5.4pt; border-right-color: rgb(240,240,240); border-left-color: rgb(240,240,240); padding-top: 0cm" valign="top" width="166"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">Yes<o:p></o:p></span></td>
<td style="border-bottom: black 1pt solid; padding-bottom: 0cm; background-color: transparent; border-top-color: rgb(240,240,240); padding-left: 5.4pt; padding-right: 5.4pt; border-left-color: rgb(240,240,240); border-right: black 1pt solid; padding-top: 0cm" valign="top"><span style="font-family: &#39;Times New Roman&#39;,&#39;serif&#39;; font-size: 12pt">No<o:p></o:p></span></td>
</tr>
</tbody>
</table>
<p><span lang="EN-US"><o:p><font face="Calibri">&#160;</font></o:p></span><span lang="EN-US"><o:p><font face="Calibri">&#160;</font></o:p></span><span lang="EN-US"><o:p><a title="SharpDevelopFirstImpression" href="http://softwarefun.nl/wordpress/wp-content/uploads/2009/02/sharpdevelop.jpg"><img alt="SharpDevelopFirstImpression" src="http://softwarefun.nl/wordpress/wp-content/uploads/2009/02/sharpdevelop.jpg" /></a></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=10</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why I love twitter</title>
		<link>http://blog.softwarefun.nl/?p=9</link>
		<comments>http://blog.softwarefun.nl/?p=9#comments</comments>
		<pubDate>Fri, 12 Dec 2008 12:14:53 +0000</pubDate>
		<dc:creator>Kees Dijk</dc:creator>
				<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://blog.softwarefun.nl/?p=9</guid>
		<description><![CDATA[
			
				
			
		
Twitter is fun, and there are a lot of interesting people. Most of them are pretty open for discussion and just having fun. A lot of these people have interesting stuff to say and are willing to answer questions.
A few days now I watched crazeegeekchick  make santahats for almost everybody she knows, I guess [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D9"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fblog.softwarefun.nl%2F%3Fp%3D9&amp;source=KeesDijk&amp;style=normal&amp;service=TinyURL.com" height="61" width="50" /><br />
			</a>
		</div>
<p>Twitter is fun, and there are a lot of interesting people. Most of them are pretty open for discussion and just having fun. A lot of these people have interesting stuff to say and are willing to answer questions.</p>
<p>A few days now I watched <a href="http://twitter.com/crazeegeekchick" title="crazeegeekchick" target="_blank">crazeegeekchick</a> <a href="http://twitter.com/account/profile_image/crazeegeekchick"><img src="http://s3.amazonaws.com/twitter_production/profile_images/67110952/santadana_bigger.jpg" id="profile-image" valign="middle" border="0" /></a> make santahats for almost everybody she knows, I guess she is up to about fifty hats now. I asked her to also make a hat for my son, she did without asking any questions. Threw in a hat for me also and gave a nice compliment. Awesome !</p>
<p>crazeegeekchick thanks ! You are one of the people making Twitter fun.</p>
<p><a href="http://softwarefun.nl/wordpress/wp-content/uploads/2008/12/ikke_santa.png" title="MySonAndISantanized"></a></p>
<p style="text-align: center"><a href="http://softwarefun.nl/wordpress/wp-content/uploads/2008/12/ikke_santa.png" title="MySonAndISantanized"><img src="http://softwarefun.nl/wordpress/wp-content/uploads/2008/12/ikke_santa.png" alt="MySonAndISantanized" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.softwarefun.nl/?feed=rss2&amp;p=9</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
