<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Quantum Organics</title>
	
	<link>http://www.quantum-organics.com/blog</link>
	<description>better living through entropy</description>
	<pubDate>Fri, 30 Jan 2009 04:59:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/quantum-organics" type="application/rss+xml" /><item>
		<title>What’s wrong with Microsoft’s CSS Friendly Control Adapters?</title>
		<link>http://feedproxy.google.com/~r/quantum-organics/~3/BwlmLTVq54Y/</link>
		<comments>http://www.quantum-organics.com/blog/2009/01/29/whats-wrong-with-microsofts-css-friendly-control-adapters/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 04:59:26 +0000</pubDate>
		<dc:creator>Scott Caligan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.quantum-organics.com/blog/?p=23</guid>
		<description><![CDATA[Are they dead?  A colleague recently pointed me to a blog post from October that makes this sensational claim. While I actually agree 100% with the author&#8217;s main conclusion, there are some issues that need to be addressed, as there seem to be a couple of important facts that the author seems to have either [...]]]></description>
			<content:encoded><![CDATA[<p>Are they dead?  A colleague recently pointed me to a <a href="http://leedumond.com/blog/css-friendly-control-adapters-dead/">blog post</a> from October that makes this sensational claim. While I actually agree 100% with the author&#8217;s main conclusion, there are some issues that need to be addressed, as there seem to be a couple of important facts that the author seems to have either been unaware of, or conveniently overlooked.  Let&#8217;s place the blame where it is deserved.<span id="more-23"></span></p>
<h4>The <acronym title="Cascading Style Sheets">CSS</acronym> Friendly Control Adapters were never an official product.</h4>
<p>That&#8217;s right, they were code samples that accompanied a <a href="http://www.asp.net/CSSAdapters/WhitePaper.aspx">white paper</a> illustrating how to extend the System.Web.UI.Adapters.ControlAdapter class shipped in .NET 2.0.  The fact that these were released as sample code is clearly noted in:</p>
<ul>
<li>The summary of the white paper (&#8221;<em>This white paper discusses control adapters in general and <strong>a sample set of adapters</strong> in particular. The samples demonstrate how you can adapt controls so they are easier to style with <acronym title="Cascading Style Sheets">CSS</acronym>&#8230;</em>&#8220;);</li>
<li>On the <a href="http://www.asp.net/cssadapters/">main entry page</a> (&#8221;<em><strong>These sample control adapters</strong> demonstrate&#8230;</em>&#8220;); and</li>
<li>On Scott Guthrie&#8217;s <a href="http://weblogs.asp.net/scottgu/archive/2006/05/02/CSS-Control-Adapter-Toolkit-for-ASP.NET-2.0-.aspx">blog post announcing the toolkit</a> (&#8221;<em>This toolkit provides information about how the <acronym title="Active Server Pages">ASP</acronym>.NET 2.0 Control Adapter Architecture works, as well as a set of 5 <strong>sample control adapters</strong> (with full source that you can optionally tweak/modify)&#8230;</em>&#8220;).</li>
</ul>
<p>I think it was very clear from the beginning that this was sample code to accompany documentation.  As such, I’m not sure where the author&#8217;s expectations came from.  Sample code is never intended to meet everyone&#8217;s needs, to be robust and full-featured, to be bug-free, or even to be maintained.  It is written to illustrate a concept.  Microsoft never &#8220;promised&#8221; anything with this code.</p>
<h4>Microsoft never &#8220;withdrew support&#8221;.</h4>
<p>Remember, this is sample code; it exists as part of official documentation to illustrate a concept.  This piece of official documentation is still hosted and provided by Microsoft at <a href="http://www.asp.net/cssadapters/">www.asp.net/cssadapters</a>, with a <a href="http://forums.asp.net/1018.aspx">forum</a> that is still visited by the original developer.  The base classes originally released in .NET 2.0 are still there in .NET 3.5.</p>
<p>Quite the opposite of withdrawing support, Microsoft released the code under the MS-Permissive license to allow re-use and then went a step further — they listened and responded to the community that sprung up in the forums by <a href="http://forums.asp.net/t/1083997.aspx">turning over future direction and development to the community</a>.  You can read through the forums if you want to know more of the history.  The community <em>wanted</em> to have control of this code, and expand upon what Microsoft had done since Microsoft had no intention of doing so itself.  Microsoft listened, and gave the community what it asked for.</p>
<h4>So what <em>is</em> wrong?</h4>
<p>I’ve never been a Microsoft apologist, and I’ve been a frequent critic of their products, their marketing, and their business practices.  But let&#8217;s give credit where credit is due. I applauded the decision to open source this code, and it turned out to be an early sign of a much more open and transparent way of doing business within this sector of the .NET division (<em>cf.</em>, <a href="http://www.asp.net/mvc/"><acronym title="Active Server Pages">ASP</acronym>.NET <acronym title="Model View Controller">MVC</acronym></a>).  While the author blames Microsoft for the lack of maintenance, that is entirely the fault of the community.  Let&#8217;s address a couple other common misconceptions within the Microsoft community.</p>
<ol>
<li><strong>The rate of binary releases does not reflect the health of the project.</strong> The author seems to think that the project is dead because there haven’t been any further binary releases since the move to CodePlex.  This seems to be a common view in the Microsoft ecosystem. In fact, the CodePlex site shows that there has been a regular (but not frequent) stream of code commits, including three commits so far in 2009.  In open source software, changes to the source are the key indicator of a project&#8217;s health, though things like project maturity obviously play a part in determining rate of change.</li>
<li><strong>Open source software is not freeware.</strong> Freeware is simply software that you aren&#8217;t asked to pay for. Open source software is software that you have the ability to fix for yourself. At least since April 2007, only one person has committed any code.  In the forum thread where Microsoft &#8220;handed over the keys&#8221;, <a href="http://forums.asp.net/t/1083997.aspx#1618082">the current maintainer posted</a>, &#8220;If anyone wants to be added to the developer list, send me your CodePlex user name and I&#8217;ll set you up.&#8221;  As of today, there are only four other developers listed in CodePlex and none of them seem to be actively contributing.  That’s a failing of the community, not of Microsoft.  The &#8220;you owe me&#8221; and &#8220;why don&#8217;t they fix it?&#8221; attitudes seems to be much more common in the Microsoft community than in the Java or Ruby communities.  Rather than complaining, send in a patch, as others have done.  Patches are almost always welcome, and they benefit everybody.</li>
</ol>
<p>Ultimately, the technical problems noted by the author are the fault of the community, not Microsoft. The community has the power to fix the code, but few have stepped up to the challenge.</p>
<h4>Microsoft is ultimately to blame for the situation.</h4>
<p>Wait&#8230; what?  At the top, I said I agreed 100% with the author&#8217;s main conclusion, and I do:</p>
<blockquote><p>Microsoft needs to redesign their server controls to emit accessible, semantically meaningful, layout-table-free markup from the get-go. In my opinion, they really dropped the ball by not doing this in <acronym title="Active Server Pages">ASP</acronym>.NET 3.5. If that had meant retaining some legacy 2.0 server control versions alongside their 3.5 counterparts, so be it. I can understand needing to maintain backward compatibility with 2.0 and not wanting to break existing sites. But that&#8217;s no reason to hobble designers who have long since abandoned layout tables.</p>
<p>Isn&#8217;t it about time Microsoft stopped kicking this can down the road? I mean come on, it&#8217;s 2008 for chrissake. Is lean, mean, and meaningful <acronym title="HyperText Markup Language">HTML</acronym> from <acronym title="Active Server Pages">ASP</acronym>.NET server controls too much to ask for at this point? If you ask me, it&#8217;s an idea whose time is long overdue.</p></blockquote>
<p>That really is the bottom line.  If Microsoft had built their controls to emit standards-compliant markup from the beginning, the entire ControlAdapter architecture would have never been necessary.  It is an ugly hack, but sadly necessary if you want to use WebForms <em>and</em> accessible, semantically meaningful <acronym title="HyperText Markup Language">HTML</acronym> without rewriting all your controls from scratch.  And that is what&#8217;s wrong with the <acronym title="Cascading Style Sheets">CSS</acronym> Friendly Control Adapters — the simple fact that they are necessary.</p>
<p>In term of their implementation, the <acronym title="Cascading Style Sheets">CSS</acronym> Friendly Control Adapters are a good 90% solution, and the ones I&#8217;m using in my current project do everything I want.  They aren&#8217;t perfect, but when I look back at the code I wrote last week, or last month, or last year, I can point to a lot of decisions I regret more than my decision to use these adapters. As long as I&#8217;m doing WebForms, I will continue to use them.</p><img src="http://feeds.feedburner.com/~r/quantum-organics/~4/BwlmLTVq54Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quantum-organics.com/blog/2009/01/29/whats-wrong-with-microsofts-css-friendly-control-adapters/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.quantum-organics.com/blog/2009/01/29/whats-wrong-with-microsofts-css-friendly-control-adapters/</feedburner:origLink></item>
		<item>
		<title>Resurrection</title>
		<link>http://feedproxy.google.com/~r/quantum-organics/~3/qnCHqrVkIlk/</link>
		<comments>http://www.quantum-organics.com/blog/2009/01/21/resurrection/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 04:59:32 +0000</pubDate>
		<dc:creator>Scott Caligan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://www.quantum-organics.com/blog/?p=18</guid>
		<description><![CDATA[Man, this blogging stuff is hard!  I started out several months ago with the modest goal of posting once a week, and how many posts have I written?  This is #3.  Pathetic, I know.  So what happened?  I had a work-related injury — my second work-related injury, which is somewhat impressive considering my job involves [...]]]></description>
			<content:encoded><![CDATA[<p>Man, this blogging stuff is hard!  I started out several months ago with the modest goal of posting once a week, and how many posts have I written?  This is #3.  Pathetic, I know.  So what happened?  I had a work-related injury — my second work-related injury, which is somewhat impressive considering my job involves sitting in front of a computer for hours on end, day after day, and I rarely even leave the house.</p>
<p>About the same time I decided to start blogging, I started getting some pretty significant pain and numbness in my right hand, typically extending from the outside of the wrist up through the tip of my pinky finger and part of my ring finger, occasionally radiating intense pain up the back of my forearm to my elbow.  At the time, I figured it was probably from a combination of resting my wrist on the hard edge of my mouse platform, and too much lateral wrist motion when using the mouse.  I took immediate action, buying new hardware and attempting to reduce my mouse usage.</p>
<p>For the hardware side of things, I replaced my mouse with a <a href="http://www.logitech.com/index.cfm/mice_pointers/trackballs/devices/166&amp;cl=us,en">Logitech TrackMan® Wheel</a>.  The design was a little awkward to adjust to at first, but it addressed both of my concerns. First, it eliminated the hand/wrist/arm motion required for moving the cursor.  Moving the cursor with the TrackMan is done by scrolling a giant ball with your thumb, while your hand remains stationary.  Second, the larger size of the device helps me maintain a better wrist posture, elevating the joint off of the mouse platform.</p>
<p>My strategy for reducing my mouse dependence had two components.  While working during the day, I practiced using more keyboard shortcuts and memorized them.  While off the clock in the evenings, I practiced staying away from the computer.  That meant no scouring eBay for rare audio recordings, no touching up photos of the kids, and no blogging.</p>
<p>Did it work?  Yes and no — it didn&#8217;t continue getting worse but it didn&#8217;t really get better, either.  So I finally went to the doctor, who referred me to a physical therapist, who conclusively determined that the problem was due to compression of the ulnar nerve in the elbow, i.e., <a href="http://en.wikipedia.org/wiki/Cubital_tunnel_syndrome">cubital tunnel syndrome</a>, possibly accompanied by additional compression in the wrist.  The likeliest culprit seemed to be the arm rest of my chair.  I had lost significant strength in my right (dominant) hand, and embarked on a month of physical therapy.  I did exercises to restrengthen my hand, wrist, and elbow, and exercises and ultra sound to help my nerve repair itself.  At the end of my course of treatment, I felt 98% better.</p>
<p>Then it got bad again a few weeks later, despite my new awareness and my ergonomic changes.  Finally, something clicked in my head (figuratively, I think).  I&#8217;d gotten into bed one evening and started having the really bad pain from my elbow to my finger, and remembered some questions the therapist had asked when I first went in for my evaluation.  I realized that I&#8217;d been sleeping for some time with my right hand under my pillow, my elbow bent in as far as it would go, pinned in place by my giant skull.  I got out of bed, splinted my elbow with a towel, and eventually fell asleep.  I slept with my elbow splinted for about a week and a half, and that seems to have fixed the problem.  I&#8217;ve since had a couple recurrences of the pain, but each time that happens, I splint my elbow at night and it gets better pretty quickly.</p>
<p>So now that I&#8217;m recovered from that, the holidays are over, and work has slowed down a bit, I&#8217;m going to give this another shot.  We&#8217;ll see how long it lasts!</p><img src="http://feeds.feedburner.com/~r/quantum-organics/~4/qnCHqrVkIlk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quantum-organics.com/blog/2009/01/21/resurrection/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.quantum-organics.com/blog/2009/01/21/resurrection/</feedburner:origLink></item>
		<item>
		<title>The Importance of the ALT.NET Movement</title>
		<link>http://feedproxy.google.com/~r/quantum-organics/~3/OAllHrXxnkw/</link>
		<comments>http://www.quantum-organics.com/blog/2008/07/07/the-importance-of-the-altnet-movement/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 04:36:59 +0000</pubDate>
		<dc:creator>Scott Caligan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[learning]]></category>

		<category><![CDATA[practices]]></category>

		<guid isPermaLink="false">http://www.quantum-organics.com/blog/?p=13</guid>
		<description><![CDATA[Or: Why Should I Care?
I know some of you are probably saying to yourselves, &#8220;what is the ALT.NET movement&#8221;? In short, the movement is a growing community of .NET developers who are frustrated with the tooling and guidance provided by Microsoft, as well as the closed, insular nature of the .NET development community.  The movement [...]]]></description>
			<content:encoded><![CDATA[<p>Or: <em>Why Should I Care?</em></p>
<p>I know some of you are probably saying to yourselves, &#8220;what <em>is</em> the ALT.NET movement&#8221;? In short, the movement is a growing community of .NET developers who are frustrated with the tooling and guidance provided by Microsoft, as well as the closed, insular nature of the .NET development community.  The movement is aimed at educating the .NET community and showing that there <em>are</em> proven alternatives to &#8220;the Microsoft way&#8221; in terms of software architectures and that there <em>are</em> mature, viable alternatives to the development tools produced by Microsoft.  So why is this important?<br />
<span id="more-13"></span></p>
<h4>These Lessons have Already Been Learned</h4>
<p>There are countless examples of proven practices and tools that are common in other object-oriented environments from Smalltalk to Java to Ruby that Microsoft has been slow to embrace or promote in .NET. Automated unit testing and test-driven development (<acronym title="test-driven development">TDD</acronym>) have never been given much support from Microsoft, yet it is an important part of a quality-first approach and has long been a core practice in Extreme Programming.  Model-view-controller (<acronym title="Model View Controller">MVC</acronym>) architectures have been around since 1979 and are widely used in other object-oriented platforms like Java.  The wildly popular Rails platform for Ruby is based around an <acronym title="Model View Controller">MVC</acronym> architecture.  Yet it has never been promoted by Microsoft, and has always been difficult to do in <acronym title="Active Server Pages">ASP</acronym>.NET.</p>
<p>Object-relational mapping (<acronym title="object-relational mapping">ORM</acronym>) is another architectural pattern that has long been ignored (and even dismissed) by the .NET community.  Object-oriented design produces models that are conceptually very different than the models used by relational databases, resulting in an &#8220;<a href="http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch">impedence mismatch</a>.&#8221; An <acronym title="object-relational mapping">ORM</acronym> framework aims to mask the complexity of this mapping, allowing object-oriented software to evolve independently of its relational data store.  Hibernate has practically become the standard <acronym title="object-relational mapping">ORM</acronym> in the Java world since its creation in 2001. It is integrated with all the major application frameworks and is even used by Google.  Why not apply these lessons to .NET development?</p>
<h4>Your Job Could Be Easier</h4>
<p>In the mainstream Microsoft development community, the majority of the focus is placed on data-centric architectures and rapid application development through visual tooling.  Chances are that if you&#8217;ve ever worked on larger-scale projects, or systems that need to evolve over time or be maintained for any period of time, you&#8217;ve run into problems with the Microsoft way and encountered pain.  The Microsoft endorsed approach to data access has long been to work from the data model, building stored procedures, and accessing the procedures through data access objects (DAOs).  Using code generation techniques, this can be a fairly fast process, using metadata to create both the stored procedures and DAOs instantly.</p>
<p>But what happens next?  What if you&#8217;ve put business logic into the stored procedures?  What if you&#8217;ve customized your DAOs?  What do you do when you have to add new columns to one of your tables?  You end up having to manually update your insert procedures, your update procedures, and probably a handful of retrieval procedures.  Then you have to update all of your DAOs to match the updated procedures. You may end up with some DAO methods that only partially populate your business objects. If so, you have to mentally keep track of how you got the data and whether that particular method returned all the data you need.  And how would you go about unit testing your application?</p>
<p>If you&#8217;re working on a small project, or a throwaway prototype, this might not be a big deal.  On the other hand, if you&#8217;re working on a larger project or if your system is evolving from month to month over a year or more, you&#8217;ve got a lot of pain ahead of you.  Why not use an <acronym title="object-relational mapping">ORM</acronym>?  Microsoft is finally getting with the times and releasing their own <acronym title="object-relational mapping">ORM</acronym> solutions, like the Entity Framework and Linq, but these aren&#8217;t the only options. In fact, they may not be the best options for you.  Both are in their 1.0 releases and have limited support for databases beyond <acronym title="Structured Query Language">SQL</acronym> Server.  Mature alternatives exist.  For example, <a href="http://www.nhibernate.org">NHibernate</a> is a .NET port of Java&#8217;s Hibernate <acronym title="object-relational mapping">ORM</acronym> framework.  It is built on a solid foundation, backed by 5+ years of experience and lessons.  It supports all the major databases out of the box, and can be easily extended. It performs well. It is built on top of ADO.NET, and makes it fairly easy to use custom <acronym title="Structured Query Language">SQL</acronym> or stored procedures using the ADO.NET <acronym title="Application Programming Interface">API</acronym> you&#8217;re already familiar with. Plus it is an open source tool, meaning that there is zero cost involved.</p>
<p>The point here isn&#8217;t that you should always use an <acronym title="object-relational mapping">ORM</acronym>, or that you should use NHibernate rather than Entity Framework or Linq or some other .NET <acronym title="object-relational mapping">ORM</acronym> like <a href="http://code.google.com/p/wilsonormapper/">WORM</a> or <a href="http://www.llblgen.com">LLBLGen</a>.  The point is that mature, viable alternatives exist.  <acronym title="Model View Controller">MVC</acronym> frameworks like <a href="http://castleproject.org/monorail/">Castle MonoRail</a> and <a href="http://www.springframework.net">Spring.NET</a> have evolved from implementations in the Ruby and Java worlds.  Unit testing frameworks like <a href="http://www.nunit.org">NUnit</a> and <a href="http://www.mbunit.com/">MbUnit</a> are free and have been around a lot longer than Microsoft&#8217;s current offering, which is still only available with the professional edition (or higher) of Visual Studio 2008.  One of the primary objectives of the ALT.NET movement is to increase awareness of these alternatives within the .NET community.</p>
<h4>Microsoft is Listening&#8230; and Responding</h4>
<p>This movement wouldn&#8217;t be so important if Microsoft wasn&#8217;t listening.  Fortunately they are, and the ALT.NET movement is already having a huge impact at Microsoft itself.  The movement was named by Microsoft MVP <a href="http://laribee.com/blog/2007/04/10/altnet/">Dave Laribee</a> in April 2007 and quickly gained momentum in a segment of the MVP community and the .NET open source community. Over the next several months, Microsoft made a number of key hires from within this community, including high-profile bloggers like <a href="http://www.hanselman.com/blog/IsMicrosoftLosingTheAlphaGeeks.aspx">Scott Hanselman</a> in July and <a href="http://haacked.com/archive/2007/05/20/is-web-development-the-only-development-that-matters.aspx">Phil Haack</a> and <a href="http://blog.wekeroad.com/blog/have-we-aspnet-geeks-lost-something/">Rob Conery</a> a few months later. This instantly created high volume, high impact dialog between Microsoft&#8217;s development teams and the ALT.NET community, and showed Microsoft&#8217;s commitment to the community.</p>
<p>These people weren&#8217;t brought in to act as Microsoft marketing drones, either—they are programmers, after all. They joined <a href="http://weblogs.asp.net/scottgu/default.aspx">Scott Guthrie</a> and company in the developer division to lead work on the <a href="http://www.asp.net/mvc/"><acronym title="Active Server Pages">ASP</acronym>.NET <acronym title="Model View Controller">MVC</acronym> framework</a>.  In October, the framework was <a href="http://weblogs.asp.net/scottgu/archive/2007/10/14/asp-net-mvc-framework.aspx">publicly unveiled</a> at the first ALT.NET conference in Austin, Texas.  The framework itself shows that Microsoft is listening, and is truly acting on a lot of the feedback it receives.  It is designed to be extensible and integrate with current open source <acronym title="inversion of control">IoC</acronym> containers like <a href="http://www.castleproject.org/container/index.html">Windsor</a>, <a href="http://www.springframework.net">Spring.NET</a> and <a href="http://structuremap.sourceforge.net">StructureMap</a>.  It is designed to be testable, and Microsoft has provided guidance on creating testing templates for open source testing frameworks like <a href="http://www.nunit.org">NUnit</a>, <a href="http://www.mbunit.com/">MbUnit</a>, and <a href="http://www.codeplex.com/xunit">xUnit.net</a>.</p>
<p>In March 2008, <em><acronym title="Microsoft Developer Network">MSDN</acronym> Magazine</em> focused on a number of ALT.NET topics, including the <acronym title="Active Server Pages">ASP</acronym>.NET <acronym title="Model View Controller">MVC</acronym> framework, the concept of inversion of control (<acronym title="inversion of control">IoC</acronym>), and the process of continuous integration. The issue concluded with an article from Jeremy Miller entitled <a href="http://msdn.microsoft.com/en-us/magazine/cc337902.aspx">&#8220;What is ALT.NET?&#8221;</a>.</p>
<p>More recently, the ALT.NET community has expressed <a href="http://www.infoq.com/news/2008/06/entity-framework-heat">serious concerns</a> about Microsoft&#8217;s new Entity Framework.  The EF Team <a href="http://blogs.msdn.com/timmall/archive/2008/06/24/vote-of-no-confidence.aspx">responded to the concerns</a>, and while no changes will be made to the upcoming release, the response was both quick and candid, and pledged a more transparent design process going forward.  Hopefully they will follow the lead of the <acronym title="Active Server Pages">ASP</acronym>.NET <acronym title="Model View Controller">MVC</acronym> team.</p>
<p>At any rate, Microsoft&#8217;s commitment seems clear. The ALT.NET movement will continue to have an impact on the tools and guidance released by Microsoft, and that will have an enormous impact on all .NET developers. If you&#8217;d like to try to make sense of it all, look beyond Microsoft to the ALT.NET community. Hopefully ALT.NET will continue to expand its outreach into the broader .NET community, providing guidance on non-Microsoft tools and continuing striving to incorporate ideas from other developer communities into mainstream Microsoft development.</p>
<h4>More Resources</h4>
<p>If you want to stay informed about your options as a .NET developer beyond the Microsoft press releases, or want to learn more about how practices and patterns from other platforms can be applied to .NET development today, the ALT.NET community can help.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/magazine/cc337902.aspx">&#8220;What is ALT.NET?&#8221;</a> by Jeremy Miller, March 2008 issue of <em><acronym title="Microsoft Developer Network">MSDN</acronym> Magazine</em></li>
<li><a href="http://www.infoq.com/news/2007/10/fowler-alt.net">&#8220;ALT.NET important to the viable future of the Microsoft ecosystem&#8221;</a> by Udi Dahan, October 2007</li>
<li><a href="http://tech.groups.yahoo.com/group/altdotnet/">ALT.NET Yahoo Group</a></li>
<li><a href="http://altnetpedia.com">Altnetpedia</a></li>
<li><a href="http://www.codebetter.com">CodeBetter.com</a></li>
<li><a href="http://altnetpodcast.com/">Alt.NET Podcast</a></li>
</ul><img src="http://feeds.feedburner.com/~r/quantum-organics/~4/OAllHrXxnkw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quantum-organics.com/blog/2008/07/07/the-importance-of-the-altnet-movement/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.quantum-organics.com/blog/2008/07/07/the-importance-of-the-altnet-movement/</feedburner:origLink></item>
		<item>
		<title>Becoming a Better Programmer (An Introduction)</title>
		<link>http://feedproxy.google.com/~r/quantum-organics/~3/RJHTbClsjyQ/</link>
		<comments>http://www.quantum-organics.com/blog/2008/06/22/becoming-a-better-programmer-an-introduction/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 01:14:02 +0000</pubDate>
		<dc:creator>Scott Caligan</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://www.quantum-organics.com/blog/?p=5</guid>
		<description><![CDATA[Hi, I&#8217;m Scott.  I have been developing software professionally for the past ten years. I&#8217;ve learned a lot during that time, but when I began working in .NET about two years ago, I quickly realized that I had a lot of learning to do. I had been working mostly in ColdFusion and PHP for the [...]]]></description>
			<content:encoded><![CDATA[<p>Hi, I&#8217;m Scott.  I have been developing software professionally for the past ten years. I&#8217;ve learned a lot during that time, but when I began working in .NET about two years ago, I quickly realized that I had a lot of learning to do. I had been working mostly in ColdFusion and <acronym title="PHP: Hypertext Preprocessor">PHP</acronym> for the previous three or four years, and had focused on old school <acronym title="Active Server Pages">ASP</acronym> before that. Sure, a lot of my knowledge and experience was relevant. <acronym title="HyperText Markup Language">HTML</acronym>, <acronym title="Cascading Style Sheets">CSS</acronym>, and JavaScript hadn&#8217;t changed much.  <acronym title="Structured Query Language">SQL</acronym> Server and Oracle hadn&#8217;t either.  But as an application developer, the focus is that middle area&#8212;the application&#8212;and after working in (predominantly) procedural languages for eight years, the sudden shift to an object-oriented platform was slightly overwhelming. In my mind, I had three options: give up and go back to a procedural language, try to bend the platform to my procedural mindset, or adopt an object-oriented mindset and become a better programmer.<span id="more-5"></span></p>
<p>Hopefully it is obvious from the title of this post that I chose the third path. Object-oriented programming (<acronym title="object-oriented programming">OOP</acronym>) is not a trend.  It wasn&#8217;t invented yesterday, and it isn&#8217;t going away any time soon. When Microsoft released the .NET framework in 2002, forcing the legions of Visual Basic programmers to learn the new object-oriented <acronym title="Visual Basic">VB</acronym>.NET or perish, that was as clear a signal as any that not only was <acronym title="object-oriented programming">OOP</acronym> here to stay&#8212;it was the mainstream.</p>
<p>I wasn&#8217;t starting completely from scratch. The computer science curriculum from the late &#8217;90s placed a heavy emphasis on <acronym title="object-oriented programming">OOP</acronym>, and I learned it via C++ and Java during that time.  Still, eight years away is a long time and I had a lot that I needed to relearn and I&#8217;d developed a lot of habits that I needed to unlearn. The industry hadn&#8217;t stopped to wait for me, either. Agile development practices now seem intimately linked to <acronym title="object-oriented programming">OOP</acronym> and provide a framework of best practices for ensuring quality. Meanwhile, my family still expects to be fed, and my clients still expect me to deliver software.</p>
<p>I am starting this blog in large part to share my experiences learning <acronym title="object-oriented programming">OOP</acronym> and agile development. In the May/June 2008 issue of <a href="http://www.code-magazine.com">CoDe Magazine</a>, Microsoft <acronym title="Most Valuable Professional">MVP</acronym> Jean-Paul Boodhoo wrote a terrific article called <a href="http://www.code-magazine.com/Article.aspx?quickid=0805021">&#8220;Individuagility&#8221;</a> in which he outlines his approach to teaching agile development. His steps correspond fairly neatly to my own experiences so far. The last point in his list does a great job of summarizing why I have undertaken my personal journey, and why I am documenting it:</p>
<blockquote><p>Become a student of your profession. Most of the people who embark down this style of development do so because they have a passion to want to deliver applications that both please the user as well as please other developers who maintain the code. Like anything else in life, if you want to excel in anything you have to be willing to sacrifice a little. What does this mean? Make a commitment to read a book a month. Take time to download a tool you have no idea about and start spiking it. Speak at a user group. Write a magazine article about your learning. Passion breeds passion. If you get infected, more often than not, others around you will want to take part in the learning that you are going through!</p></blockquote>
<p>Hopefully I&#8217;ll be able to impart some of my passion and advice, and motivate others to start or continue similar journeys.  My goal is one post per week, but as this post is just an introduction I&#8217;m going to try to follow it up in the next day or two with some actual content.  Stay tuned!</p><img src="http://feeds.feedburner.com/~r/quantum-organics/~4/RJHTbClsjyQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.quantum-organics.com/blog/2008/06/22/becoming-a-better-programmer-an-introduction/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.quantum-organics.com/blog/2008/06/22/becoming-a-better-programmer-an-introduction/</feedburner:origLink></item>
	</channel>
</rss>
