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

<channel>
	<title>Wagnerblog &#187; Uncategorized</title>
	<atom:link href="http://wagnerblog.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://wagnerblog.com</link>
	<description>Development Ideas and Ramblings</description>
	<lastBuildDate>Fri, 06 Nov 2009 19:11:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tearing down walls</title>
		<link>http://wagnerblog.com/2009/11/tearing-down-walls/</link>
		<comments>http://wagnerblog.com/2009/11/tearing-down-walls/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 16:23:29 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1074</guid>
		<description><![CDATA[
This month marks the 20th anniversary of the fall of the Berlin Wall. Having grown up in East Germany and defected in 1979, I have  a special connection with this symbol of oppression. To most of us living behind this wall it really seemed insurmountable. For starters, unlike the West Berlin side where people had [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-1075" style="border: 1px solid black; margin: 3px;" title="Berlin Wall 2" src="http://wagnerblog.com/wp-content/uploads/2009/11/Berlin-Wall-2.jpg" alt="Berlin Wall 2" width="600" height="398" /></p>
<p style="text-align: left;">This month marks the 20th anniversary of the fall of the Berlin Wall. Having grown up in East Germany and defected in 1979, I have  a special connection with this symbol of oppression. To most of us living behind this wall it really seemed insurmountable. For starters, unlike the West Berlin side where people had free access to the wall, in the East you could not even get close to it.  If you tried to approach it you would get shot. While the West has used the wall time and time again as a staging ground of political and cultural assaults on the oppressive East German and Soviet regime, in the East the government cleared entire buildings of occupants because of the close vicinity to the wall.</p>
<p style="text-align: left;">From Kennedy&#8217;s famous quote of &#8220;Ich bin ein Berliner&#8221; ( I am a Berliner), to Reagan&#8217;s challenge of &#8220;Mr. Gorbachev &#8211; tear down this wall &#8221; even down to U2 performing concerts in Berlin singing about &#8220;scale these city walls&#8221; &#8211; no other symbol in modern times has stood for the oppressive regime fostered on the former Soviet Occupation Zone  after WW2.</p>
<p>As much as I may think this anniversary is important, it only seems that way to a minority of people in the world. German Chancellor Angela Merkel during her recent visit to Washington DC invited US President Obama to the 20th Anniversary festivities.  I am told he politely declined. The Berlin Wall doesnt rank that high on current political agendas anymore. In Obama&#8217;s defense, even within Germany itself I find an entire generation of kids having grown up after the fall of this wall who nowadays have next to no connection at all with it , nor with  the former East German country.  Many of these teenagers who are  now the same age as my own daughter point to a distorted image being handed down by parents and relatives that are having a hard time adjusting to life in the competitive world of free economies. Many members of my generation are infected with nostalgia about the old system. Freqently you will hear descriptions like &#8221; things weren&#8217;t really that bad. We all were in it together. Everybody had work and everybody had a roof over their head&#8221; &#8211; unfortunately, much like an Adult Survivor of Child Abuse will see the former abuse in less severe terms, these folks often see East Germany through rose colored glasses of nostalgia and  don&#8217;t remember having to stand in line at stores to get something as simple as bread &#8211; or the fact that every other person you meet was likely to be an informant.</p>
<p><img class="alignright size-medium wp-image-1076" style="border: 1px solid black; margin: 3px;" title="Berlin Wall Freedom" src="http://wagnerblog.com/wp-content/uploads/2009/11/Berlin-Wall-Freedom-300x200.jpg" alt="Berlin Wall Freedom" width="300" height="200" /></p>
<p>Yes life is different in a free society when your no longer told what to read, think or believe.  But overall I much prefer it this way.</p>
<p>President Obama could not make it to the 20th anniversary, neither could President Reagan for obvious reasons &#8211; but U2 can ! Bono and his group are performing under the Brandenburg Gate in a massive concert being televised via MTV Germany. Good for him.</p>
<p>For many years after our defection I used to have nightmares about the Stasi finding us in the US and taking us back to East Germany. As I watched the wall coming down in 1989, almost ten years after we made it into the West,  sitting in the comfort of my living room in Los Angeles I did not realize how much fear I had carried with me.  It wasn&#8217;t until tears streamed down my face and I cheered for all the East Berliners crossing over into the West that I sensed a mighty feeling of relieve.  A weight that I did not know had been there was lifted off my shoulders.</p>
<p>Thinking back 20 years, it still amazes me  how profoundly an event that affected 15 million East German&#8217;s in the middle of Europe also affected one singular person  thousands of miles West of the Berlin Wall. Even though I had been free &#8220;on paper&#8221; for ten years already,  I felt a profound sense of freedom rolling over me as I saw wave after wave of East Germans pass into the West.  I laughed, cried, and clapped my hands remembering the old saying &#8221; Would the last person leaving East Germany please turn out the lights&#8221; .</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1077" style="border: 1px solid black;" title="Berlin Wall U2" src="http://wagnerblog.com/wp-content/uploads/2009/11/Berlin-Wall-U2-300x187.jpg" alt="Berlin Wall U2" width="300" height="187" /></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/11/tearing-down-walls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You don&#8217;t have to be 100 percent Agile to be productive</title>
		<link>http://wagnerblog.com/2009/11/you-dont-have-to-be-100-percent-agile-to-be-productive/</link>
		<comments>http://wagnerblog.com/2009/11/you-dont-have-to-be-100-percent-agile-to-be-productive/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 00:18:58 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[qa]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1048</guid>
		<description><![CDATA[Under the best of circumstances, Agile Methodologies &#8211; especially SCRUM &#8211; puts the development team smack dab in the center of the process and has the entire life cycle revolve around it. That’s why so many programmers love Agile. But even organizations that, for whatever reason, are not able to support a 100% Agile environment [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-1051" style="border: 1px solid black; margin: 5px;" title="bullseye" src="http://wagnerblog.com/wp-content/uploads/2009/11/bullseye-300x225.jpg" alt="bullseye" width="300" height="225" />Under the best of circumstances, Agile Methodologies &#8211; especially SCRUM &#8211; puts the development team smack dab in the center of the process and has the entire life cycle revolve around it. That’s why so many programmers love Agile. But even organizations that, for whatever reason, are not able to support a 100% Agile environment can benefit from some of the basic tenets of SCRUM.</p>
<p>Let’s get one thing out of the way. If you are a programmer, chances are you would love SCRUM. Love with a capital L.  I mean really…. Think about it… if you come from the typical top down process where “Moses delivers the ten commandments to the tribes”  -  in other words the Dir of Development sits the team down and explains XYZ has to be done in 4 weeks – if you come from that sort of place, and find yourself in an agile world where programmers look at “user stories” and estimate sprints while an entire team discusses and sets the schedule – you’d probably feel like you’ve made a wrong turn somewhere and ended in alternate universe.</p>
<p>Suffice it to say there is definitely a culture shift across an entire organization when you switch to Agile. Some companies may not be quite as ready as others to embrace the change.</p>
<p>One of the first victims to get hit by an Agile team is the persona of Heroic Programmer. The type of programmer who by design or default likes to single handedly save everyone’s bacon. Agile focuses on the effort, communication and process of the ENTIRE team – not just the lone gun slinger. People who need to be the Heroic Programmer in a company often will not like Agile very much.</p>
<p>Another victim of the rising popularity of Agile are dev shops that operate on outdated principles and support dysfunctional processes. Through the emphasis on team empowerment I find more and more developers take up the battle cry of “Give me Agile or give me … [fill in the blank]”  A recruiter friend tells me about candidates who will not entertain an offer at all if it  isn’t  in an agile shop. Kudos to them. There is much to like about improved team communication and process enhancements.</p>
<p>Even if your own company cannot be 100%  formally Agile, with everyone buying into the change,  perhaps you can use some aspects of the methodology to improve your own processes. That has been my experience.</p>
<p>One of the key features of Agile (SCRUM) methodologies is the prevention of process hijacking. In  my 20 years of work experience I found two major types of development shops – those driven by engineers and those driven by sales people. Whichever group controls the process ends up setting the corporate culture. Agile shares responsibility between both groups and therefore prevents either group from hijacking the environment. That’s admirable.</p>
<p>Agile teams work hard to deliver predictable, high quality results in a relatively difficult setting. Difficult because software development all too often seems to go against a normal  predictive process. Unlike a Model A Ford, software cannot be built in an assembly line fashion. Hence the difficulty.</p>
<p><img class="aligncenter size-full wp-image-1060" title="heroic" src="http://wagnerblog.com/wp-content/uploads/2009/11/heroic3.jpg" alt="heroic" width="600" height="197" /></p>
<p>The mandate of Agile development is to create an environment where that uncertainty is removed through an iterative process and  much, much, much more communication than any other development methodology I have seen.  Meetings before things get built, meetings while things get built and more meetings after your done building things.</p>
<p>I have seen two interesting situations in all these meetings: programmers who by nature might be more introverted become much more open, and stakeholders who are used to issuing an edict and walking away become much closer to the development team. Both are good things.</p>
<p>There are a number of books on the market that describe Agile and SCRUM better than I can, but in a summarized form, Agile consists of</p>
<ul>
<li>A prioritized product backlog of themes, epics and user stories</li>
<li>A self managing and empowered, cross functional team</li>
<li>A SCRUM Leader / Master</li>
<li>One or more product owners / stake holders</li>
<li>Sprints that break user stories into tasks and produce a certain amount of work over a specified time, most frequently 10 business days.</li>
</ul>
<p>Of course those are only the highlights. There are a number of important “ceremonies” and behavioral changes that come with the SCRUM territory. For example the practice of daily stand up meetings where team members briefly touch on what is on their plate.</p>
<p>In my own experience, the area where Agile makes the greatest impact is in the shared responsibility and empowerment of the team. By giving the team a way to estimate, manage and build code quickly and iteratively the group as a whole tends to be very productive.</p>
<p>During my time as VP of Server Development of SkillJam Inc. I was able to move a dev team toward a more agile approach by making sure a few key features were in place. First and foremost, we instituted a good product backlog.  I purchased enough licenses of Fogbugz to take care of all developers, QA People,  project managers and product stakeholders in the organization. I cannot tell you how important some of the seemingly simple features of Fogbugz became once we started cranking out code. Something as simple as an email conversation thread being automatically stored and associated with the task or issue in Fogbugz is a life saver. (Instead of logging into Fogbugz to record a comment, an email reply to a mail sent from Fogbugz automatically shows up in the right position within the task comments. Nice!)</p>
<p>Having set up FogBugz we got busy producing a big picture prioritized list of work. Any bug, any feature request and even entire new products where organized by themes , user stories and tasks within the stories.</p>
<p>After some arm wrestling with the key product stakeholders and other Senior Management Team members I was able to get buy-in for the concept of 10 business day sprints ( 2 calendar weeks). These sprints could not be interrupted for unplanned tasks under any circumstances. That’s not to say an emergency shouldn’t be addressed by the team.  But let me tell you,  its not easy convincing a CEO that giving up the ability to demand something RIGHT NOW is good for business. In the end it was the prospect of better schedule adherence, better quality and lower defect counts that sold this effort.</p>
<p>As I said, we were not formally Agile across the entire board. Our organization loved a considerable amount of design up front. That meant more information was written down and documented in formal requirements than you would typically see in an agile shop.</p>
<p>At the same time, our developers and qa analysts met several times a week for progress checks – admittedly this could have been handled with daily stand up meetings to which we could have invited visitors ( as long as the visitors kept quiet), but in a nod to the PMO we continued with the legacy status meetings.</p>
<p>As work progressed through a sprint we needed to look ahead at the pipeline ( the product backlog ) . So toward the end of a given sprint the team leaders and myself would spend some time planning the next iteration to make sure we could address any problems before we had our next Sprint is to kick off. For the actual kick off itself, the entire dev team (including qa people) gathered around a large conference table where we projected to prioritized backlog out of Fogbugz on a large screen. The team as a whole took on the User Stories needing to be built – based on prioritization – and committed to a certain amount of work being done in the sprint. Frequently we invited stakeholders and product owners to these meetings in order to get immediate feedback to questions that helped us with the production of a Sprint schedule.</p>
<p>That’s it. Simple and straight forward. I was blessed with a fantastic team who had been working together for a while already. That made SCRUM planning easier. And yes I know this wasn’t the  comprehensive SCRUM setup that you read about in the many Agile books on the market, but even in this pared-down format we were able to reap the benefits of planned iterative production.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/11/you-dont-have-to-be-100-percent-agile-to-be-productive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LLBLGen &#8211; Linq  &#8211; NHibernate &#8211; an embarrassment of riches</title>
		<link>http://wagnerblog.com/2009/10/llblgen-linq-nhibernate-an-embarrassment-of-riches/</link>
		<comments>http://wagnerblog.com/2009/10/llblgen-linq-nhibernate-an-embarrassment-of-riches/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 21:33:27 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[data access]]></category>
		<category><![CDATA[EF]]></category>
		<category><![CDATA[LLBLGen]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1034</guid>
		<description><![CDATA[Recently I was asked “ What technology do you recommend Linq or NHibernate” ?  My knee jerk reaction was “ It depends – potentially neither”. But that’s not good enough as an answer. The feeling that I owed a better explanation led me to this post.
Let’s start with some basics. Object Relational Modeling has been [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was asked “ What technology do you recommend Linq or NHibernate” ?  My knee jerk reaction was “ It depends – potentially neither”. But that’s not good enough as an answer. The feeling that I owed a better explanation led me to this post.</p>
<p>Let’s start with some basics. Object Relational Modeling has been around for quite some time. The work by Dr. Raymond Chen has informed the design process of ORM systems for almost 30 years now. <a href="http://wagnerblog.com/2006/06/extra-extra-microsoft-to-use-30-year-old-data-model-in-adonet/" target="_blank">I posted 3 years</a> ago that even Microsoft based its own decisions on the work of Dr. Chen.</p>
<p>Fast forward 3 years and it seems that many MS shops think that Business Objects, or ORM, in .NET 3.5 requires Linq.  Far from it. There are other, potentially more rewarding ways of doing ORM in .NET. Two prominent and mature alternatives on the market  are NHibernate and LLBLGen.</p>
<p>I should qualify one thing right up front: Linq tries to be more than an ORM tool. By definition Linq is “ a set of proprietary query operators that can be used to query, project and filter data in arrays, enumerable classes, XML (XLINQ), relational database, and third party data sources “</p>
<p>In short, Linq is more than a typical ORM mapper against a database. That is its strength and also potentially its downfall when compared to ORM mapper. While I personally think its great to use Linq to query things like Directory Structures or Strings, I also personally think that both NHibernate and LLBLGen are better at ORM – much the same way that SQL Server is better at managing data than say an XML document. Specifically, for example, Linq requires a developer to <a href="- http://www.west-wind.com/Weblog/posts/38838.aspx" target="_blank">jump through some hoops when lazy loading an object graph</a>. In addition the query tree expression generation code that Linq employes makes some odd decisions on occasion. That can lead to severely slow query performance.</p>
<p>As it stands, Linq is the 800Ib gorilla in the room because it originates with Microsoft. That means developers need to be able to work with it and the third party tool market has to cater to this by potentially adjusting its products to work with Linq.</p>
<p>Linq is extensible via a Provider pattern that implement the IQueryable&lt;T&gt; interface. A quick search of the Internet brought back examples of providers for CSV, OpenMapi and even Twitter. But writing a good Linq provider is no picnic at all. Many providers on the market today only cover a subset of the Linq spectrum. Writing a full-fledged Linq provider has taken one of the best programmers in the business almost a year and it is 1.2MB large. That should be a caveat for anyone contemplating that this is an easy task.</p>
<p>While Linq as a technology wants to be more than just an Object Relational Mapper for databases, both NHibernate and LLBLGen are exactly that and don’t try to be anything else. As a matter of fact, in the big scheme of things both tools are “closer to the metal” than Linq.  So much so that both tools offer a Linq provider that allows a developer to run Linq against NHibernate or Linq against LLBLGen. In that manner both tools broaden their market scope and build on the knowledge that developers have acquired when coming to the ORM space from MS centric projects. I am told by users who have tried the NHibernate Linq provider that it is still a bit immature at the time of this post. This just underscores the difficulty of writing a good one.</p>
<p>What then is the difference between NHibernate and LLBLGen? As far as I am concerned the differences fall into three large areas:   product philosophy, developer productivity and vendor quality / product maturity .<br />
<strong><br />
Product Philosophy: </strong><br />
NHibernate approaches the concept of building entities and mappers from the stand-point of designing business objects first, without any regard for databases or persistence structures at all.</p>
<p>LLBLGen, on the other hand, adheres closely to the work of Dr. Raymond Chen mentioned earlier. It builds entities on the basis of a database schema.</p>
<p>The tool of choice here really depends on how you approach the ORM space. Do you prefer to work with objects first and disregard persistence? For the time being NHibernate makes that easier than LLBLGen. I should point out that the next version of LLBLGen, due in a few months, has one incredible advantage over the competition &#8211; it will support Model-First development.  By encompassing both design philosophies the LLBLGen designer tool &#8211; which by the way is the only fully functional designer tool in the ORM market &#8211; will cater to both camps. Essentially LLBLGen will allow you to work with NHibernate files, its own providers as well as Linq. Its a win win win situation.</p>
<p><img class="alignleft size-medium wp-image-1044" title="LLBLGen" src="http://wagnerblog.com/wp-content/uploads/2009/10/LLBLGen-300x236.jpg" alt="LLBLGen" width="300" height="236" /></p>
<p>Personally I have always worked with the db first approach.  I understand and sympathize with the object first approach. But the majority of my larger projects have existing databases. For instance I can’t very well insist that Chevron change its db structures, just to accommodate my ORM system.</p>
<p>LLBLGen makes work with existing data structures a breeze. Unlike NHibernate it supports multiple databases within one project, foreign key relations, prefetch paths and typed lists</p>
<p>As a side note, if you want to learn more about the object design first approach I recommend Jimmy Nilsson’s book “<a href="http://www.amazon.com/Applying-Domain-Driven-Design-Patterns-Examples/dp/0321268202/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1255642840&amp;sr=8-1" target="_blank">Applying Domain Driven Design Patterns</a>”.  It’s a fantastic work on that subject.</p>
<p><strong>Developer Productivity:</strong><br />
LLBLGen runs within a  separate development IDE (not within Visual Studio) and is by far the more productive tool. Turning a database into entities and using them in a project requires but a few clicks and option selections.</p>
<p>In NHibernate the developer is asked to hand code empty business objects (usually POCO’s) , then  manipulate an XML mapping file. I realize the typical argument here is to point out that this approach offers more control to the developer. Yes it does.  But the fine grained approach impacts productivity whenever changes need to made after the initial design. Especially with larger projects the need to work at a fine grained level can become cumbersome. After all the mapping files in NHibernate do not live in a vacuum.</p>
<p>A couple of years ago I had the pleasure of watching a longtime Hibernate architect become completely addicted to the productivity of LLBLGen. He literally was blown away by how much he could accomplish in very little time. In the end, the formerly dreaded change / update cycle became one of his biggest tools in being productive. My colleague took part in building one of the larger real estate loan processing engines in the US using Hibernate and Java &#8211; he knew those products inside out.<br />
<strong><br />
Vendor quality / Product maturity:</strong><br />
If you are faced with a tricky medical decision, whom would you trust more – a GP who deals with a variety of medical issues or a specialist that eats,  sleeps and breaths the specialty you need?  In other words if you can see the quality of the people whom you trust would that help in your decision process? It does in mine.</p>
<p>How smart are the people behind the tools you choose? In the case of LLBLGen and NHibernate I’d say the development is headed by a couple of programmers who are absolutely the best in the field (Ayende Rahien and Frans Bouma).  Contrast that to another ORM tool on the market – the MS Entity Framework and its problems over the past three years and you can see how essential the capabilities of the core devs in a tool like this really are.</p>
<p>Both LLBLGen and NHibernate are mature within the marketplace. NHibernate builds on its “big brother” Hibernate for Java.  While NHibernate is a failry mature open source project, LLBLGen is the most mature commercial tool of its kind in the .NET market.</p>
<p>Open Source projects are great in many ways – especially after they have settled down a little. But as a personal choice I will frequently pick a good commercial product over an open source one. There are several reasons for that. When your reputation is on the line with the projects you implement, its good to have a person who is directly responsible to you by the fact that you paid for their product. Granted with some vendors that’s a useless measuring stick but in a comparison between NHibernate and LLBLGen, I favor the latter because a very specific person is responsible for the performance of the product.</p>
<p>Overall there is a great sense of design and continuity in the product. I have used it since 2003 and I am here to tell you that in 6 years, through dozens of commercial projects for a raft of important customers – from Chevron to ITT Corp and Chrysler; from Lycos to Gameshow Network – accounting for several thousand man-hours of work it has never let me down.</p>
<p>Since this is not a product review I would urge you to visit the llblgen website and have a look. Features like visual inheritance definition, non-overwrite of custom code, support for all relationship types (1:1 ; 1:M ; M:1 and M:M) and much more can be reviewed there. And of course take a look at the NHibernate site as well. There is much to like in both tools. As it stands when someone asks me &#8220;Linq or NHibernate&#8221; I am very likely to answer &#8220;Neither my friend&#8230; but let me tell you about the tool that you should use ! &#8221;</p>
<p>Update:  10-31-2009 &#8211; I just had to include Mohammed Meligy&#8217;s post because his experience parallels mine. <a href="http://weblogs.asp.net/meligy/archive/2009/10/31/which-orm-linq-to-sql-entity-framework-llblgen-nhibernate.aspx">Here is a link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/10/llblgen-linq-nhibernate-an-embarrassment-of-riches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile / Extreme Programming</title>
		<link>http://wagnerblog.com/2009/08/agile-extreme-programming/</link>
		<comments>http://wagnerblog.com/2009/08/agile-extreme-programming/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 14:59:32 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Extreme]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1030</guid>
		<description><![CDATA[Sometimes I wonder if Scott Adams is wiser than he is given credit for.


]]></description>
			<content:encoded><![CDATA[<p>Sometimes I wonder if Scott Adams is wiser than he is given credit for.</p>
<p><img src="file:///C:/Users/Thomas/AppData/Local/Temp/moz-screenshot.png" alt="" /></p>
<p><img class="alignleft size-full wp-image-1031" title="ScreenShot146" src="http://wagnerblog.com/wp-content/uploads/2009/08/ScreenShot146.jpg" alt="ScreenShot146" width="692" height="526" /></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/08/agile-extreme-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC Impressions after 1 week</title>
		<link>http://wagnerblog.com/2009/06/aspnet-mvc-impressions-after-1-week/</link>
		<comments>http://wagnerblog.com/2009/06/aspnet-mvc-impressions-after-1-week/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 16:45:07 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1025</guid>
		<description><![CDATA[
I like it, but boy it requires a shift in thinking and has a learning curve since you need to practically relearn how to do everything on the web page. No more controls.
It suffers a little bit from RoR envy.
It will probably take some time before the best ways to do certain things in this [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><span><span style="font-family: Helvetica,Arial,sans-serif;">I like it, but boy it requires a shift in thinking and has a learning curve since you need to practically relearn how to do everything on the web page. No more controls.</span></span></li>
<li>It suffers a little bit from RoR envy.</li>
<li>It will probably take some time before the best ways to do certain things in this framework will be discovered. Looks like everybody is trying new and different things.</li>
<li>Because it does everything different than webforms it takes me longer to create something &#8211; that will change over time</li>
<li>It drives home the point just how different web forms are from &#8220;normal&#8221; html based development because it lets you do things with CSS that you dont see in reg ASP.NET sites, because regular .net controls are not too open standards compliant.</li>
<li>The separation of concerns into model / view and controller code is refreshing</li>
<li>There will be a lot of open source feedback which will influence the next versions of MS MVC as well as offer substitute ways of doing things. Just like the RoR community, a MVC developer will be faced with a plethora of choices. I dont know how  I feel about that because it can lead to religious arguments &#8212; my Spark View Engine is better than you built in View Engine&#8230;.use FubuMVC as opposed to MS MVC etc etc etc. Unless there is a clear frontrunner for a given aspect I am worried that there will be a lot of confusion.</li>
</ul>
<p><span><span style="font-family: Helvetica,Arial,sans-serif;"> Overall I still wonder how much need there will be for MVC in the long run as opposed to Silverlight or even something like Adobe Flex. In other words will the web move more toward Rich Apps or will it move more toward jazzed up HTML apps. Fact is there are things you can do in MVC that are not possible to build quite as nicely and easily in regular ASP.NET. For example there is a plethora of CSS tools out there and freely available plugins and whatnot for jQuery that may work easier in MVC pages.</p>
<p></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/06/aspnet-mvc-impressions-after-1-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vendor Client Relations</title>
		<link>http://wagnerblog.com/2009/06/vendor-client-relations/</link>
		<comments>http://wagnerblog.com/2009/06/vendor-client-relations/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 01:15:21 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=1008</guid>
		<description><![CDATA[This is so correct and true to life it is scary.

]]></description>
			<content:encoded><![CDATA[<p>This is so correct and true to life it is scary.</p>
<p><object width="660" height="405" data="http://www.youtube-nocookie.com/v/R2a8TRSgzZY&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&amp;border=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/R2a8TRSgzZY&amp;hl=en&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6&amp;border=1" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/06/vendor-client-relations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Decisions Decisions&#8230;..</title>
		<link>http://wagnerblog.com/2009/05/decisions-decisions/</link>
		<comments>http://wagnerblog.com/2009/05/decisions-decisions/#comments</comments>
		<pubDate>Mon, 25 May 2009 20:39:35 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET Tools]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[sample code]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=997</guid>
		<description><![CDATA[ As a programmer / consultant I always work on improving my skills. Except for the past year or so. I coasted a little bit. Consequently I am faced with two technologies that I need to study up. MS MVC and Silverlight. My personal feeling is that Silverlight will grow into the larger market over [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://wagnerblog.com/wp-content/uploads/2009/05/decisions11-247x300.jpg" alt="decisions11" title="decisions11" width="247" height="300" class="alignleft size-medium wp-image-998" /> As a programmer / consultant I always work on improving my skills. Except for the past year or so. I coasted a little bit. Consequently I am faced with two technologies that I need to study up. MS MVC and Silverlight. My personal feeling is that Silverlight will grow into the larger market over time. But at the moment its still lacking a lot of tools that a normal developer (not a bleeding edge addict) would come to expect in a platform. On the other hand MVC is slated to take off like a rocket. There is sooooo much pent up RoR envy in the .NET developer community its ridiculous. </p>
<p>My main issues with MS MVC is the fact that it tries to be something very similar to RoR. I feel this way because Model View Controller can be done without MS MVC. As a matter of fact as I have mentioned ad-nauseaum Dan and I have built and MVC driven framework a while back. So if I am interested in just the simplest most straightforward way to plug MVC into ASP.NET &#8211; thats the way to go &#8211; just build a small and simple action framework / router. No tag-soup either. I suppose I have to revisit this after ASP.NET 4.0 is out because it will incorporate routing. </p>
<p>Having said all that as a preamble, I would be silly not to study up on MS MVC. There are some aspects I really do like about it. The great enforcement of separation of concerns for starters. </p>
<p>As I looked over the web to find some decent examples of people who have blazed trails in this area I came across <a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/28/presenting-codebetter-canvas.aspx">Karl Seguin&#8217;s</a> <a href="http://code.google.com/p/codebettercanvas/">Canvas MVC sample app</a>. It was written with one specific purpose in mind: as a simple learning application that illustrates a good way to build an MVC app. In my opinion this app is a resounding success. It has enough code to illustrate the majority of work that one has to deal with (i.e. data entry, paged lists etc). And it doesn&#8217;t try to throw every possible scenario in the mix. The result is a well structured easy to follow sample. Believe me I have looked at numerous different ones out there and this is by far one of the better designed samples. Love it !</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/05/decisions-decisions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CodeGen on Steroids</title>
		<link>http://wagnerblog.com/2009/05/codegen-on-steroids/</link>
		<comments>http://wagnerblog.com/2009/05/codegen-on-steroids/#comments</comments>
		<pubDate>Thu, 21 May 2009 21:39:32 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[.NET Code Related]]></category>
		<category><![CDATA[Software Architecture]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code Gen]]></category>
		<category><![CDATA[LLBLGen]]></category>
		<category><![CDATA[MSPec]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=994</guid>
		<description><![CDATA[Wow, I really have been leading a pretty sheltered life as a consultant. There is a toolset I have used for a number of years that has predictably delivered results. When it comes to projects where you deliver or you dont eat its pretty important that your tools work. Along the way I was fortunate [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-993 alignright" title="steroids1" src="http://wagnerblog.com/wp-content/uploads/2009/05/steroids1.jpg" alt="steroids1" width="306" height="399" />Wow, I really have been leading a pretty sheltered life as a consultant. There is a toolset I have used for a number of years that has predictably delivered results. When it comes to projects where you deliver or you dont eat its pretty important that your tools work. Along the way I was fortunate enough &#8211; with the help of one important friend ( Dan ) &#8211; to produce some pretty good tools. We had a version of MVC in 2006 &#8211; 3 years before MS had theirs.</p>
<p>Fast forward to 2009. ASP.NET MVC hits the market. Only its not just routing and actions its a whole big kit and kaboodle. Reminds me a little of RoR.  Along the way all of a sudden a lot of folks are complaining that Viewstate is the big evil and if only they could code without it. Meh. Sounds a little like people flocking to the latest shiniest thing. And there is nothing wrong with that. Its just ironic that many of the personality types that flock to this technology are the same type of folks who argued that datasets would save the world. Geez.</p>
<p>MVC is good stuff and my buddy Phil has poured his heart into this project. So I certainly hope it will thrive and progress. What has me confused at the moment are a plethora of adjacent projects that are growing up around it. I have a hard time discerning which to take serious. What do I make of an open source &#8220;architecture&#8221; that spits out a bunch of scaffolding pages and uses itself two other OSS projects. By the way, am I the only one who sees a trend of OSS projects where someone produces an entire new something that is 50% built on top of someone elses new something. Hope that makes sense. Did the RoR community go through a similar evolution?</p>
<p>As a consultant I need rock solid tools that are not necessarily going to be impacted by a deprecation of some obscure aspect because the manufacturer used some OSS project that is no longer popular. I really should research how the RoR community deals with this.</p>
<p>And while I am on the subject of &#8220;architectures&#8221;&#8230;. seems that there are some ASP.NET MVC &#8220;architectures&#8221; floating around that are primarily fantastic code generators. I would actually call them Form Wizards on Steroids. Hence the pic.</p>
<p>In 1992 I worked on a pretty large MS Access app. Yes we did those and they were good. Dont laugh. MS Access was the MVC of its day. Anyways, the IDE had a Form Wizard. Point it at a query or table and it would generate all the code you need.  I learned an important lesson back then about code gen. Especially UI code gen. Dont use it. Wizard generated code is great &#8230; al the way until you need to change it. And Wizard generated apps tend to contain a lot of unnecessary stuff that you wouldn&#8217;t produce by hand.</p>
<p>Now mind you I am not talking about the utilization of some other view engine. Spark for example looks pretty cool. I am talking about the notion that a utility spitting out a bunch of views and controllers and tests is a measure of productivity. It is not.</p>
<p>Speaking of productivity. Rob Connery had a very cool demo of MSpec on his site. Finally a spec / test system that makes sense. (Besides Fitnesse that is).</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/05/codegen-on-steroids/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A question about social safety</title>
		<link>http://wagnerblog.com/2009/03/a-question-about-social-safety/</link>
		<comments>http://wagnerblog.com/2009/03/a-question-about-social-safety/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 20:04:20 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=986</guid>
		<description><![CDATA[The NY Times has a nice article describing how German companies deal with the economic downturn (check the comments as well !) .
It touches on some of the aspects I previously brought up. The notion that in Europe, especially in Germany, you find a greater sense of social collectivism. Bad choice of words maybe. But [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.nytimes.com/2009/03/27/world/europe/27germany.html?_r=1&amp;scp=3&amp;sq=germany&amp;st=cse" target="_blank">NY Times</a> has a nice article describing how German companies deal with the economic downturn (check the comments as well !) .</p>
<p>It touches on some of the aspects I previously brought up. The notion that in Europe, especially in Germany, you find a greater sense of social collectivism. Bad choice of words maybe. But read the article and ask yourself the following: “ <em>In the long run, what is a better approach for a country and its citizens. A shared social responsibility or the individualistic approach advertised by the US</em>.?”.&#160;&#160; Keeping in mind that you can’t point to the economic might of the US as proof that this is the right way. Why? Because Germany is so much smaller yet so much more efficient with its resources. Imagine if Germany was given the resources of the US. So the self-fulfilling argument of “I am rich therefore I am right” is off the table. </p>
<p>Perhaps you will be in the same situation as I have been. Depending on my age and experience I would answer the question about pros and cons of each system very differently. In my younger years I found the less paperwork approach of the US very appealing. I could start a company on a dime and would not worry about employee welfare.&#160; If the economy warrants it I would hire more people and as the business dictated I would lay them off. </p>
<p>Having been on both the giving and receiving end of this cycle I can tell you that the upshot of it entails more negative impact on the business than positive. My business depends on the intelligence and loyalty of its employees. My people are my greatest asset. By breaking the implied social contract that existed for so long between companies and its employees, I turn my workforce into a group of mercenaries. This is not some theoretical pontification – this is real and actual life. I recently saw a customer have a project severely impacted because he works on a “staff per project” basis with consultants and freelancers. </p>
<p>I know you can probably make arguments for the existence of our current system in the US that are just as eloquent as the ones being made in Germany. However, put yourself in the shoes of the workers described in Times article and then picture a typical US worker being laid off.&#160; A shared social responsibility makes life better for everyone. Not just the fortunate few at the top. I would love to learn more about the way this concept is applied in countries that are even less individualistic than Europe. For example in Asia. </p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/03/a-question-about-social-safety/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sounds about right</title>
		<link>http://wagnerblog.com/2009/03/sounds-about-right/</link>
		<comments>http://wagnerblog.com/2009/03/sounds-about-right/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 22:57:15 +0000</pubDate>
		<dc:creator>twagner</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://wagnerblog.com/?p=981</guid>
		<description><![CDATA[I grew in a country where little kids were educated in the idea that a revolution is a good thing. That capitalism is bad and that there are times when the working class just has to stand up and take over. I dont advocate this notion but I wonder if there will come a time [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-984" title="unclesam" src="http://wagnerblog.com/wp-content/uploads/2009/03/unclesam-300x300.jpg" alt="unclesam" width="300" height="300" />I grew in a country where little kids were educated in the idea that a revolution is a good thing. That capitalism is bad and that there are times when the working class just has to stand up and take over. I dont advocate this notion but I wonder if there will come a time when the people in the US say “ Its enough “, and decide to throw all the bums out. I doubt that time will ever come because it strikes me that people are continually told their individual freedoms outweigh the good of society. And when you have a country of unorganized individuals, who are to self absorbed with their own individuality ,  its pretty easy to run roughshod and basically get away with the equivalent of corporate rape and pillage.</p>
<p>I lifted the graphic in this post from <a href="http://www.rollingstone.com/politics/story/26793903/the_big_takeover/1" target="_blank">an article that ran in Rolling Stone</a>. Its a great read and shows you how this corporate rape and pillage is done.</p>
<p>By the way. Here are some quotes from a Met Life Study.</p>
<p>“….. A MetLife study released last week found that 50% of Americans said they have only a one-month cushion &#8212; roughly two paychecks &#8212; or less before they would be unable to fully meet their financial obligations if they were to lose their jobs. More disturbing is that 28% said they could not make ends meet for longer than two weeks without their jobs. And it&#8217;s not just low-income earners who would find themselves financially challenged. Twenty-nine percent of those making $100,000 or more a year said they would have trouble paying the bills after more than a month of unemployment….. “</p>
<p>Found on <a href="http://globaleconomicanalysis.blogspot.com/2009/03/paycheck-away-from-ruin.html" target="_blank">Mish’s Economic Blog</a></p>
<p>If your buying into the news clips of last week that there are some encouraging signs in the home building and real estate industries, keep in mind that the <a href="http://247wallst.com/2009/03/19/toll-ceo-unloads-even-more-stock-tol-xhb/" target="_blank">CEO of Toll Brothers is selling his shares</a> in the company. About 1 million shares that is.  So don’t get suckered into believing what you hear on the news.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerblog.com/2009/03/sounds-about-right/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
