<?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>Ang3lFir3 - Life as a Code Poet</title>
	<atom:link href="http://ang3lfir3.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ang3lfir3.wordpress.com</link>
	<description>Yet another Developer blog</description>
	<lastBuildDate>Sun, 14 Apr 2013 19:23:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ang3lfir3.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Ang3lFir3 - Life as a Code Poet</title>
		<link>http://ang3lfir3.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ang3lfir3.wordpress.com/osd.xml" title="Ang3lFir3 - Life as a Code Poet" />
	<atom:link rel='hub' href='http://ang3lfir3.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Chewie article in Visual Studio Magazine</title>
		<link>http://ang3lfir3.wordpress.com/2012/02/03/chewie-article-in-visual-studio-magazine/</link>
		<comments>http://ang3lfir3.wordpress.com/2012/02/03/chewie-article-in-visual-studio-magazine/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 17:04:31 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Awesome]]></category>
		<category><![CDATA[Chewie]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[visual studio magazine]]></category>

		<guid isPermaLink="false">http://ang3lfir3.wordpress.com/?p=194</guid>
		<description><![CDATA[My friend and Chewie contributor Ian Davis does more than just help out his fellow OSS project owners. He also writes some of the best articles in Visual Studio Magazine. It just so happens that today he wrote an article on using Chewie to clean up Nuget dependancies. BTW Ian is also the guy behind [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=194&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>My friend and Chewie contributor Ian Davis does more than just help out his fellow OSS project owners. He also writes some of the <a href="http://visualstudiomagazine.com/Articles/List/Open-Source-NET.aspx" target="_blank">best articles in Visual Studio Magazine</a>. It just so happens that today he wrote an article on <a href="http://visualstudiomagazine.com/articles/2012/02/03/clean-up-nuget-dependencies-with-chewie.aspx" target="_blank">using Chewie to clean up Nuget dependancies</a>.</p>
<p>BTW Ian is also the guy behind <a href="https://github.com/idavis/toji" target="_blank">Toji</a> which makes it even more awesome to use <a href="https://github.com/psake/psake" target="_blank">Psake</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=194&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2012/02/03/chewie-article-in-visual-studio-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>Harmony Hackathon: the beginning of something big?</title>
		<link>http://ang3lfir3.wordpress.com/2011/02/23/harmony-hackathon-the-beginning-of-something-big/</link>
		<comments>http://ang3lfir3.wordpress.com/2011/02/23/harmony-hackathon-the-beginning-of-something-big/#comments</comments>
		<pubDate>Thu, 24 Feb 2011 02:20:56 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Seattle]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://ang3lfir3.wordpress.com/?p=180</guid>
		<description><![CDATA[This story starts somewhere between 7 and 10 mnths ago, when I was talking to my friend @cbilson during a break in a pairing session. We had previously talked about give camps and coding for causes events. This led us to the fact that we both liked the idea but felt it could be more [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=180&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This story starts somewhere between 7 and 10 mnths ago, when I was talking to my friend <a href="http://twitter.com/cbilson" target="_blank">@cbilson</a> during a break in a pairing session. We had previously talked about give camps and coding for causes events. This led us to the fact that we both liked the idea but felt it could be more targeted. We had also talked about renting some space from the facility <a href="http://twitter.com/ang3lsdream" target="_blank">my wife</a> works at for the <a href="http://www.ssdotnet.org/">South Sound .Net Users Group</a> to hold a workshop.</p>
<p>The idea stuck with me, my wife works for a non-profit after all and I had worked for one recently. I talked to my wife about an idea I had brewing. The place she works for just so happens to be one of the premiere Cancer Retreat facilities in the Northwest (if not the world[but don't tell them]). Where is it that she works you ask, <a href="http://harmonyhill.org" target="_blank">Harmony Hill</a> &#8230;. just about the most centering place on earth (ok yeah I know I&#8217;m REALLY biased).  Anyway back to the story. I bounced the idea of my cohorts including <a href="http://twitter.com/NotMyself" target="_blank">@NotMyself</a> . Every person I brought the idea to thought it would be amazing. So I decided to move forward with what would become Harmony Hackathon.</p>
<p>Harmony Hill agreed to support the group by providing hospitality services and lodging for the entire group while they were on the hill. I can not even begin to tell you how amazing this staff is, for 48 hrs <a href="http://http://harmonyhacks.eventbrite.com/" target="_blank">12 of the finest developers in the northwest</a> didn&#8217;t want for anything!</p>
<p>The setup on my part was pretty easy, invite some of the best programmers in the northwest and ask them to do the one thing they love, code!, for charity&#8230;. plus I promised them beer! It worked&#8230; attendance was limited by the number of beds we had available for people to sleep in. It was only seconds after sending out the first request did I have people signed up to the eventbrite site.</p>
<p>Finally the day arrived to begin the Hackathon and you could say the excitement in the room was palpable. We started with introductions to the projects (we had initially intended to run to two projects) and to the facilities. We then headed down to the first of several amazing meals on The Hill. After dinner is when the real excitement began. We had decided on building the needed registration/waitlist management tool which is centered around available beds at the retreat center. <a href="http://twitter.com/darkxanthos" target="_blank">@darkxanthos</a> took the reigns as PM/customer liaison person and began gathering requirements for the developers to start working with. There was a lot of desire to start coding but also a deep understanding amongst the group that we must first understand the problem before we can solve it. A lot of effort went into making sure we focused on breadth and not rabbit holing ourselves on a single problem. Once again Justin did a great job and with the help of <a href="http://twitter.com/rodica" target="_blank">Rodica</a> and <a href="http://twitter.com/daliful" target="_blank">Aeden</a> a group of requirements was beginning to emerge as a set of mockups.</p>
<p>We began building out the plumbing and infrastructure of the project and decided on a couple of technology choices&#8230; MVC 3 and the default Razor view engine that comes with it.</p>
<p>The next 40 some hours of the weekend were a frenzy of coding&#8230;. pulling changes and merging changes&#8230;. I swear if nothing else our git skills improved. There were times that a person might have to pull again after merging changes from the last commit only to find out that they were still behind master. It was crazy, as a matter of fact you can see for yourself, thanks to a video from @NotMyself showing <a href="http://www.iamnotmyself.com/2011/02/21/TheInceptionOfCirclePulling.aspx" target="_blank">the gource animation of what happened</a>.</p>
<p>We didn&#8217;t exactly finish, but we did cover some really awesome ground and learn a lot about how to manage such a gathering. A couple of the things we learned are kind of obvious but extremely powerful.</p>
<p>1. While it is exciting to see what can be started from nothing, it is a really good idea to be aware of the problem space to get the best results out of the group. Have a small group meet with the product owner at least once before the event date to flush out stories to keep the team working and not waiting. You can do more the day of the event but you need a foundation to work against.</p>
<p>2. Smaller teams truly do work best. Even a team of 12 is too large optimal is about 5-6. We learned that with all the commits and furious amounts of work we couldn&#8217;t help but all get in each others way no matter how much we tried not to.</p>
<p>3. You need a dictator. Sometimes the group can not come to a decision about technology (who&#8217;da thought a bunch of Alpha geeks couldn&#8217;t agree ) so someone has to be able to make a decision and cast that extra vote. I wouldn&#8217;t personally say you need to use this power often, only when the group seems to be wasting time arguing over some tech that doesn&#8217;t directly solve the problem. I say this because it is extremely important that the group be open to exploring lots of new spaces so that the benefit is not only to the PO but also to the developers.</p>
<p>4. Infrastructure is important. You really need to have the core infrastructure laid out and decided on before you get started. We chose to use ASP.Net MVC because we are mostly all web developers and are familiar with the technology. We also chose NHibernate and StructureMap as we were all familiar with them as well (well maybe not StructureMap but its concepts are universal &#8230; see we learned stuff). This meant there was some setup that was needed to get all the plumbing in place. Had this been ready at a cursory level earlier we would have spent less time shaving that particular Yak.</p>
<p>So the ultimate question remains. Will we do it again? The answer is quite simple, OF COURSE !!! The group learned a lot from the experience and the project continues to move forward. As a matter of fact last night while talking with my wife she informed me that they had already started to talk about how the product could help with other programs at Harmony Hill. We have already started to think about how to plan for the next one and how to get the most out of the event.</p>
<p>The ultimate goal&#8230;. start something amazing to help out not only this one organization but potentially help out many others. Start a tradition of greatness and see the program grow. Which is good because we might just need that waitlist manager to help out with the future waitlist for Harmony Hackathon 2012.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=180&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2011/02/23/harmony-hackathon-the-beginning-of-something-big/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>Chewie goes on tour!</title>
		<link>http://ang3lfir3.wordpress.com/2011/02/14/chewie-goes-on-tour/</link>
		<comments>http://ang3lfir3.wordpress.com/2011/02/14/chewie-goes-on-tour/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 16:18:32 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ang3lfir3.wordpress.com/?p=176</guid>
		<description><![CDATA[Chewie &#8230; as previously mentioned is kind of like bundler for .Net. I finally got it pretty well ready for use and it is now finally available on Nuget as well. A few things have been added like an install dir and the ability to specify a default source as well as override that on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=176&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Chewie &#8230; as previously mentioned is kind of like bundler for .Net. I finally got it pretty well ready for use and it is now finally available on <a href="http://nuget.org/Packages/Packages/Details/Chewie-0-0-2" target="_blank">Nuget</a> as well.</p>
<p>A few things have been added like an install dir and the ability to specify a default source as well as override that on a per nuget basis. <a href="https://github.com/Ang3lFir3/Chewie/" target="_blank">checkout the readme for more information and examples</a>.</p>
<p>Check out the <a href="http://www.iamnotmyself.com/2011/02/13/ChewieBundlerForNetKinda.aspx" target="_blank">video</a> from my co-worker <a href="http://www.iamnotmyself.com/default.aspx" target="_blank">Bobby Johnson</a> .</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/176/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/176/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=176&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2011/02/14/chewie-goes-on-tour/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>Introducing Chewie for nuget</title>
		<link>http://ang3lfir3.wordpress.com/2011/01/26/introducing-chewie-for-nuget/</link>
		<comments>http://ang3lfir3.wordpress.com/2011/01/26/introducing-chewie-for-nuget/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 00:45:40 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MSFT]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ang3lfir3.wordpress.com/?p=168</guid>
		<description><![CDATA[So anyone following my friends and co-workers Jeff Schumacher (@codereflection), Adron Hall (@adronbh) and Bobby Johnson (@NotMyself) is aware that today we [ok really just them, I was busy on a diff less awesome project] started giving nuget a serious trial run to manage our extensive list of dependencies. A lot of which are not available [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=168&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So anyone following my friends and co-workers <a href="http://codingreflection.wordpress.com" target="_blank">Jeff Schumacher</a> (<a href="http://twitter.com/codereflection" target="_blank">@codereflection</a>), <a href="http://compositecode.com" target="_blank">Adron Hall</a> (<a href="http://twitter.com/adronbh" target="_blank">@adronbh</a>) and <a href="http://www.iamnotmyself.com/" target="_blank">Bobby Johnson</a> (<a href="http://twitter.com/notmyself" target="_blank">@NotMyself</a>) is aware that today we [ok really just them, I was busy on a diff less awesome project] started giving nuget a serious trial run to manage our extensive list of dependencies. A lot of which are not available on nuget at the moment.</p>
<p>This prompted a few blog posts from the guys <a href="http://compositecode.com/2011/01/26/cuttin-teeth-with-nuget/" target="_blank">here</a> and <a href="http://codingreflection.wordpress.com/2011/01/26/adding-packages-to-nuget-org/" target="_blank">here</a>.</p>
<p>We kinda came up with the idea that we really needed something along the lines of <a href="http://gembundler.com/" target="_blank">bundler</a> for ruby gems. So I started with the most simple version possible and <a href="https://github.com/Ang3lFir3/Chewie" target="_blank">Chewie</a> was born. (All credit for the name goes to @NotMyself). At the moment its a basic file and a single line of powershell goodness.</p>
<p>check it out and contribute @<a href="https://github.com/Ang3lFir3/Chewie" target="_blank"> github</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=168&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2011/01/26/introducing-chewie-for-nuget/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>ExpandoObject and Views</title>
		<link>http://ang3lfir3.wordpress.com/2011/01/25/expandoobject-and-views/</link>
		<comments>http://ang3lfir3.wordpress.com/2011/01/25/expandoobject-and-views/#comments</comments>
		<pubDate>Wed, 26 Jan 2011 04:30:00 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ASP.Net]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">https://ang3lfir3.wordpress.com/?p=129</guid>
		<description><![CDATA[This sample was spawned by a comment made by my friend and co-worker Bobby Johnson (@NotMyself) . I can&#8217;t remember exactly what he said but it had something to do with dynamic and views. (maybe he will tell us in the comments ) Let me first say that many of the projects at work on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=129&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This sample was spawned by a comment made by my friend and co-worker <a href="www.iamnotmyself.com" target="_blank">Bobby Johnson</a> (<a href="http://twitter.com/notmyself" target="_blank">@NotMyself</a>) . I can&#8217;t remember exactly what he said but it had something to do with dynamic and views. (maybe he will tell us in the comments <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  )</p>
<p>Let me first say that many of the projects at work on built on MonoRail which is often considered to be the predecessor to ASP.Net MVC and as such we don&#8217;t get a huge amount of exposure to the new toys in ASP.Net MVC immediately.</p>
<p>With that out of the way I was getting prepared to write this post and I just happened to notice that ASP.Net MVC views in .Net 4.0 projects seem to all be of type System.Data.ViewPage&lt;dynamic&gt; , which got me super excited! This makes things even easier!<span id="more-129"></span></p>
<p>So here goes a super simple example &#8230;.</p>
<p>The Controller :</p>
<pre class="brush: csharp; title: ; notranslate">
    public class SampleController : Controller
    {
        public ActionResult Index()
        {
            dynamic viewModel = new ExpandoObject();
            viewModel.Name = &quot;We Named this thing&quot;;
            viewModel.SomeInts = new[]{1,2,3};
            viewModel.AMethod = (Func&lt;string&gt;) (() =&gt; &quot;This is a sample function implementation&quot;);
            return View(viewModel);
        }
    }
</pre>
<p>The View :</p>
<pre class="brush: xml; title: ; notranslate">
&lt;%@ Page Language=&quot;C#&quot; Inherits=&quot;System.Web.Mvc.ViewPage&quot; %&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head&gt;
    &lt;title&gt;Index&lt;/title&gt;
&lt;/head&gt;
&lt;% var viewModel = ViewData.Model; %&gt;
&lt;body&gt;
    &lt;div&gt;
        &lt;span&gt;First Property value : &lt;%= viewModel.Name %&gt;&lt;/span&gt; &lt;br /&gt;
        &lt;span&gt;Second Property value :  &lt;%= viewModel.SomeInts.Length %&gt;&lt;/span&gt;&lt;br /&gt;
        &lt;span&gt;A Sample Method Impl : &lt;%= ((Func&lt;string&gt;) viewModel.AMethod)()%&gt;&lt;/span&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Crazy huh? yeah I thought so too. This is great news for those times when you need to send some calculated data to the view but you don&#8217;t exactly want to run off and build a custom view type.</p>
<p>Ok some NUnit tests this time. Not exactly the best tests, but they should help prove it does work.</p>
<p>The Test :</p>
<pre class="brush: csharp; title: ; notranslate">
    [TestFixture]
    public class preseneters_with_dynamic_viewdata
    {
        [Test]
        public void make_sure_you_can_test_them()
        {
            var controller = new SampleController();
            var result = controller.Index() as ViewResult;

            dynamic dynamicModel = result.ViewData.Model;

            Assert.AreEqual(&quot;We Named this thing&quot;,dynamicModel.Name);
            Assert.AreEqual(3,dynamicModel.SomeInts.Length);
            Assert.AreEqual(&quot;This is a sample function implementation&quot;,((Func&lt;string&gt;)dynamicModel.AMethod)());
        }
    }
</pre>
<p>Thanks for reading please leave comments, ideas, corrections, and hate mail in the comments section below.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=129&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2011/01/25/expandoobject-and-views/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>Refactoring MVP to MVC the slow way : pt1 Extracting Services</title>
		<link>http://ang3lfir3.wordpress.com/2011/01/24/mvp-to-mvc-pt1/</link>
		<comments>http://ang3lfir3.wordpress.com/2011/01/24/mvp-to-mvc-pt1/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 05:58:46 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[MVP]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">https://ang3lfir3.wordpress.com/?p=121</guid>
		<description><![CDATA[In this series I would like to examine the process my team and I have been undertaking on our current project. One of the aspects of working on legacy applications is that when you dive in you often see patterns that are not easily testable. The current application my team is working on was built [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=121&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>In this series I would like to examine the process my team and I have been undertaking on our current project. One of the aspects of working on legacy applications is that when you dive in you often see patterns that are not easily testable. The current application my team is working on was built many years ago and implements <a href="http://en.wikipedia.org/wiki/Model-view-presenter" target="_blank">MVP (model view presenter)</a> ,which at the time was a useful pattern for developing testable ASP.Net webforms applications. In the years since then many new patterns and frameworks have emerged and it is our desire to move the application from MVP to <a href="http://martinfowler.com/eaaCatalog/modelViewController.html" target="_blank">MVC (model view controller)</a>.</p>
<p>This series assumes that you are familiar with a few patterns and concepts namely the following:</p>
<ul>
<li>Dependancy Injection</li>
<li>Inversion of Control</li>
<li>SOLID principals</li>
<li>MVP</li>
<li>MVC</li>
<li>TDD</li>
<li>Mocks/Stubs</li>
</ul>
<p><span id="more-121"></span></p>
<h3>The Problem</h3>
<p>One thing that often occurs when using MVP is the tendency to potentially ask your presenter to do too much. I also often see over use of static classes in presenters. As many of you know static classes are hard to Mock thus making other testing scenarios difficult, especially when those static classes access data in a db.  Presenter creation does not usually take advantage of the Container and therefore does not allow us to inject mocks when testing.</p>
<p>A typical instantiation of a presenter would be:</p>
<pre class="brush: csharp; title: ; notranslate">
public class SamplePage : ISampleView
{
    public override void OnInit(EventArgs e)
    {
         base.OnInit(e);
         presenter = new SamplePresenter(this);
    }
}
</pre>
<p>Another thing I often see is that it becomes really easy to allow the presenter to do too much. It is a convenient place to sometimes place a lot of logic that should probably be somewhere else and very discreet. In the below example you can see that our presenter takes on some responsibilities that might be better suited to some external service.</p>
<h3>A Solution to statics</h3>
<p>I say &#8220;a solution&#8221; because I am certain there are other options, however we will have a look at the one we are using on my team. The first thing we decided to tackle was the static class problem.</p>
<p>A naive example:</p>
<pre class="brush: csharp; title: ; notranslate">
public class SamplePresenter
{
    .....

    public void LoadModels()
    {
        view.Models = ModelBuilder.BuildFor(DateTime.Today);
    }
    .....
}

</pre>
<p>In this case you can see that ModelBuilder is a static class. It happens to access the datastore and create new entities if they don&#8217;t already exist. Internally it loads the ModelRepository from the container via service location and uses it. That is great and all but it makes it hard for me to test other parts of the presenter that may need to mock results from the model builder. The simplest solution, was a simple wrapper class that exposes an interface. It is created via service location as well, for now.</p>
<pre class="brush: csharp; title: ; notranslate">
public interface IModelConstructor
{
    IList BuildFor(DateTime a_date);
}
public class ModelConstructor : IModelConstructor
{
    public IList BuildFor(DateTime a_date)
	{
	    return ModelBuilder.BuildFor(a_date);
	}
}
</pre>
<p>Usage in the presenter is now a little bit more complex&#8230; but much easier to mock. As you can see we have a helper IoC class that is static. This gives us access to the container. Sometimes things get worse before they get better.</p>
<pre class="brush: csharp; title: ; notranslate">
public class SamplePresenter
{
    public SamplePresenter(ISampleView view)
    {
        this.view = view;
        this.modelConstructor = IoC.Resolve();
    }

    public void LoadModels()
    {
        view.Models = modelConstructor.BuildFor(DateTime.Today);
    }
    .....
}
</pre>
<p>What this does give us is the ability to use a container that contains mock instances in our tests allowing us to stub methods on them as needed. I use <a href="https://github.com/machine/machine.specifications" target="_blank">MSpec</a> for most of my testing so the tests below are in that format.</p>
<pre class="brush: csharp; title: ; notranslate">
public class with_a_container_of_mocks
{
	Establish context = () =&gt;
	{
	     container = new WindsorContainer();
             IoC.Initialize(container);

	     var modelConstructor = MockRepository.GenerateStub();
	     container.Register(Component.For().Instance(modelContructor));
	};
}
</pre>
<p>Now we can simply access the mock via service location and provide a stub:</p>
<pre class="brush: csharp; title: ; notranslate">
public class when_constructing_models: with_a_container_of_mocks
{
	Establish context = () =&gt;
	{
              .....
              var modelConstructor = IoC.Resolve();
              modelConstructor.Stub(x =&gt; x.BuildFor(Arg.Is.Equal(Clock.Today)).Return(someFakeModels);
	};
	......
}
</pre>
<h3>Making presenters do less</h3>
<p>This example shows a presenter doing a little more than maybe it should be doing.</p>
<pre class="brush: csharp; title: ; notranslate">
public class SamplePresenter
{
    ....
    public void CalculateDistributionFees()
    {
	    //naive example of something that might need to go somewhere else
	    return models.SelectMany(model =&gt; model.Account.IsFeeBased)
                              .Sum(account =&gt; account.DistributionAmount * account.FeePercentage);
    }
    .....
}
</pre>
<p>It kinda of feels icky to test the presenter when I want to write tests that ensure the calculation of distribution fees is accurate. With all the overhead of mocking up a view etc it can get really noisy trying to test something very simple. But we simply extract a service (I really am trying not to over use that word) and get it tested. Then make use of it via service location in the presenter. This is similar to the previous technique for handling static classes so I will simply show the service being extracted and its corresponding tests. Gunna use a little <a href="http://nbuilder.org/" target="_blank">NBuilder-</a>foo here to make things pretty.</p>
<pre class="brush: csharp; title: ; notranslate">
public class when_calculating_distribution_fees_for_fee_based_accounts
{
    Establish context = () =&gt;
    {
	    some_accounts = Builder.CreateListOfSize(5)
                                              .WhereTheFirst(4)
                                                  .Have(x =&gt; x.IsFeeBased = true)
                                                  .And(x =&gt; x.DistributionAmount = 100.00m)
                                                  .And(x =&gt; x.FeePercentage = .10m)
                                               .AndTheNext(1)
                                                  .Have(x =&gt; x.IsFeeBased = false)
                                                  .And(x =&gt; x.DistributionAmount = 100.00m)
                                                  .And(x =&gt; x.FeePercentage = .10m)
                                               .Build();

        distributionFeeCalc = new DistributionFeeCalculator();
    }

	Because of = () =&gt;
	    fees = distributionFeeCalc.CalculateFees(some_accounts);

	It should_only_add_up_the_fee_based_accounts = () =&gt;
	    fee.ShouldEqual(40m);

	protected static IList some_accounts;
	protected static IDistributionFeeCalculator distributionFeeCalc;
	protected static decimal fees;
}

public interface IDistributionFeeCalculator
{
    decimal CalculateFees(IEnumerable accounts);
}

public class DistributionFeeCalculator
{
	public decimal CalculateFees(IEnumerable accounts)
    {
        return accounts.Where(x =&gt; x.IsFeeBased).Sum(account =&gt; account.DistributionAmount * account.FeePercentage);
    }
}
</pre>
<h3>Whats next</h3>
<p>In the next part(s) of the series I will go more into detail about converting presenters into controllers and refactoring views to be simpler. We will see how service location has become, to quote a friend, our &#8220;gateway drug to full blown Dependency Injection&#8221;. We will also see our tests become simpler and more controllable.</p>
<p>Thanks for reading this far, hoping that you did indeed get this far, and I hope this has either helped some folks out or at least given people some ideas.</p>
<p>please leave comments, ideas, corrections, and hate mail in the comments section below.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=121&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2011/01/24/mvp-to-mvc-pt1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>I can haz tests?</title>
		<link>http://ang3lfir3.wordpress.com/2010/10/19/i-can-haz-tests/</link>
		<comments>http://ang3lfir3.wordpress.com/2010/10/19/i-can-haz-tests/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 04:47:32 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">https://ang3lfir3.wordpress.com/?p=122</guid>
		<description><![CDATA[So our friend David Burela is back at it again with Developer Blog Banter #2: How do you test your applications? Asking: How do you organize your tests. Do you separate your unit tests, integration tests and UI tests into separate projects? Do you do anything specific to keep track of your tests? What naming [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=122&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So our friend David Burela is back at it again with <a href="http://davidburela.wordpress.com/2010/10/13/developer-blog-banter-2-how-do-you-test-your-applications/" target="_blank">Developer Blog Banter #2: How do you test your applications?</a></p>
<p>Asking:</p>
<blockquote><p>How do you organize your tests. Do you separate your unit tests, integration tests and UI tests into separate projects? Do you do anything specific to keep track of your tests? What naming conventions do you use? Do you run them before a check in or is that what the build server is for?<br />
If you are not testing, then how would you like to test your apps if given the opportunity?</p></blockquote>
<p>This post is my response to the above question.</p>
<p>I tend to have a Specs assembly for each major component of a project, these usually include some form of integration tests using in memory SQLite databases. The first thing most people will think is that I am probably mixing integration tests with my specs/unit tests and getting everything all mishmashed together. That is probably a good observation. As I find myself almost exclusively using <a href="http://github.com/machine/machine.specifications" target="_blank">MSpec</a> for testing I see no real reason to separate the tests into any other grouping other than by their system components.</p>
<p>An example set of Test assemblies would be :</p>
<p>Monkeys.Core.Specs<br />
Monkeys.Web.Specs</p>
<p>I did learn a few tricks from my friend <a href="http://twitter.com/cbilson" target="_blank">@cbilson</a> that I really liked and continue to use. That is naming the actual files in the test assemblies about the feature or part of the system we are testing. So for a group of specs that test the calculation of a bunch of distribution dates for a retirement fund based on some frequency (monthly, quarterly, annually etc) the name of the file would be “creating_distribution_dates_for_funds.cs”. This name is also used for the namespace that all the tests live in since MSpec tests are each a separate class. Groups of related tests can be found quickly and helps others that may come on to the project find the tests that describe how something works.</p>
<p>Okay so about those in-memory database integration tests. Well this is another thing that <a href="http://twitter.com/cbilson" target="_blank">@cbilson</a> and I worked on together (ok mostly him but I helped). Its certainly not a new idea , I got it from some blog post of ayende’s that I read, but it was a major breakthrough in helping us move quickly with testing and be extremely accurate. We were able to not only have nice _FAST_ tests for mappings in nHibernate but also were able to test queries quickly and accurately. Having this ability helps a lot when you want to be able to test with not only the database for your application but also for test versions of other databases you may need to access (most of our apps use at least 3-4 databases). This can make repository testing a no brainer and helps eliminate the kludgy methods people have had to use in the past. <a href="http://twitter.com/notmyself" target="_blank">@NotMyself</a>, <a href="http://twitter.com/codereflection" target="_blank">@codereflection</a> and I have even gone so far as to integrate NBuilder into the process for some scenarios making tests clean, expressive and to the point. I’m getting sidetracked I think…. testing is exciting stuff damnit!</p>
<p>Of course all our tests are run on the CI server and we “always” run them all before committing…. right? <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>I would like to one day soon find a really elegant way to add some more integration testing, maybe even at the UI level, into the process. As this is very painful and hard to maintain today we do our best to test as much as we can. There is no substitution for great comprehensive QA we just hope we make their jobs a lot easier by building well designed rock solid software… that works.</p>
<p>Hope this covers the question and hope someone finds some value in it.</p>
<p>See also my response to the first Developer Blog Banter : <a href="http://ang3lfir3.wordpress.com/2010/07/30/my-technology-stack/" target="_blank">My Technology Stack</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=122&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2010/10/19/i-can-haz-tests/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>Upgrading web projects from VS2008 to VS2010</title>
		<link>http://ang3lfir3.wordpress.com/2010/08/02/upgrading-web-projects-from-vs2008-to-vs2010/</link>
		<comments>http://ang3lfir3.wordpress.com/2010/08/02/upgrading-web-projects-from-vs2008-to-vs2010/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 23:18:57 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Msbuild]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Visual Studio 2010]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">https://ang3lfir3.wordpress.com/2010/08/02/upgrading-web-projects-from-vs2008-to-vs2010/</guid>
		<description><![CDATA[So while upgrading a project from VS2008 to VS2010 at work I was under the impression that pretty much everything went pretty easy. That was of course until I tried running the psake build and hit the publish task. My publish task looks as such: 1: task publish -depends set_prod_configs { 2: &#38; $msbuild $web_proj_file [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=118&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So while upgrading a project from VS2008 to VS2010 at work I was under the impression that pretty much everything went pretty easy. That was of course until I tried running the <a href="http://github.com/JamesKovacs/psake" target="_blank">psake</a> build and hit the publish task.</p>
<p>My publish task looks as such:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>task publish -depends set_prod_configs {</pre>
<pre><span class="lnum">   2:  </span>    &amp; $msbuild $web_proj_file /p:WebProjectOutputDir="$publish_dir\" `</pre>
<pre class="alt"><span class="lnum">   3:  </span>                /p:OutputPath="$publish_dir\bin" `</pre>
<pre><span class="lnum">   4:  </span>                /p:Configuration=$configuration `</pre>
<pre class="alt"><span class="lnum">   5:  </span>                /p:Debug=false `</pre>
<pre><span class="lnum">   6:  </span>                /t:"ResolveReferences;Compile;_CopyWebApplication"</pre>
<pre class="alt"><span class="lnum">   7:  </span>}</pre>
</div>
<p><!--  .csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } --><br />
pretty tame… but after converting this was failing with:</p>
<blockquote><p><strong>error MSB4064:</strong> The &#8220;Retries&#8221; parameter is not supported by the &#8220;Copy&#8221; task. Verify the parameter exists on the task, and it is a settable public instance property.<br />
<strong>error MSB4063:</strong> The &#8220;Copy&#8221; task could not be initialized with its input parameters.</p></blockquote>
<p>The solution while obvious took a little while to emerge. This problem seems to occur when continuing to use the .Net 3.5 version of MsBuild. However the proj files are updated to use the .Net 4.0 WebApplication targets.</p>
<pre class="csharpcode">  <span class="kwrd">&lt;</span><span class="html">Import</span> <span class="attr">Project</span><span class="kwrd">="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets"</span> <span class="kwrd">/&gt;</span></pre>
<p>So the simple solution to the whole obvious problem… was… use the .Net 4.0 version of MSBuild (Duh!). I had found lots of posts saying to remove some sections of the targets files and other such suggestions. This however seemed fishy to me (plus not feasible on my CI server) which is why I continued looking for a better answer. Once I realized that the targets file had been updated then it became obvious that I was trying to use .net 4.0 build targets with .net 3.5 MsBuild.</p>
<p>Hope this helps someone… and so I don’t make the same mistake twice.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=118&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2010/08/02/upgrading-web-projects-from-vs2008-to-vs2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>My technology stack</title>
		<link>http://ang3lfir3.wordpress.com/2010/07/30/my-technology-stack/</link>
		<comments>http://ang3lfir3.wordpress.com/2010/07/30/my-technology-stack/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 16:40:21 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.Net MVC]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[NHibernate]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Patterns]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Ruby/Rails]]></category>
		<category><![CDATA[RubyOnRails]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">https://ang3lfir3.wordpress.com/?p=112</guid>
		<description><![CDATA[So following in the footsteps of my friend Liam I decided to respond to David Burela’s ‘What is your preferred technology stack?’ question. By day I am lucky enough to work with the likes of @NotMyself @codingreflection and other great developers as an Enterprise Developer. Our customers are internal and the corporate preference is for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=112&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>So following in the footsteps of my friend <a href="http://hackingon.net" target="_blank">Liam</a> I decided to respond to David Burela’s ‘<a href="http://davidburela.wordpress.com/2010/07/30/developer-blog-banter-1-what-is-your-preferred-technology-stack/" target="_blank">What is your preferred technology stack?</a>’ question.</p>
<p>By day I am lucky enough to work with the likes of <a href="http://twitter.com/notmyself" target="_blank">@NotMyself</a> <a href="http://twitter.com/codereflection" target="_blank">@codingreflection</a> and other great developers as an Enterprise Developer. Our customers are internal and the corporate preference is for .Net solutions. Our organization and management sees the value in letting developers be productive by allowing them to use the tools that best fit the job. I am proud to work with a team of developers that pushes me to improve myself each and every day.</p>
<p>In my day to day life I am just me, a geek with a passion for learning and all things… well… geeky.</p>
<blockquote><p>quoting Liam I also favor tools that are :</p>
<ul>
<li>are open source. Open source libraries are often designed to facilitate quality practices, not to sell tools. Also, access to the source and the price are bonuses.</li>
<li>support the software craftsmanship ideology. Small, sharp tools that stay out of the way and don’t force any design decisions.</li>
</ul>
</blockquote>
<h3>My work stack:</h3>
<p>web framework =&gt; MonoRail, ASP.Net MVC 2+<br />
ui =&gt; JQuery w/ plugins, Ext JS<br />
viewEngine =&gt; Brail, Spark, ASPX<br />
Testing =&gt; MbUnit for unit testing, MSpec for BDD … I tend to do mostly just BDD now<br />
TestRunner =&gt; TD.Net<br />
Mocking =&gt; RhinoMocks. I’ve tried Moq and really don’t like it compared to Rhino<br />
IoC =&gt; Windsor<br />
exceptions =&gt; Log4net, we are increasing moving towards including Elmah as well<br />
data access =&gt; NHibernate + Fluent NHibernate, SqlServer 2000<br />
build =&gt; powershell + psake (make in powershell)<br />
CI =&gt; TeamCity<br />
version control =&gt;  Git w/ git-svn<br />
misc =&gt; NBuilder, SQLite for inmemory testing of repositories and mappings, FluentMigrator, WIX, FileHelpers, A Common lib of tools and useful bits our team has collected over time</p>
<h3>My Personal dream stack:</h3>
<p>web framework =&gt; ASP.Net MVC2+, RoR, Sinatra<br />
ui =&gt; JQuery w/ plugins, Ext Js, Coffee Script<br />
viewEngine =&gt; spark, haml<br />
testing =&gt; MSpec, RSpec     , Cucumber<br />
mocking =&gt; RhinoMocks, some ruby mocking framework     (lol)<br />
version control =&gt; Git<br />
build =&gt; rake + albacore where needed<br />
IoC =&gt; Ninject<br />
exceptions =&gt; Elmah, NLog<br />
datastorage =&gt; MongoDb &#8230;.. pure awesome&#8230; on a stick</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=112&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2010/07/30/my-technology-stack/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>
	</item>
		<item>
		<title>VS2010 RTMs and all I cared about was the tabs!!!</title>
		<link>http://ang3lfir3.wordpress.com/2010/04/17/vs2010-rtms-and-all-i-cared-about-was-the-tabs/</link>
		<comments>http://ang3lfir3.wordpress.com/2010/04/17/vs2010-rtms-and-all-i-cared-about-was-the-tabs/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 06:28:53 +0000</pubDate>
		<dc:creator>ang3lfir3</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://ang3lfir3.wordpress.com/2010/04/17/vs2010-rtms-and-all-i-cared-about-was-the-tabs/</guid>
		<description><![CDATA[Thats right…. Visual Studio has finally been given the option to allow tabs to open to the right of existing documents.&#160; I can’t but hope that my post on the topic might have helped the VS Team get on board with fixing this issue. Now that I am more addicted to R# it hasn’t been [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=110&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://ang3lfir3.files.wordpress.com/2010/04/vs2010_tab_options.png"><img style="display:inline;margin-left:0;margin-right:0;border-width:0;" title="vs2010_tab_options" border="0" alt="vs2010_tab_options" align="right" src="http://ang3lfir3.files.wordpress.com/2010/04/vs2010_tab_options_thumb.png?w=244&#038;h=143" width="244" height="143" /></a>Thats right…. Visual Studio has finally been given the option to allow tabs to open to the right of existing documents.&#160; I can’t but hope that <a href="http://ang3lfir3.wordpress.com/2006/05/07/tabs-in-visual-studio-2005-arrrgh-stop-that/" target="_blank">my post on the topic</a> might have helped the VS Team get on board with fixing this issue. Now that I am more addicted to <a href="http://jetbrains.com/" target="_blank">R#</a> it hasn’t been such an issue but I really feel like this is part of the new MSFT… listening to the community at large and taking note. That this is optional is actually better as far as I am concerned vs. it being the default.</p>
<p>&#160;</p>
<p>Alright… have fun!!! ohhh and install <a href="http://ironruby.net" target="_blank">IronRuby</a> damnit!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ang3lfir3.wordpress.com/110/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ang3lfir3.wordpress.com/110/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ang3lfir3.wordpress.com&#038;blog=212079&#038;post=110&#038;subd=ang3lfir3&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ang3lfir3.wordpress.com/2010/04/17/vs2010-rtms-and-all-i-cared-about-was-the-tabs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/1cf313ed1f38f8ff8699bce73fb2c79f?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">ang3lfir3</media:title>
		</media:content>

		<media:content url="http://ang3lfir3.files.wordpress.com/2010/04/vs2010_tab_options_thumb.png" medium="image">
			<media:title type="html">vs2010_tab_options</media:title>
		</media:content>
	</item>
	</channel>
</rss>
