<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Maximum C#</title>
	<atom:link href="http://maximumcs.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://maximumcs.wordpress.com</link>
	<description>Programming is a passion not a job</description>
	<lastBuildDate>Wed, 02 Nov 2011 10:04:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='maximumcs.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Maximum C#</title>
		<link>http://maximumcs.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://maximumcs.wordpress.com/osd.xml" title="Maximum C#" />
	<atom:link rel='hub' href='http://maximumcs.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Announcing release of ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix</title>
		<link>http://maximumcs.wordpress.com/2011/01/17/announcing-release-of-asp-net-mvc-3/</link>
		<comments>http://maximumcs.wordpress.com/2011/01/17/announcing-release-of-asp-net-mvc-3/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 10:15:54 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[ASP.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[dot NET]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Razor]]></category>
		<category><![CDATA[VS2010]]></category>
		<category><![CDATA[WebMatrix]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/?p=120</guid>
		<description><![CDATA[Announcing release of ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix I’m excited to announce the release today of several products: ASP.NET MVC 3 NuGet IIS Express 7.5 SQL Server Compact Edition 4 Web Deploy and Web Farm Framework 2.0 Orchard 1.0 WebMatrix 1.0 The above products are all free. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=120&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Announcing release of ASP.NET MVC 3, IIS Express, SQL CE 4, Web Farm Framework, Orchard, WebMatrix</h2>
<p><span style="font-family:arial;font-size:x-small;">I’m excited to announce the release today of several products:</span></p>
<ul>
<li>ASP.NET MVC 3</li>
<li>NuGet</li>
<li>IIS Express 7.5</li>
<li>SQL Server Compact Edition 4</li>
<li>Web Deploy and Web Farm Framework 2.0</li>
<li>Orchard 1.0</li>
<li>WebMatrix 1.0</li>
</ul>
<p>The above products are all free. They build upon the <a href="http://weblogs.asp.net/scottgu/archive/2010/04/12/visual-studio-2010-and-net-4-released.aspx" target="_blank">.NET 4 and VS 2010</a> release, and add a ton of additional value to ASP.NET (both Web Forms and MVC) and the Microsoft Web Server stack.</p>
<h3><span id="more-120"></span><span style="text-decoration:underline;">ASP.NET MVC 3</span></h3>
<p>Today we are shipping the final release of ASP.NET MVC 3.  You can download and install ASP.NET MVC 3 <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d2928bc1-f48c-4e95-a064-2a455a22c8f6&amp;displaylang=en" target="_blank">here</a>.  The ASP.NET MVC 3 source code (released under an OSI-compliant open source license) can also optionally be downloaded <a href="http://download.microsoft.com/download/3/4/A/34A8A203-BD4B-44A2-AF8B-CA2CFCB311CC/mvc3-rtm-mspl.zip" target="_blank">here</a>.</p>
<p>ASP.NET MVC 3 is a significant update that brings with it a bunch of great features.  Some of the improvements include:</p>
<h3><strong><span style="text-decoration:underline;">Razor</span></strong></h3>
<p>ASP.NET  MVC 3 ships with a new view-engine option called “Razor” (in addition  to continuing to support/enhance the existing .aspx view engine).  Razor  minimizes the number of characters and keystrokes required when writing  a view template, and enables a fast, fluid coding workflow.</p>
<p>Unlike  most template syntaxes, with Razor you do not need to interrupt your  coding to explicitly denote the start and end of server blocks within  your HTML. The Razor parser is smart enough to infer this from your  code. This enables a compact and expressive syntax which is clean, fast  and fun to type.</p>
<p>You can learn more about Razor from some of the blog posts I’ve done about it over the last 6 months</p>
<ul>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx" target="_blank">Introducing Razor</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/10/19/asp-net-mvc-3-new-model-directive-support-in-razor.aspx" target="_blank">New @model keyword in Razor</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx" target="_blank">Layouts with Razor</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/11/12/asp-net-mvc-3-server-side-comments-with-razor.aspx">Server-Side Comments with Razor</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/12/15/asp-net-mvc-3-razor-s-and-lt-text-gt-syntax.aspx" target="_blank">Razor’s @: and &lt;text&gt; syntax</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/12/16/asp-net-mvc-3-implicit-and-explicit-code-nuggets-with-razor.aspx" target="_blank">Implicit and Explicit code nuggets with Razor</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx" target="_blank">Layouts and Sections with Razor</a></li>
</ul>
<p>Today’s  release supports full code intellisense support for Razor (both VB and  C#) with Visual Studio 2010 and the free Visual Web Developer 2010  Express.</p>
<h3><strong><span style="text-decoration:underline;">JavaScript Improvements</span></strong></h3>
<p>ASP.NET MVC 3 enables richer JavaScript scenarios and takes advantage of emerging HTML5 capabilities.</p>
<p>The AJAX and Validation helpers in ASP.NET MVC 3 now use an <a href="http://www.jeremyskinner.co.uk/2010/12/27/unobtrusive-ajax-helpers-in-mvc3/" target="_blank">Unobtrusive JavaScript</a> based approach.  Unobtrusive JavaScript avoids injecting inline  JavaScript into HTML, and enables cleaner separation of behavior using  the new HTML 5 “data-“ attribute convention (which conveniently works on  older browsers as well – including IE6). This keeps your HTML tight and  clean, and makes it easier to optionally swap out or customize JS  libraries.</p>
<p>ASP.NET MVC 3 now includes built-in support for <a href="http://yobriefcase.posterous.com/aspnet-mvc3s-jsonvalueproviderfactory" target="_blank">posting JSON-based parameters</a> from client-side JavaScript to action methods on the server.  This  makes it easier to exchange data across the client and server, and build  rich JavaScript front-ends.  We think this capability will be  particularly useful going forward with scenarios involving <a href="http://weblogs.asp.net/scottgu/archive/2010/05/07/jquery-templates-and-data-linking-and-microsoft-contributing-to-jquery.aspx">client templates and data binding</a> (including the <a href="http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data-link-and-globalization-accepted-as-official-jquery-plugins.aspx" target="_blank">jQuery plugins the ASP.NET team recently contributed</a> to the jQuery project).</p>
<p>Previous  releases of ASP.NET MVC included the core jQuery library.  ASP.NET MVC 3  also now ships the jQuery Validate plugin (which our validation helpers  use for client-side validation scenarios).  We are also now shipping  and including jQuery UI by default as well (which provides a rich set of  client-side JavaScript UI widgets for you to use within projects).</p>
<h3><strong><span style="text-decoration:underline;">Improved Validation</span></strong></h3>
<p>ASP.NET MVC 3 includes a bunch of validation enhancements that make it even easier to work with data.</p>
<p>Client-side  validation is now enabled by default with ASP.NET MVC 3 (using an  onbtrusive javascript implementation).  Today’s release also includes  built-in support for <a href="http://davidhayden.com/blog/dave/archive/2011/01/04/ASPNETMVC3RemoteValidationTutorial.aspx" target="_blank">Remote Validation</a> &#8211; which enables you to annotate a model class with a validation  attribute that causes ASP.NET MVC to perform a remote validation call to  a server method when validating input on the client.</p>
<p>The  validation features introduced within .NET 4’s  System.ComponentModel.DataAnnotations namespace are now supported by  ASP.NET MVC 3.  This includes support for the new <a href="http://weblogs.asp.net/scottgu/archive/2010/12/10/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3.aspx" target="_blank">IValidatableObject interface</a> – which enables you to perform model-level validation, and allows you  to provide validation error messages specific to the state of the  overall model, or between two properties within the model.</p>
<p>ASP.NET  MVC 3 also supports the improvements made to the ValidationAttribute  class in .NET 4.  ValidationAttribute now supports a new IsValid  overload that provides more information about the current validation  context, such as what object is being validated.  This enables richer  scenarios where you can validate the current value based on another  property of the model.  We’ve shipped a <a href="http://davidhayden.com/blog/dave/archive/2011/01/01/CompareAttributeASPNETMVC3.aspx" target="_blank">built-in [Compare] validation attribute</a> with ASP.NET MVC 3 that uses this support and makes it easy out of the box to compare and validate two property values.</p>
<p>You  can use any data access API or technology with ASP.NET MVC.  This past  year, though, we’ve worked closely with the .NET data team to ensure  that the new <a href="http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx" target="_blank">EF Code First library</a> works really well for ASP.NET MVC applications.  These <a href="http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx" target="_blank">two</a> <a href="http://weblogs.asp.net/scottgu/archive/2010/12/10/class-level-model-validation-with-ef-code-first-and-asp-net-mvc-3.aspx" target="_blank">posts</a> of mine cover the latest EF Code First preview and demonstrates how to  use it with ASP.NET MVC 3 to enable easy editing of data (with end to  end client+server validation support).  The final release of EF Code  First will ship in the next few weeks.</p>
<p>Today we are also  publishing the first preview of a new MvcScaffolding project.  It  enables you to easily scaffold ASP.NET MVC 3 Controllers and Views, and  works great with EF Code-First (and is pluggable to support other data  providers).  You can learn more about it – and install it via NuGet  today &#8211; from <a href="http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffolding-package/" target="_blank">Steve Sanderson’s MvcScaffolding blog post</a>.</p>
<h3><strong><span style="text-decoration:underline;">Output Caching</span></strong></h3>
<p>Previous releases of ASP.NET MVC supported output caching content at a URL or action-method level.</p>
<p>With  ASP.NET MVC V3 we are also enabling support for partial page output  caching – which allows you to easily output cache regions or fragments  of a response as opposed to the entire thing.  This ends up being super  useful in a lot of scenarios, and enables you to dramatically reduce the  work your application does on the server.</p>
<p>The new partial  page output caching support in ASP.NET MVC 3 enables you to easily  re-use cached sub-regions/fragments of a page across multiple URLs on a  site.  It supports the ability to cache the content either on the  web-server, or optionally cache it within a distributed cache server  like Windows Server AppFabric or memcached.</p>
<p>I’ll post some  tutorials on my blog that show how to take advantage of ASP.NET MVC 3’s  new output caching support for partial page scenarios in the future.</p>
<h3><strong><span style="text-decoration:underline;">Better Dependency Injection</span></strong></h3>
<p>ASP.NET  MVC 3 provides better support for applying Dependency Injection (DI)  and integrating with Dependency Injection/IOC containers.</p>
<p>With  ASP.NET MVC 3 you no longer need to author custom ControllerFactory  classes in order to enable DI with Controllers.  You can instead just  register a Dependency Injection framework with ASP.NET MVC 3 and it will  resolve dependencies not only for Controllers, but also for Views,  Action Filters, Model Binders, Value Providers, Validation Providers,  and Model Metadata Providers that you use within your application.</p>
<p>This makes it much easier to cleanly integrate dependency injection within your projects.</p>
<h3><strong><span style="text-decoration:underline;">Other Goodies</span></strong></h3>
<p>ASP.NET  MVC 3 includes dozens of other nice improvements that help to both  reduce the amount of code you write, and make the code you do write  cleaner.  Here are just a few examples:</p>
<ul>
<li>Improved New Project dialog that makes it easy to start new ASP.NET MVC 3 projects from templates.</li>
<li>Improved Add-&gt;View Scaffolding support that enables the generation of even cleaner view templates.</li>
<li>New ViewBag property that uses .NET 4’s dynamic support to make it easy to pass late-bound data from Controllers to Views.</li>
<li>Global  Filters support that allows specifying cross-cutting filter attributes  (like [HandleError]) across all Controllers within an app.</li>
<li>New [AllowHtml] attribute that allows for more granular request validation when binding form posted data to models.</li>
<li>Sessionless controller support that allows fine grained control over whether SessionState is enabled on a Controller.</li>
<li>New ActionResult types like HttpNotFoundResult and <a href="http://davidhayden.com/blog/dave/archive/2010/12/29/AspNetMvc3RedirectPermanentSEO.aspx" target="_blank">RedirectPermanent</a> for common HTTP scenarios.</li>
<li>New Html.Raw() helper to indicate that output should not be HTML encoded.</li>
<li>New Crypto helpers for salting and hashing passwords.</li>
<li>And much, much more…</li>
</ul>
<h3><span style="text-decoration:underline;"><strong>Learn More about ASP.NET MVC 3</strong></span></h3>
<p>We will be posting lots of tutorials and samples on the <a href="http://asp.net/mvc" target="_blank">http://asp.net/mvc</a> site in the weeks ahead.  Below are two good ASP.NET MVC 3 tutorials available on the site today:</p>
<ul>
<li><a href="http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs" target="_blank">Build your First ASP.NET MVC 3 Application</a>: <a href="http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-vb" target="_blank">VB</a> and <a href="http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs" target="_blank">C#</a></li>
<li><a href="http://www.asp.net/mvc/tutorials/mvc-music-store-part-1" target="_blank">Building the ASP.NET MVC 3 Music Store</a></li>
</ul>
<p>We’ll post additional ASP.NET MVC 3 tutorials and videos on the <a href="http://asp.net/mvc">http://asp.net/mvc</a> site in the future. Visit it regularly to find new tutorials as they are published.</p>
<h3><strong><span style="text-decoration:underline;">How to Upgrade Existing Projects</span></strong></h3>
<p>ASP.NET  MVC 3 is compatible with ASP.NET MVC 2 – which means it should be easy  to update existing MVC projects to ASP.NET MVC 3.</p>
<p>The new  features in ASP.NET MVC 3 build on top of the foundational work we’ve  already done with the MVC 1 and MVC 2 releases – which means that the  skills, knowledge, libraries, and books you’ve acquired are all directly  applicable with the MVC 3 release.  MVC 3 adds new features and  capabilities – it doesn’t obsolete existing ones.</p>
<p>You can upgrade existing ASP.NET MVC 2 projects by following the <a href="http://go.microsoft.com/fwlink/?LinkID=208140" target="_blank">manual upgrade steps in the release notes</a>.  Alternatively, you can use this <a href="http://blogs.msdn.com/b/marcinon/archive/2011/01/13/mvc-3-project-upgrade-tool.aspx" target="_blank">automated ASP.NET MVC 3 upgrade tool</a> to easily update your  existing projects.</p>
<h3><strong><span style="text-decoration:underline;">Localized Builds</span></strong></h3>
<p>Today’s  ASP.NET MVC 3 release is available in English.  We will be releasing  localized versions of ASP.NET MVC 3 (in 9 languages) in a few days.   I’ll blog pointers to the localized downloads once they are available.</p>
<h3><span style="text-decoration:underline;">NuGet</span></h3>
<p>Today  we are also shipping NuGet – a free, open source, package manager that  makes it easy for you to find, install, and use open source libraries in  your projects. It works with all .NET project types (including ASP.NET  Web Forms, ASP.NET MVC, WPF, WinForms, Silverlight, and Class  Libraries).  You can download and install it <a href="http://nuget.org/" target="_blank">here</a>.</p>
<p>NuGet  enables developers who maintain open source projects (for example, .NET  projects like Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor,  Raven, Elmah, etc) to package up their libraries and register them with  an online gallery/catalog that is searchable.  The client-side NuGet  tools – which include full Visual Studio integration – make it trivial  for any .NET developer who wants to use one of these libraries to easily  find and install it within the project they are working on.</p>
<p>NuGet  handles dependency management between libraries (for example: library1  depends on library2). It also makes it easy to update (and optionally  remove) libraries from your projects later. It supports updating  web.config files (if a package needs configuration settings). It also  allows packages to add PowerShell scripts to a project (for example:  scaffold commands). Importantly, NuGet is transparent and clean – and  does not install anything at the system level. Instead it is focused on  making it easy to manage libraries you use with your projects.</p>
<p>Our goal with NuGet is to make it as simple as possible to integrate open source libraries within .NET projects.</p>
<h3><span style="text-decoration:underline;"><strong>NuGet Gallery</strong></span></h3>
<p>This week we also launched a beta version of the <a href="http://nuget.org/">http://nuget.org</a> web-site – which allows anyone to easily search and browse an online  gallery of open source packages available via NuGet.  The site also now  allows developers to optionally submit new packages that they wish to  share with others.  You can learn more about how to create and share a  package <a href="http://haacked.com/archive/2011/01/12/uploading-packages-to-the-nuget-gallery.aspx" target="_blank">here</a>.</p>
<p>There are hundreds of open-source .NET projects already within the <a href="http://nuget.org/" target="_blank">NuGet Gallery</a> today.  We hope to have thousands there in the future.</p>
<h3><span style="text-decoration:underline;">IIS Express 7.5</span></h3>
<p>Today  we are also shipping IIS Express 7.5.  IIS Express is a free version of  IIS 7.5 that is optimized for developer scenarios.  It works for both  ASP.NET Web Forms and ASP.NET MVC project types.</p>
<p>We think IIS  Express combines the ease of use of the ASP.NET Web Server (aka Cassini)  currently built-into Visual Studio today with the full power of IIS.   Specifically:</p>
<ul>
<li>It’s lightweight and easy to install (less than 5Mb download and a quick install)</li>
<li>It <span style="text-decoration:underline;">does not</span> require an administrator account to run/debug applications from Visual Studio</li>
<li>It enables a <span style="text-decoration:underline;">full web-server feature set</span> – including SSL, URL Rewrite, and other IIS 7.x modules</li>
<li>It supports and enables the same extensibility model and web.config file settings that IIS 7.x support</li>
<li>It  can be installed side-by-side with the full IIS web server as well as  the ASP.NET Development Server (they do not conflict at all)</li>
<li>It  works on Windows XP and higher operating systems – giving you a full  IIS 7.x developer feature-set on all Windows OS platforms</li>
</ul>
<p>IIS Express (like the ASP.NET Development Server) can be quickly launched to run a site from a directory on disk.  It <span style="text-decoration:underline;">does not</span> require any registration/configuration steps. This makes it really easy  to launch and run for development scenarios.  You can also optionally  redistribute IIS Express with your own applications if you want a  lightweight web-server.  The standard IIS Express EULA now includes  redistributable rights.</p>
<p>Visual Studio 2010 SP1 adds support for IIS Express.  Read my <a href="http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx" target="_blank">VS 2010 SP1 and IIS Express blog post</a> to learn more about what it enables.</p>
<h3><span style="text-decoration:underline;">SQL Server Compact Edition 4</span></h3>
<p>Today  we are also shipping SQL Server Compact Edition 4 (aka SQL CE 4).  SQL  CE is a free, embedded, database engine that enables easy database  storage.</p>
<p><span style="text-decoration:underline;">No Database Installation Required</span></p>
<p>SQL CE <span style="text-decoration:underline;">does not</span> require you to run a setup or install a database server in order to use  it.  You can simply copy the SQL CE binaries into the \bin directory of  your ASP.NET application, and then your web application can use it as a  database engine.  No setup or extra security permissions are required  for it to run. You do not need to have an administrator account on the  machine. Just copy your web application onto any server and it will  work. This is true even of medium-trust applications running in a web  hosting environment.</p>
<p>SQL CE runs in-memory within your ASP.NET  application and will start-up when you first access a SQL CE database,  and will automatically shutdown when your application is unloaded.  SQL  CE databases are stored as files that live within the \App_Data folder  of your ASP.NET Applications.</p>
<p><span style="text-decoration:underline;">Works with Existing Data APIs</span></p>
<p>SQL  CE 4 works with existing .NET-based data APIs, and supports a SQL  Server compatible query syntax.  This means you can use existing data  APIs like ADO.NET, as well as use higher-level ORMs like Entity  Framework and NHibernate with SQL CE.  This enables you to use the same  data programming skills and data APIs you know today.</p>
<p><span style="text-decoration:underline;">Supports Development, Testing and Production Scenarios</span></p>
<p>SQL  CE can be used for development scenarios, testing scenarios, and light  production usage scenarios.  With the SQL CE 4 release we’ve done the  engineering work to ensure that SQL CE won’t crash or deadlock when used  in a multi-threaded server scenario (like ASP.NET).  This is a big  change from previous releases of SQL CE – which were designed for  client-only scenarios and which explicitly blocked running in web-server  environments.  Starting with SQL CE 4 you can use it in a web-server as  well.</p>
<p>There are no license restrictions with SQL CE.  It is also totally free.</p>
<p><span style="text-decoration:underline;">Tooling Support with VS 2010 SP1</span></p>
<p>Visual Studio 2010 SP1 adds support for SQL CE 4 and ASP.NET Projects.  Read my <a href="http://weblogs.asp.net/scottgu/archive/2011/01/11/vs-2010-sp1-and-sql-ce.aspx" target="_blank">VS 2010 SP1 and SQL CE 4 blog post</a> to learn more about what it enables.</p>
<h3><span style="text-decoration:underline;">Web Deploy and Web Farm Framework 2.0</span></h3>
<p>Today  we are also releasing Microsoft Web Deploy V2 and Microsoft Web Farm  Framework V2.  These services provide a flexible and powerful way to  deploy ASP.NET applications onto either a single server, or across a web  farm of machines.</p>
<p>You can learn more about these capabilities from my previous blog posts on them:</p>
<ul>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/09/08/introducing-the-microsoft-web-farm-framework.aspx" target="_blank">Introducing the Microsoft Web Farm Framework</a></li>
<li><a href="http://weblogs.asp.net/scottgu/archive/2010/09/13/automating-deployment-with-microsoft-web-deploy.aspx" target="_blank">Automating Deployment with Microsoft Web Deploy</a></li>
</ul>
<p>Visit the <a href="http://iis.net/" target="_blank">http://iis.net</a> website to learn more and install them. Both are free.</p>
<h3><span style="text-decoration:underline;">Orchard 1.0</span></h3>
<p>Today we are also releasing Orchard v1.0.</p>
<p>Orchard  is a free, open source, community based project.  It provides Content  Management System (CMS) and Blogging System support out of the box, and  makes it possible to easily create and manage web-sites without having  to write code (site owners can customize a site through the  browser-based editing tools built-into Orchard).  <a href="http://www.orchardproject.net/docs/" target="_blank">Read these tutorials</a> to learn more about how you can setup and manage your own Orchard site.</p>
<p>Orchard  itself is built as an ASP.NET MVC 3 application using Razor view  templates (and by default uses SQL CE 4 for data storage).  Developers  wishing to extend an Orchard site with custom functionality can open and  edit it as a Visual Studio project – and add new ASP.NET MVC  Controllers/Views to it.</p>
<h3><span style="text-decoration:underline;">WebMatrix 1.0</span></h3>
<p>WebMatrix  is a new, free, web development tool from Microsoft that provides a  suite of technologies that make it easier to enable website  development.  It enables a developer to start a new site by browsing and  downloading an app template from an online gallery of web applications  (which includes popular apps like Umbraco, DotNetNuke, Orchard,  WordPress, Drupal and Joomla).  Alternatively it also enables developers  to create and code web sites from scratch.</p>
<p>WebMatrix is task  focused and helps guide developers as they work on sites.  WebMatrix  includes IIS Express, SQL CE 4, and ASP.NET &#8211; providing an integrated  web-server, database and programming framework combination.  It also  includes built-in web publishing support which makes it easy to find and  deploy sites to web hosting providers.</p>
<p>You can learn more about WebMatrix from my <a href="http://weblogs.asp.net/scottgu/archive/2010/07/06/introducing-webmatrix.aspx" target="_blank">Introducing WebMatrix blog post</a> this summer.  Visit <a href="http://microsoft.com/web" target="_blank">http://microsoft.com/web</a> to download and install it today.</p>
<p>&nbsp;</p>
<br />Filed under: <a href='http://maximumcs.wordpress.com/category/programming/'>Programming</a> Tagged: <a href='http://maximumcs.wordpress.com/tag/net/'>.NET</a>, <a href='http://maximumcs.wordpress.com/tag/net-4-0/'>.NET 4.0</a>, <a href='http://maximumcs.wordpress.com/tag/2010/'>2010</a>, <a href='http://maximumcs.wordpress.com/tag/asp-net/'>ASP.net</a>, <a href='http://maximumcs.wordpress.com/tag/c/'>C#</a>, <a href='http://maximumcs.wordpress.com/tag/dot-net/'>dot NET</a>, <a href='http://maximumcs.wordpress.com/tag/mvc/'>MVC</a>, <a href='http://maximumcs.wordpress.com/tag/razor/'>Razor</a>, <a href='http://maximumcs.wordpress.com/tag/vs2010/'>VS2010</a>, <a href='http://maximumcs.wordpress.com/tag/webmatrix/'>WebMatrix</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=120&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2011/01/17/announcing-release-of-asp-net-mvc-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
		<item>
		<title>2010 in review</title>
		<link>http://maximumcs.wordpress.com/2011/01/02/2010-in-review/</link>
		<comments>http://maximumcs.wordpress.com/2011/01/02/2010-in-review/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 10:23:46 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Social]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/?p=117</guid>
		<description><![CDATA[The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health: The Blog-Health-o-Meter™ reads Minty-Fresh™. Crunchy numbers A helper monkey made this abstract painting, inspired by your stats. A Boeing 747-400 passenger jet can hold 416 passengers. This blog was viewed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=117&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The stats helper monkeys at WordPress.com mulled over how this blog did in 2010, and here&#8217;s a high level summary of its overall blog health:</p>
<p><img style="border:1px solid #ddd;background:#f5f5f5;padding:20px;" src="http://s0.wp.com/i/annual-recap/meter-healthy.gif" alt="Healthy blog!" width="250" height="183" /></p>
<p>The <em>Blog-Health-o-Meter™</em> reads Minty-Fresh™.</p>
<h2>Crunchy numbers</h2>
<div style="width:288px;float:right;border:1px solid #ddd;background:#fff;margin:0 0 1em 1em;padding:6px;">
<p><img src="http://s0.wp.com/i/annual-recap/abstract-stats-6.png" alt="Featured image" /></p>
<p><em>A helper monkey made this abstract painting, inspired by your stats.</em></p>
</div>
<p>A Boeing 747-400 passenger jet can hold 416 passengers.  This blog was viewed about <strong>1,900</strong> times in 2010.  That&#8217;s about 5 full 747s.</p>
<p>&nbsp;</p>
<p>In 2010, there were <strong>4</strong> new posts, growing the total archive of this blog to 47 posts.</p>
<p>The busiest day of the year was April 8th with <strong>26</strong> views. The most popular post that day was <a style="color:#08c;" href="http://maximumcs.wordpress.com/2009/05/26/business-logic-with-entity-framework/">Business Logic with Entity Framework</a>.</p>
<h2>Where did they come from?</h2>
<p>The top referring sites in 2010 were <strong>dotnetkicks.com</strong>, <strong>codeproject.com</strong>, <strong>dotnetshoutout.com</strong>, <strong>bigextracash.com</strong>, and <strong>google.com</strong>.</p>
<p>Some visitors came searching, mostly for <strong>c# viewmodel</strong>, <strong>model view viewmodel</strong>, <strong>is64bitoperatingsystem</strong>, <strong>environment.is64bitoperatingsystem</strong>, and <strong>viewmodel pattern c#</strong>.</p>
<h2>Attractions in 2010</h2>
<p>These are the posts and pages that got the most views in 2010.</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">1</div>
<p><a style="margin-right:10px;" href="http://maximumcs.wordpress.com/2009/05/26/business-logic-with-entity-framework/">Business Logic with Entity Framework</a> <span style="color:#999;font-size:8pt;">May 2009</span></p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">2</div>
<p><a style="margin-right:10px;" href="http://maximumcs.wordpress.com/2009/06/08/model-view-viewmodel-pattern/">Model-View-ViewModel Pattern</a> <span style="color:#999;font-size:8pt;">June 2009</span><br />
2 comments</p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">3</div>
<p><a style="margin-right:10px;" href="http://maximumcs.wordpress.com/2009/10/05/the-liskov-substitution-principle-lsp/">The Liskov Substitution Principle (LSP )</a> <span style="color:#999;font-size:8pt;">October 2009</span></p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">4</div>
<p><a style="margin-right:10px;" href="http://maximumcs.wordpress.com/2009/06/09/rapid-entity-framework-choose-simplicity-over-complexity/">Rapid Entity Framework &#8211; Choose simplicity over complexity</a> <span style="color:#999;font-size:8pt;">June 2009</span></p>
<div style="clear:left;float:left;font-size:24pt;line-height:1em;margin:-5px 10px 20px 0;">5</div>
<p><a style="margin-right:10px;" href="http://maximumcs.wordpress.com/2009/07/18/introducing-entity-framework/">Introducing Entity Framework</a> <span style="color:#999;font-size:8pt;">July 2009</span></p>
<br />Filed under: <a href='http://maximumcs.wordpress.com/category/social/'>Social</a> Tagged: <a href='http://maximumcs.wordpress.com/tag/2010/'>2010</a>, <a href='http://maximumcs.wordpress.com/tag/blog/'>blog</a>, <a href='http://maximumcs.wordpress.com/tag/review/'>review</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/117/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/117/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/117/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=117&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2011/01/02/2010-in-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/meter-healthy.gif" medium="image">
			<media:title type="html">Healthy blog!</media:title>
		</media:content>

		<media:content url="http://s0.wp.com/i/annual-recap/abstract-stats-6.png" medium="image">
			<media:title type="html">Featured image</media:title>
		</media:content>
	</item>
		<item>
		<title>InfoQ: Manager 2.0: The Role of the Manager in Scrum</title>
		<link>http://maximumcs.wordpress.com/2010/07/28/infoq-manager-2-0-the-role-of-the-manager-in-scrum/</link>
		<comments>http://maximumcs.wordpress.com/2010/07/28/infoq-manager-2-0-the-role-of-the-manager-in-scrum/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 13:42:42 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/?p=114</guid>
		<description><![CDATA[a good Read from InfoQ about Management and SCRUM: http://www.infoq.com/articles/scrum-management-deemer Filed under: Programming<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=114&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>a good Read from InfoQ about Management and SCRUM: <a title="http://www.infoq.com/articles/scrum-management-deemer" href="http://www.infoq.com/articles/scrum-management-deemer" target="_blank">http://www.infoq.com/articles/scrum-management-deemer</a></p>
<br />Filed under: <a href='http://maximumcs.wordpress.com/category/programming/'>Programming</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=114&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2010/07/28/infoq-manager-2-0-the-role-of-the-manager-in-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
		<item>
		<title>Behavior Depends on Context</title>
		<link>http://maximumcs.wordpress.com/2010/01/11/behavior-depends-on-context/</link>
		<comments>http://maximumcs.wordpress.com/2010/01/11/behavior-depends-on-context/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 15:16:09 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[2426]]></category>
		<category><![CDATA[Composite]]></category>
		<category><![CDATA[Decoupling]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Domain Driven]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Object Oriented]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/?p=112</guid>
		<description><![CDATA[Many objects has life cycles that are more extensive than the simple model that Object Oriented Programming model wants us to believe.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=112&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Many objects has life cycles that are more extensive than the simple model that Object Oriented Programming model wants us to believe. A few simple examples;</p>
<ul>
<li>An egg becomes a chicken which in turn becomes food.</li>
<li>I am a programmer at work, a father+husband at home, a      victim in a traffic accident and hunter and pray in the jungle.</li>
</ul>
<p>But it is more to it than that. The composition of the object may change over time. My home now has a garage and my car have different kind of problems with their own state related to it.<br />
In the programming world, we are constantly faced with change of requirements. These changes are often not related to any real world changes, but people coming to new insights of the problem domain. OOP makes those changes a big deal, and often we have to tear up large chunks of the model and redo the work.</p>
<p>But wait, there is more.</p>
<p>Some objects traverses different scope boundaries to the extreme. For instance, a Person will have its attributes changing slightly over time, new abilities be learnt and so forth, that is mentioned above. But the Person will eventually die, but that doesn&#8217;t mean that the Person object should be deleted from a system, since the &#8220;memory of&#8221; that Person may live on for a long time. In a OOP system, we would need to transfer some of the state from a LivingPerson class to a DeadPerson class. In Composite Oriented Programming, it is the same object with different behavior.</p>
<p>We think that one of the the main flaws in OOP is that it is not object oriented at all, but in fact class oriented. Class is the first class citizen that objects are derived from. Not objects being the first-class citizen to which one or many classes are assigned.</p>
<p>Copied from : <a href="http://www.qi4j.org/" target="_blank">http://www.qi4j.org/ </a></p>
<br />Posted in 2426 Tagged: Composite, Decoupling, Design Patterns, Domain Driven, Framework, Object Oriented <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=112&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2010/01/11/behavior-depends-on-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
		<item>
		<title>Check my #Avatar for #CairoCodeCamp</title>
		<link>http://maximumcs.wordpress.com/2010/01/04/check-my-avatar-for-cairocodecamp/</link>
		<comments>http://maximumcs.wordpress.com/2010/01/04/check-my-avatar-for-cairocodecamp/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 14:42:45 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[2426]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/?p=108</guid>
		<description><![CDATA[Just got my Avatar for #CairoCodeCamp Posted in 2426<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=108&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Just got my Avatar  for #CairoCodeCamp</p>
<p><a href="http://www.cairocodecamp.com/Join.aspx?r=94" target="_blank"><img style="border-width:0;" src="http://www.cairocodecamp.com/images/ActiveMember.jpg" alt="" /></a></p>
<br />Posted in 2426  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=108&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2010/01/04/check-my-avatar-for-cairocodecamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>

		<media:content url="http://www.cairocodecamp.com/images/ActiveMember.jpg" medium="image" />
	</item>
		<item>
		<title>Cairo Code Camp 2010</title>
		<link>http://maximumcs.wordpress.com/2010/01/03/cairo-code-camp-2010/</link>
		<comments>http://maximumcs.wordpress.com/2010/01/03/cairo-code-camp-2010/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 10:52:27 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[2426]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/2010/01/03/cairo-code-camp-2010/</guid>
		<description><![CDATA[Hey everyone, I’m getting very excited to join the Cairo Code Camp for its second year 2010 I will provide more details when available, but for now you can follow @CairoCodeCamp on Twitter and have fun tweeting about it. Posted in 2426<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=106&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cairocodecamp.com/join.aspx?r=94" target="_blank"><img src="http://www.cairocodecamp.com/images/Default_01.jpg" /></a> </p>
<p>Hey everyone, I’m getting very excited to join the <a href="http://www.cairocodecamp.com/join.aspx?r=94" target="_blank">Cairo Code Camp</a> for its second year 2010</p>
<p>I will provide more details when available, but for now you can follow <a href="http://twitter.com/CairoCodeCamp" target="_blank">@CairoCodeCamp</a> on Twitter and have fun tweeting about it.</p>
<br />Posted in 2426  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=106&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2010/01/03/cairo-code-camp-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>

		<media:content url="http://www.cairocodecamp.com/images/Default_01.jpg" medium="image" />
	</item>
		<item>
		<title>What&#8217;s New in the BCL in .NET 4 Beta 2</title>
		<link>http://maximumcs.wordpress.com/2009/10/26/whats-new-in-bcl4-beta2/</link>
		<comments>http://maximumcs.wordpress.com/2009/10/26/whats-new-in-bcl4-beta2/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 08:59:00 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 4.0]]></category>
		<category><![CDATA[BCL]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CLR]]></category>
		<category><![CDATA[dot NET]]></category>
		<category><![CDATA[VS2010]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/2009/10/26/whats-new-in-the-bcl-in-net-4-beta-2/</guid>
		<description><![CDATA[Visual Studio 2010 and .NET Framework 4 Beta 2 are now available to download.&#160; .NET 4 Beta 2 contains several new BCL features and enhancements in addition to what was included in .NET 4 Beta 1.&#160; Many of these improvements were added in large part due to specific feedback and suggestions reported by customers through [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=102&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h4>Visual Studio 2010 and .NET Framework 4 Beta 2 are now available to <a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx">download</a>.&#160; .NET 4 Beta 2 contains several new BCL features and enhancements in addition to what was included in <a href="http://blogs.msdn.com/bclteam/archive/2009/05/22/what-s-new-in-the-bcl-in-net-4-beta-1-justin-van-patten.aspx">.NET 4 Beta 1</a>.&#160; Many of these improvements were added in large part due to specific feedback and suggestions reported by customers through <a href="https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=14625">Microsoft Connect</a>.</h4>
<h2>Summary of New BCL Functionality in .NET 4 Beta 2</h2>
<ul>
<li>Complex Number </li>
<li>Location </li>
<li>IObservable&lt;T&gt; </li>
<li>Stream.CopyTo </li>
<li>Guid.TryParse, Version.TryParse, and Enum.TryParse&lt;T&gt; </li>
<li>Enum.HasFlag </li>
<li>String.Concat and String.Join overloads that take IEnumerable&lt;T&gt; </li>
<li>String.IsNullOrWhiteSpace </li>
<li>Environment.SpecialFolder additions </li>
<li>Environment.Is64BitProcess and Environment.Is64BitOperatingSystem </li>
<li>Path.Combine params support </li>
<li>TimeSpan Globalized Formatting and Parsing </li>
<li>Stopwatch.Restart </li>
<li>StringBuilder.Clear </li>
<li>IntPtr and UIntPtr Addition and Subtraction operators </li>
<li>ServiceProcessInstaller.DelayedAutoStart </li>
<li>ObservableCollection&lt;T&gt; moved to System.dll </li>
</ul>
<h2>Complex Number</h2>
<blockquote><p>System.Numerics.Complex represents a complex number comprised of a real number and imaginary number.&#160; Complex supports both rectangular coordinates (real and imaginary) and polar coordinates (magnitude and phase measured in radians) and supports arithmetic and trigonometric operations.&#160; Complex numbers are used in a number of areas including high-performance computing, graphing and charting, electrical engineering (e.g. Fourier transforms), and other numerical applications.</p>
</blockquote>
<h2>Location</h2>
<blockquote><p>System.Device.Location (which can be found in System.Device.dll) enables .NET applications running on Windows 7 to determine the current geo-location (e.g. latitude/longitude) of the device.&#160; Windows 7 supports a number of different location sensors, including GPS devices and WWAN radios, and automatically handles transitioning between different sensors — if multiple sensors are available — to provide the most accurate data for the current situation. .NET applications will be able to use this new API to access the following data (if available): latitude, longitude, altitude, horizontal and vertical accuracy, course, speed, and civic address (i.e. country/region, state/province, city, postal code, street, building, floor level).&#160; Note that we are planning to make some changes to the shape of the location API between Beta 2 and RC, so please keep this in mind as you evaluate and use the Beta 2 location API in apps.&#160; A separate blog post will provide more details on the planned changes for RC.</p>
</blockquote>
<h2>IObservable&lt;T&gt;</h2>
<blockquote><p>System.IObservable&lt;T&gt; and System.IObserver&lt;T&gt; provide a general mechanism for push-based notifications and can be used to represent push-based, or <i>observable</i>, collections.&#160; Anyone familiar with design patterns will recognize these interfaces as representations of the well-known observer pattern.&#160; IObservable&lt;T&gt; opens up the doors to some exciting new paradigms for event-based and asynchronous programming on .NET.&#160; A great example of this is the <a href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx/">Reactive Framework</a> (RX), which is a library of extension methods (not included as part of .NET 4) that implement the LINQ Standard Query Operators and other useful stream transformation functions for IObservable&lt;T&gt;.&#160; F# first-class events also support IObservable&lt;T&gt; and F# includes a library of Observable operators similar to those available in RX.&#160; Imagine being able to do LINQ-style queries against events; this is just one of the kinds of things that IObservable&lt;T&gt; enables.&#160; To help grasp the power of IObservable&lt;T&gt;, I encourage you to watch the Channel 9 videos of Erik Meijer <a href="http://channel9.msdn.com/shows/Going+Deep/Expert-to-Expert-Brian-Beckman-and-Erik-Meijer-Inside-the-NET-Reactive-Framework-Rx/">introducing RX</a> and Wes Dyer and Kim Hamilton <a href="http://channel9.msdn.com/shows/Going+Deep/Kim-Hamilton-and-Wes-Dyer-Inside-NET-Rx-and-IObservableIObserver-in-the-BCL-VS-2010/">discussing IObservable&lt;T&gt; in the BCL</a>.</p>
</blockquote>
<h2>Stream.CopyTo</h2>
<blockquote><p>When working with Streams, how many times have you had to write the following boiler-plate code to read from one stream and write the contents to another stream?</p>
<pre>Stream source = ...;
Stream destination = ...;
byte[] buffer = new byte[4096];
int read;
while ((read = source.Read(buffer, 0, buffer.Length)) != 0) {
    destination.Write(buffer, 0, read);
}</pre>
<p>In .NET 4, you no longer have to write this code.&#160; We’ve added a new CopyTo method to Stream that allows you to simply write:</p>
<pre>Stream source = ...;
Stream destination = ...;
source.CopyTo(destination);</pre>
</blockquote>
<h2>Guid.TryParse, Version.TryParse, and Enum.TryParse&lt;T&gt;</h2>
<blockquote>
<p>We’ve added TryParse to System.Guid, System.Version, and System.Enum.&#160; Enum.TryParse is generic, a nice improvement over the existing non-generic Parse method, which leads to much cleaner code.</p>
<p>On previous versions of .NET, to parse an enum value, you’d write something like this:</p>
<pre>try {
    string value = Console.ReadLine();
    FileOptions fo = (FileOptions)Enum.Parse(typeof(FileOptions), value);&#160;&#160;&#160;&#160; // Success
}
catch {
    // Error
}</pre>
<p>On .NET 4, you can use the new generic TryParse method:</p>
<pre>string value = Console.ReadLine();
FileOptions fo;
if (Enum.TryParse(value, out fo)) {
    // Success
}</pre>
</blockquote>
<h2>Enum.HasFlag</h2>
<blockquote>
<p>We’ve added a new convenience method to System.Enum that makes it super easy to determine if a flag is set on a particular Flags enum, without having to remember how to use the bitwise operators.&#160; This also allows for more readable code.</p>
<pre>ConsoleModifiers cm = ConsoleModifiers.Alt | ConsoleModifiers.Shift;
bool hasAlt1 = (cm &amp; ConsoleModifiers.Alt) == ConsoleModifiers.Alt; // using bitwise operators
bool hasAlt2 = cm.HasFlag(ConsoleModifiers.Alt); // using HasFlag</pre>
</blockquote>
<h2>String.Concat and String.Join overloads that take IEnumerable&lt;T&gt;</h2>
<blockquote>
<p>We’ve added new overloads of String.Concat and String.Join that take IEnumerable&lt;T&gt;, adding to the existing overloads that take arrays.&#160; This means you can pass any collection that implements IEnumerable&lt;T&gt; to these APIs without having to first convert the collection into an array.&#160; We’ve also added “params” support to the existing array-based String.Join overload, which allows you to write more succinct code.&#160; In C#:</p>
<pre>String.Join(&quot;, &quot;, new string[] { &quot;A&quot;, &quot;B&quot;, &quot;C&quot;, &quot;D&quot; }); // you used to have to write this
String.Join(&quot;, &quot;, &quot;A&quot;, &quot;B&quot;, &quot;C&quot;, &quot;D&quot;); // now you can write this</pre>
</blockquote>
<h2>String.IsNullOrWhiteSpace</h2>
<blockquote>
<p>This new convenience method is similar to the existing IsNullOrEmpty method, but in addition to checking if the string is null or empty, it also checks to see if the string only consists of white-space characters, as defined by Char.IsWhiteSpace.&#160; It works great for Code Contract preconditions.</p>
</blockquote>
<h2>Environment.SpecialFolder additions</h2>
<blockquote>
<p>We’ve added a number of new values to the Environment.SpecialFolder enum:</p>
<p><strong>AdminTools, CDBurning , CommonAdminTools , CommonDesktopDirectory , CommonDocuments , CommonMusic , CommonOemLinks , , CommonPictures , CommonProgramFilesX86 , CommonPrograms , CommonStartMenu , CommonStartup , CommonTemplates , CommonVideos , Fonts , LocalizedResources , MyVideos , NetworkShortcuts , PrinterShortcuts , ProgramFilesX86 , Resources , SystemX86 , Templates , UserProfile , Windows</strong></p>
<p>We’ve also added a new overload to Environment.GetFolderPath that takes a new SpecialFolderOption enum, allowing you to specify some additional options, such as “Create” (to create the directory if it doesn’t exist) and “DoNotVerify” (to just return the path without checking if it exists, which can help reduce lag time if the directory is on a network share).</p>
</blockquote>
<h2>Environment.Is64BitProcess and Environment.Is64BitOperatingSystem</h2>
<blockquote>
<p>These new convenience APIs make it easy to determine the bitness of the current process and operating system.&#160; Environment.Is64BitProcess is equivalent to calling IntPtr.Size == 8.&#160; Environment.Is64BitOperatingSystem will tell you if the underlying OS is 64-bit.&#160; Note that it is possible for Environment.Is64BitProcess to return false and Environment.Is64BitOperatingSystem to return true if the process is a 32-bit process running on a 64-bit operating system under <a href="http://msdn.microsoft.com/en-us/library/aa384249%28VS.85%29.aspx">WOW64</a>.</p>
</blockquote>
<h2>Path.Combine params support</h2>
<blockquote>
<p>Have you ever had to nest calls to Path.Combine like this:</p>
<pre>Path.Combine(&quot;dir1&quot;, Path.Combine(&quot;dir2&quot;, Path.Combine(&quot;dir3&quot;, &quot;dir4&quot;)));</pre>
<p>With .NET 4, you can simply write:</p>
<pre>Path.Combine(&quot;dir1&quot;, &quot;dir2&quot;, &quot;dir3&quot;, &quot;dir4&quot;);</pre>
</blockquote>
<h2>TimeSpan Globalized Formatting and Parsing</h2>
<blockquote>
<p>In previous versions of .NET, TimeSpan only supported a single culture-agnostic format for formatting and parsing.&#160; This meant if you called ToString on a French machine the output would not match culture settings, making the application appear not to be globalized.&#160; This is often noticeable in apps that display results from SQL databases that use the frequently used Time column type, because SQL’s Time maps to TimeSpan in .NET.&#160; For example:</p>
<pre>Thread.CurrentThread.CurrentCulture = new CultureInfo(&quot;fr-FR&quot;);
Console.WriteLine(new TimeSpan(0, 1, 1, 1, 1));
Console.WriteLine(12.34);</pre>
<p>Output:</p>
<pre>01:01:01.0010000
12,34</pre>
<p>The output from TimeSpan.ToString is a culture-agnostic format so it uses a &#8216;.&#8217; as the decimal separator, whereas Double uses &#8216;,&#8217; based on the current culture.</p>
<p>In .NET 4, System.TimeSpan now supports formatting and parsing based on culture settings via new overloads of ToString, Parse, and TryParse, and new ParseExact and TryParseExact methods.&#160; The default ToString overload still behaves the same for backwards compatibility, outputting a constant, culture-agnostic format, but the new overloads allow you to specify additional culture-sensitive formats.&#160; You can pass the “g” format (general format) to the new ToString overload to specify a culture-sensitive format:</p>
<pre>Thread.CurrentThread.CurrentCulture = new CultureInfo(&quot;fr-FR&quot;);
Console.WriteLine(new TimeSpan(0, 1, 1, 1, 1).ToString(&quot;g&quot;));
Console.WriteLine(12.34);</pre>
<p>Output:</p>
<pre>01:01:01,0010000
12,34</pre>
</blockquote>
<h2>Stopwatch.Restart</h2>
<blockquote>
<p>This is a new convenience method that is equivalent to calling Stopwatch.Reset followed by Stopwatch.Start.</p>
</blockquote>
<h2>StringBuilder.Clear</h2>
<blockquote>
<p>In previous versions of .NET, you could clear StringBuilder by setting the Length property to 0.&#160; This isn’t very discoverable, so we’ve added StringBuilder.Clear as a more discoverable equivalent.</p>
</blockquote>
<h2>IntPtr and UIntPtr Addition and Subtraction operators</h2>
<blockquote>
<p>Adding an offset to an IntPtr or UIntPtr can be error prone and often introduces subtle bugs on 64-bit machines if not done correctly.&#160; .NET 4 includes addition and subtraction operators on these types, along with Add and Subtract methods, to help prevent these kinds of errors.</p>
</blockquote>
<h2>ServiceProcessInstaller.DelayedAutoStart</h2>
<blockquote>
<p>.NET-based services that start automatically can now set a new DelayedAutoStart property to true (recommended), which will delay auto-starting the service until after other auto-start services are started plus a short delay to improve system boot performance when running on Vista or greater.</p>
</blockquote>
<h2>ObservableCollection&lt;T&gt; moved to System.dll</h2>
<blockquote>
<p>We’ve type-forward System.Collections.ObjectModel.ObservableCollection&lt;T&gt;, System.Collections.ObjectModel.ReadOnlyObservableCollection&lt;T&gt;, and System.Collections.Specialized.INotifyCollectionChanged from WindowsBase.dll (a WPF assembly) to System.dll.&#160; This allows you to use these collections without taking a dependency on a WPF assembly and enables a cleaner separation between model and view.</p>
</blockquote>
<p>&#160;</p>
<h5>This post was taken from the <a href="http://blogs.msdn.com/bclteam/archive/2009/10/21/what-s-new-in-the-bcl-in-net-4-beta-2-justin-van-patten.aspx" target="_blank">BCL Team Blog</a> and Edited to be more clear and compact for speed reading</h5>
<br />Posted in Programming Tagged: .NET, .NET 4.0, BCL, C#, CLR, dot NET, VS2010 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=102&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2009/10/26/whats-new-in-bcl4-beta2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
		<item>
		<title>What is S.O.L.I.D.?</title>
		<link>http://maximumcs.wordpress.com/2009/10/15/what-is-solid/</link>
		<comments>http://maximumcs.wordpress.com/2009/10/15/what-is-solid/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 08:52:00 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Object Oriented]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/2009/10/15/what-is-s-o-l-i-d/</guid>
		<description><![CDATA[S.O.L.I.D. is a collection of best-practice, object-oriented design principles which can be applied to your design, allowing you to accomplish various desirable goals such as loose-coupling, higher maintainability, intuitive location of interesting code, etc. S.O.L.I.D. is an acronym for some principles (which are, themselves acronyms). SRP: Single Responsibility Principle (read more) THERE SHOULD NEVER BE [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=100&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>S.O.L.I.D. is a collection of best-practice, object-oriented design principles which can be applied to your design, allowing you to accomplish various desirable goals such as loose-coupling, higher maintainability, intuitive location of interesting code, etc.</p>
<p>S.O.L.I.D. is an acronym for some principles (which are, themselves acronyms).</p>
<h2>SRP: Single Responsibility Principle (<a href="http://www.objectmentor.com/resources/articles/srp.pdf" target="_blank">read more</a>)</h2>
<p> <br />
<blockquote>THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE. </p></blockquote>
<p> <br />
<h2>OCP: Open Closed Principle (<a href="http://www.objectmentor.com/resources/articles/ocp.pdf" target="_blank">read more</a>)</h2>
<p> <br />
<blockquote>SOFTWARE ENTITIES (CLASSES, MODULES, FUNCTIONS, ETC.) SHOULD BE OPEN FOR EXTENSION BUT CLOSED FOR MODIFICATION. </p></blockquote>
<p> <br />
<h2>LSP: Liskov Substitution Principle (<a href="http://www.objectmentor.com/resources/articles/lsp.pdf" target="_blank">read more</a>)</h2>
<p> <br />
<blockquote>FUNCTIONS THAT USE &#8230; REFERENCES TO BASE CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES WITHOUT KNOWING IT. </p></blockquote>
<p> <br />
<h2>ISP: Interface Segregation Principle (<a href="http://www.objectmentor.com/resources/articles/isp.pdf" target="_blank">read more</a>)</h2>
<p> <br />
<blockquote>CLIENTS SHOULD NOT BE FORCED TO DEPEND UPON INTERFACES THAT THEY DO NOT USE </p></blockquote>
<p> <br />
<h2>DIP: Dependency Inversion Principle (<a href="http://www.objectmentor.com/resources/articles/dip.pdf" target="_blank">read more</a>)</h2>
<p> <br />
<blockquote>A. HIGH LEVEL MODULES SHOULD NOT DEPEND UPON LOW LEVEL MODULES. BOTH SHOULD DEPEND UPON ABSTRACTIONS    <br />B. ABSTRACTIONS SHOULD NOT DEPEND UPON DETAILS. DETAILS SHOULD DEPEND UPON ABSTRACTIONS </p></blockquote>
<br />Posted in Programming Tagged: Design Patterns, Object Oriented <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=100&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2009/10/15/what-is-solid/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
		<item>
		<title>The Liskov Substitution Principle (LSP )</title>
		<link>http://maximumcs.wordpress.com/2009/10/05/the-liskov-substitution-principle-lsp/</link>
		<comments>http://maximumcs.wordpress.com/2009/10/05/the-liskov-substitution-principle-lsp/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 09:41:00 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Design by Contract]]></category>
		<category><![CDATA[Design Patterns]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/2009/10/05/the-liskov-substitution-principle-lsp/</guid>
		<description><![CDATA[What a title to put an article on it, but after reading about that principle I had that feeling that sharing it will benefit someone out there. that principle is talking about Good practice in Object-Oriented software Design and its definition is the following: FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE CLASSES MUST BE [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=98&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><font size="2">What a title to put an article on it, but after <a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle" target="_blank">reading about that principle</a> I had that feeling that sharing it will benefit someone out there.</font></p>
<p>that principle is talking about Good practice in Object-Oriented software Design and its definition is the following:</p>
<blockquote><p>FUNCTIONS THAT USE POINTERS OR REFERENCES TO BASE      <br />CLASSES MUST BE ABLE TO USE OBJECTS OF DERIVED CLASSES       <br />WITHOUT KNOWING IT.</p>
</blockquote>
<p>&#160;</p>
<p>What does that mean in simple words?</p>
<p>If you have the following class diagram (I will rely on a function in the base class instead of providing a new class for the purpose of demonstrating) :</p>
<p><a href="http://maximumcs.files.wordpress.com/2009/10/classdiagram1.png" target="_blank"><img style="display:inline;border-width:0;" title="ClassDiagram1" border="0" alt="ClassDiagram1" src="http://maximumcs.files.wordpress.com/2009/10/classdiagram1_thumb.png?w=501&#038;h=284" width="501" height="284" /></a> </p>
</p>
<p>&#160;</p>
<p>in that diagram you have a hierarchy for the brush classes that include a base abstract class called “Brush” and inherited from it the “Solid”, “Gradient” and the “Texture”</p>
<p>In the “Brush” class we have one method which draw on the supplied “surface” argument using the brush’s attributes, and in our case we have that code that do the drawing:</p>
<blockquote><p>public void Draw(Graphics surface)      <br />{       <br />&#160;&#160;&#160; if (this is Solid)       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // draw with solid color       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; else if (this is Gradient)       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // draw a gradient       <br />&#160;&#160;&#160; }       <br />&#160;&#160;&#160; else if (this is Texture)       <br />&#160;&#160;&#160; {       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // draw with a texture bitmap       <br />&#160;&#160;&#160; }       <br />}</p>
</blockquote>
<p>That Code is a very bad practice and will definitely lead to serious&#160; problems later on when you need to add more classes that inherit from the base “Brush” class.</p>
<p>think of what will you do if you have 20 types of brushes ?? what about a 100 or 200 types ?? , maybe in that particular example the real world does not offer that amount of brushes .. but for demo purpose you should think of what that method/function will look like if you have hundreds of inherited classes of the base “Brush&#8217;” class ……. Exactly yes it will be a big mess and maintaining that method will be a headache later when that application evolves.</p>
<h5>So what should we do about it ???</h5>
<p>the best solution here in <strong><u>my opinion</u></strong> is to rely on inheritance and the magical “Virtual / Override” mechanism</p>
<p>so our first best practice here is to distribute that function’s responsibility to the class hierarchy and leave it “open for extensibility but closed for modifications”&#160; as the best practices say.</p>
<h5>and here is the new diagram after fixing it:</h5>
<p><a href="http://maximumcs.files.wordpress.com/2009/10/classdiagram11.png" target="_blank"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="ClassDiagram1" border="0" alt="ClassDiagram1" src="http://maximumcs.files.wordpress.com/2009/10/classdiagram1_thumb1.png?w=642&#038;h=275" width="642" height="275" /></a> </p>
</p>
<p>and the code for the base class will be as following:</p>
<blockquote><p>public virtual void Draw(Graphics surface)     <br />{      <br />&#160;&#160;&#160; // draw on the surface      <br />} </p>
</blockquote>
<p>Note the “Virtual’ operator that decorates our function definition, that means that our inherited classes are free to “Override” this particular method and/or extend it with new or different logic or behavior</p>
<h5>and here is the code in the descendant classes:</h5>
<blockquote><p>public class Texture : Brush     <br />{      <br />&#160;&#160;&#160; public override void Draw(System.Drawing.Graphics surface)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // we can use the next statement to call the parent&#8217;s draw method      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; base.Draw(surface);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // extend the drawing with a concrete Texture Brush      <br />&#160;&#160;&#160; }      <br />} </p>
<p>public class Solid : Brush     <br />{      <br />&#160;&#160;&#160; public override void Draw(System.Drawing.Graphics surface)      <br />&#160;&#160;&#160; {      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; // create a very different logic for the brush and do not use the parent’s code      <br />&#160;&#160;&#160; }      <br />}</p>
</blockquote>
<p>as we can see that “Texture” executed “base.Draw(surface)” before it proceeds with its own logic and that means that it will let the parent do its work first and then it will complete hereafter it with its own logic, and in the “Solid” it never called its Base/parent and it will provide a totally different logic for the drawing.</p>
<h5>Final Note</h5>
<p>one more thing here for you to note is that you need to watch out for changes you will provide in behavior because in “<a href="http://en.wikipedia.org/wiki/Design_by_contract" target="_blank">Design by contract</a>” principle you MUST preserve all logic and validation that is expected from the parent class in all its children and you should not alter the default parent behavior unless it is not going to break any of its client’s usages. </p>
<p>such as if the Draw method is supposed to Fire an Event after finishing the drawing, any of its descendants when they override that method MUST fire that event no matter what they do because the other classes will rely on that event to do other related logic.</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fmaximumcs.wordpress.com%2f2009%2f10%2f05%2fthe-liskov-substitution-principle-lsp%2f"><img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fmaximumcs.wordpress.com%2f2009%2f10%2f05%2fthe-liskov-substitution-principle-lsp%2f" border="0" alt="kick it on DotNetKicks.com" /></a></p>
<br />Posted in Programming Tagged: .NET, Design by Contract, Design Patterns <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=98&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2009/10/05/the-liskov-substitution-principle-lsp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>

		<media:content url="http://maximumcs.files.wordpress.com/2009/10/classdiagram1_thumb.png" medium="image">
			<media:title type="html">ClassDiagram1</media:title>
		</media:content>

		<media:content url="http://maximumcs.files.wordpress.com/2009/10/classdiagram1_thumb1.png" medium="image">
			<media:title type="html">ClassDiagram1</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fmaximumcs.wordpress.com%2f2009%2f10%2f05%2fthe-liskov-substitution-principle-lsp%2f" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>
	</item>
		<item>
		<title>Its time for me to start writing again.</title>
		<link>http://maximumcs.wordpress.com/2009/09/28/its-time-for-me-to-start-writing-again/</link>
		<comments>http://maximumcs.wordpress.com/2009/09/28/its-time-for-me-to-start-writing-again/#comments</comments>
		<pubDate>Mon, 28 Sep 2009 12:40:00 +0000</pubDate>
		<dc:creator>.:: Bishoy™ ::.</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://maximumcs.wordpress.com/2009/09/28/its-time-for-me-to-start-writing-again/</guid>
		<description><![CDATA[Hi guys, and really sorry for taking all that time being silent and not writing anything new but it was mainly because I was depressed and disappointed of many things around me. also I had some hard time with my new (used) car – fixing it and that left me with no time to write [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=93&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hi guys, and really sorry for taking all that time being silent and not writing anything new but it was mainly because I was depressed and disappointed of many things around me. also I had some hard time with my new (used) car – fixing it and that left me with no time to write about anything or even read new articles.</p>
<p>now I will be preparing some articles over this week and most likely about Windows Forms and Multithreading .. I know its somehow an outdated technology and subject but my new successful experience with them encourage me to write about how I started to convert my single threaded WYSWYG application into a multithreaded responsive application.</p>
<p>In the meanwhile hang on to reading this blog and I will keep my promises of providing useful material.</p>
<br />Posted in General, Personal, Social  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/maximumcs.wordpress.com/93/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/maximumcs.wordpress.com/93/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/maximumcs.wordpress.com/93/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=maximumcs.wordpress.com&amp;blog=8026030&amp;post=93&amp;subd=maximumcs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://maximumcs.wordpress.com/2009/09/28/its-time-for-me-to-start-writing-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/816652a4501e95b150ef94baae726335?s=96&#38;d=http%3A%2F%2Fs0.wp.com%2Fi%2Fmu.gif&#38;r=G" medium="image">
			<media:title type="html">.:: Bishoy™ ::.</media:title>
		</media:content>
	</item>
	</channel>
</rss>
