<?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>Sean Biefeld&#039;s Blog</title>
	<atom:link href="http://lostechies.com/seanbiefeld/feed/" rel="self" type="application/rss+xml" />
	<link>http://lostechies.com/seanbiefeld</link>
	<description>curiosities of development, life, the universe and everything</description>
	<lastBuildDate>Thu, 17 Nov 2011 20:22:37 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Simple Async HTTP Module for Appcelerator</title>
		<link>http://lostechies.com/seanbiefeld/2011/11/17/simple-async-http-module-for-appcelerator/</link>
		<comments>http://lostechies.com/seanbiefeld/2011/11/17/simple-async-http-module-for-appcelerator/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 04:00:53 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[Appcelerator]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[CommonJS]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Titanium]]></category>

		<guid isPermaLink="false">http://lostechies.com/seanbiefeld/?p=134</guid>
		<description><![CDATA[Hello techies, I have been using Appcelerator recently. It is a pretty cool tool, it allows you to create cross platform mobile applications for iOS and Android, writing JavaScript. Appcelerator&#8217;s Titanium Framework uses the CommonJS API so you can reference&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2011/11/17/simple-async-http-module-for-appcelerator/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello techies,</p>
<p>I have been using <a href="http://wiki.appcelerator.org/display/guides/Quick+Start">Appcelerator</a> recently. It is a pretty cool tool, it allows you to create cross platform mobile applications for iOS and Android, writing JavaScript.</p>
<p>Appcelerator&#8217;s Titanium Framework uses the <a href="http://www.commonjs.org/">CommonJS API</a> so you can reference javascript files as &#8220;modules&#8221;, it is very reminiscent of node.js which also implements CommonJS.</p>
<p>Below is a simple async module I wrote, inspired by <a href="https://gist.github.com/888409">codeboxed&#8217;s gist</a>, to make requests to a web server. Stick it in a file named SimpleHttpAsync.js</p>
<p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">
<span style="color:#666">  //////////////////////////////////////////////
 //                Simple Http Async         //
//////////////////////////////////////////////</span>

exports.call = function (options) {
    <span style="color:#666">//create the titanium HTTPClient</span>
    var httpClient = Titanium.Network.createHTTPClient();

    <span style="color:#666">//set the httpclient's properties with the provided options</span>
    httpClient.setTimeout(options.timeout);
    httpClient.onerror = options.error;
       
    <span style="color:#666">//if and when response comes back
    //the success function is called</span>
    httpClient.onload = function(){
        options.success({
            data: httpClient.responseData, 
            text: httpClient.responseText
        });
    };
        
    <span style="color:#666">//open the connection</span>
    httpClient.open(options.type, options.url, true);

   <span style="color:#666"> //send the request</span>
    httpClient.send();
};</pre>
</p>
<p>The following is example code of importing and using the module</p>
<p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">
<span style="color:#666">//import the module</span>
var simpleHttpAsync = require('simpleHttpAsync');

<span style="color:#666">//call the function
//handle errors and successful request</span>
simpleHttpAsync.call({
    type : "POST",
    url : "http://www.someurl.com?somekey=somevalue",
    error : function (error) {
        //do something to handle error
    },
    success : function (response) {
        //do something with the response data from the server
    },
    timeout : 10000
});
</pre>
</p>
<p>It&#8217;s nothing special, but the documentation for Appcelerator is pretty sparse and I thought it might be useful for those new to the Appcelerator Titanium Framework.</p>
<p>As always enjoy and let me know if you have any comments/suggestions/questions. Thanks!</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2011/11/17/simple-async-http-module-for-appcelerator/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Simple XML to JSON with PHP</title>
		<link>http://lostechies.com/seanbiefeld/2011/10/21/simple-xml-to-json-with-php/</link>
		<comments>http://lostechies.com/seanbiefeld/2011/10/21/simple-xml-to-json-with-php/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 15:14:16 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[JSON]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://lostechies.com/seanbiefeld/?p=30</guid>
		<description><![CDATA[Hello all, it&#8217;s been a while since I have blogged anything, been extremely busy with personal events in my life. So to get back into the swing of things I am going to KISS this post. I recently needed to&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2011/10/21/simple-xml-to-json-with-php/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<article>
<p>Hello all, it&#8217;s been a while since I have blogged anything, been extremely busy with personal events in my life. So to get back into the swing of things I am going to KISS this post.</p>
<p>
<p>I recently needed to convert XML to JSON in PHP. Thankfully, PHP has built in functionality to handle precisely this task.</p>
<p>
<p>First we need to get contents of the XML file, we need to use <em>file_get_contents()</em> and pass it the URL to the XML file. We remove the newlines, returns and tabs.</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">
<span style="color:#7587A6">$fileContents</span> <span style="color:#CDA869">=</span> file_get_contents<span style="color:#CDA869">(</span><span style="color:#7587A6">$url</span><span style="color:#CDA869">);</span>

<span style="color:#7587A6">$fileContents</span><span style="color:#CDA869"> = </span>str_replace<span style="color:#CDA869">(array(</span><span style="color:#8F9D6A;">"\n"</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"\r"</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"\t"</span><span style="color:#CDA869">),</span> <span style="color:#8F9D6A;">''</span><span style="color:#CDA869">,</span> <span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">);</span></pre>
<p>
<p>Next I replace double quotes with single quotes and trim leadign and trailing spaces, this helps to ensure the simple XML function can parse the XML appropriately. Then we call the <em>simplexml_load_string()</em> function.</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">
<span style="color:#7587A6">$fileContents</span> <span style="color:#CDA869">=</span> trim<span style="color:#CDA869">(</span>str_replace<span style="color:#CDA869">(</span><span style="color:#8F9D6A;">'"'</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"'"</span><span style="color:#CDA869">,</span> <span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">));</span>

<span style="color:#7587A6">$simpleXml</span> <span style="color:#CDA869">=</span> simplexml_load_string<span style="color:#CDA869">(</span><span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">);</span></pre>
<p>
<p>The final step we need is to convert the XML to JSON, for that we will use the <em>json_encode()</em> function.</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;"><span style="color:#7587A6">$json</span> <span style="color:#CDA869">=</span> json_encode<span style="color:#CDA869">(</span><span style="color:#7587A6"><span style="color:#7587A6">$simpleXml</span><span style="color:#CDA869">);</span></pre>
<p>
<p>That&#8217;s it! All together now:</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">&lt;?php

<span style="color:#CDA869">class</span> XmlToJson <span style="color:#CDA869">{</span>

	<span style="color:#CDA869">public function</span> Parse <span style="color:#CDA869">(</span><span style="color:#7587A6">$url</span><span style="color:#CDA869">) {</span>

		<span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">=</span> file_get_contents<span style="color:#CDA869">(</span><span style="color:#7587A6">$url</span><span style="color:#CDA869">);</span>

		<span style="color:#7587A6">$fileContents</span><span style="color:#CDA869"> = </span>str_replace<span style="color:#CDA869">(array(</span><span style="color:#8F9D6A;">"\n"</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"\r"</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"\t"</span><span style="color:#CDA869">),</span> <span style="color:#8F9D6A;">''</span><span style="color:#CDA869">,</span> <span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">);</span>

		<span style="color:#7587A6">$fileContents</span> <span style="color:#CDA869">=</span> trim<span style="color:#CDA869">(</span>str_replace<span style="color:#CDA869">(</span><span style="color:#8F9D6A;">'"'</span><span style="color:#CDA869">,</span> <span style="color:#8F9D6A;">"'"</span><span style="color:#CDA869">,</span> <span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">));</span>

		<span style="color:#7587A6">$simpleXml</span> <span style="color:#CDA869">=</span> simplexml_load_string<span style="color:#CDA869">(</span><span style="color:#7587A6">$fileContents</span><span style="color:#CDA869">);</span>

		<span style="color:#7587A6">$json</span> <span style="color:#CDA869">=</span> json_encode<span style="color:#CDA869">(</span><span style="color:#7587A6">$simpleXml</span><span style="color:#CDA869">);</span>

		<span style="color:#CDA869">return</span> $json<span style="color:#CDA869">;

	}

}</span>

?&gt;
</pre>
<p>
<p>Now if we want to utilize our creation we can create a file which uses the class we created above, assuming we store the <em>XmlToJson</em> class in a file named <em>XmlToJson.php</em>. We can create a file for a specific XML web service, include our class and call it <em>XmlToJson::Parse($url)</em>. Just for fun we&#8217;ll point to the XML for the NFL scorestrip.</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">&lt;?php

<span style="color:#CDA869">include</span> <span style="color:#8F9D6A;">'XmlToJson.php'</span><span style="color:#CDA869">;

print</span> XmlToJson<span style="color:#CDA869">::</span>Parse<span style="color:#CDA869">(</span><span style="color:#8F9D6A;">"http://www.nfl.com/liveupdate/scorestrip/ss.xml"</span><span style="color:#CDA869">);</span>

?&gt;</pre>
<p>
<p>Now we can call our new file, say we name it <em>getNflDataAsJson.php</em>, it will return the converted JSON. Calling it from jQuery below:</p>
<pre style="background-color:#222;color:#ddd;overflow:auto;padding:20px 10px;font-family:monospace;">$.getJSON<span style="color:#CDA869">(</span><span style="color:#8F9D6A;">'getNflDataAsJson.php'</span><span style="color:#CDA869">, function(</span>data<span style="color:#CDA869">) {</span> 
	<span style="color:#5F5A60">//do something</span>
<span style="color:#CDA869">});</span></pre>
<p>
<p>Thats all I&#8217;ve got, let me know if you have any questions, things you would do differently or general comments.</p>
<p><em>Thanks much!</em></p>
</article>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2011/10/21/simple-xml-to-json-with-php/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Serving Images from an Image Controller</title>
		<link>http://lostechies.com/seanbiefeld/2010/06/23/serving-images-from-an-image-controller/</link>
		<comments>http://lostechies.com/seanbiefeld/2010/06/23/serving-images-from-an-image-controller/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 13:40:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2010/06/23/serving-images-from-an-image-controller.aspx</guid>
		<description><![CDATA[Found this solution rather simple when you want to serve images from your database. public class ImageController { readonly IImageQueries Queries; public ImageController(IImageQueries queries) { Queries = queries; } public FileResult Show(int id) { DateTime? dateCreated = Queries.GetDateCreatedById(id); //invalid image,&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2010/06/23/serving-images-from-an-image-controller/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Found this solution rather simple when you want to serve images from your database.</p>
<pre style="overflow-x:scroll;background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 8pt">
<span style="color: #cda869">public</span> <span style="color: #7386a5">class</span> <span style="color: #7386a5">ImageController</span>
{
	<span style="color: #cda869">readonly</span> <span style="color: #d0da90">IImageQueries</span> Queries;

	<span style="color: #cda869">public</span> ImageController(<span style="color: #d0da90">IImageQueries</span> queries)
	{
		Queries <span style="color: #cda869">=</span> queries;
	}

	<span style="color: #cda869">public</span> FileResult Show(int id)
	{
		<span style="color: #7386a5">DateTime</span><span style="color: #cda869">?</span> dateCreated <span style="color: #cda869">=</span> Queries<span style="color: #cda869">.</span>GetDateCreatedById(id);

		<span style="color: #444">//invalid image, return 404</span>
		<span style="color: #cda869">if</span> (dateCreated <span style="color: #cda869">== null</span>)
		{
			<span style="color: #7386a5">HttpContext</span><span style="color: #cda869">.</span>Response<span style="color: #cda869">.</span>StatusCode <span style="color: #cda869">=</span> 404;

			<span style="color: #cda869">return null</span>;
		}
		<span style="color: #cda869">else</span>
		{
			<span style="color: #cda869">string</span> ifModifiedSince = <span style="color: #7386a5">HttpContext</span><span style="color: #cda869">.</span>Request<span style="color: #cda869">.</span>Headers[<span style="color: #8f9d6a">"If-Modified-Since"</span>];

			<span style="color: #444">//check if image has been modified</span>
			<span style="color: #cda869">if</span> (ifModifiedSince <span style="color: #cda869">!= null &#038;&#038;</span> dateCreated.Value <span style="color: #cda869">&lt;=</span> <span style="color: #7386a5">DateTime</span><span style="color: #cda869">.</span>Parse(ifModifiedSince))
			{
				<span style="color: #7386a5">HttpContext</span><span style="color: #cda869">.</span>Response<span style="color: #cda869">.</span>StatusCode <span style="color: #cda869">=</span> 304;
				<span style="color: #cda869">return null</span>;
			}
			<span style="color: #cda869">else</span>
			{
				<span style="color: #7386a5">HttpContext</span><span style="color: #cda869">.</span>Response<span style="color: #cda869">.</span>Cache<span style="color: #cda869">.</span>SetLastModified(dateCreated<span style="color: #cda869">.</span>Value);

				<span style="color: #cda869">dynamic</span> image = Queries<span style="color: #cda869">.</span>GetById(id);

				<span style="color: #cda869">return new</span> FileContentResult(image<span style="color: #cda869">.</span>Bytes, image<span style="color: #cda869">.</span>MimeType);
			}
		}
	}
}
</pre>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2010/06/23/serving-images-from-an-image-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dynamic View Page, MVC without a View Model</title>
		<link>http://lostechies.com/seanbiefeld/2010/06/23/dynamic-view-page-mvc-without-a-view-model/</link>
		<comments>http://lostechies.com/seanbiefeld/2010/06/23/dynamic-view-page-mvc-without-a-view-model/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 05:04:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[DTO]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[View]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2010/06/23/dynamic-view-page-mvc-without-a-view-model.aspx</guid>
		<description><![CDATA[Hello fellow techies on this roller coaster called life. It has been a while since my last post, I have been focusing on some other more important aspects of my life. What I want to talk about in this post&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2010/06/23/dynamic-view-page-mvc-without-a-view-model/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hello fellow techies on this roller coaster called life. It has been a while since my last post, I have been focusing on some other more important aspects of my life.</p>
<p>What I want to talk about in this post is the idea of a dynamic view page which removes the need for a View Model data transfer object. I have started to try this out on project that I am working on, for views that are essentially read only. All these views are concerned about is displaying data/information. &nbsp;I do not yet know how useful this is but I thought it was novel and will be exploring it&#8217;s usefulness. Plus, the lazy side of me likes the idea of not creating data transfer objects if possible.</p>
<p>Two side effects of this approach are the loss of the strongly typed Model on your view, which is a non-issue for a page without inputs. &nbsp;The second is the loss of intellisense (the very first time a member is used on a dynamic) when working with the Model in the view, which could be a minor loss in that you wont know something is wrong until you run it, but thats the way it goes.</p>
<p>To accomplish this you start off by creating a DynamicViewPage that inherits ViewPage. &nbsp;Have some overrides and new up some properties and you should be set.</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">public class</span> <span style="color: #7386a5">DynamicViewPage</span> : <span style="color: #7386a5">ViewPage</span>
{
	<span style="color: #cda869">private</span> <span style="color: #7386a5">ViewDataDictionary</span><span style="color: #cda869">&lt;dynamic&gt;</span> _viewData;

	<span style="color: #cda869">public override void</span> InitHelpers()
	{
		<span style="color: #cda869">base.</span>InitHelpers();
		Ajax = <span style="color: #cda869">new</span> <span style="color: #7386a5">AjaxHelper</span><span style="color: #cda869">&lt;dynamic&gt;</span>(ViewContext, this);
		Html = <span style="color: #cda869">new</span> <span style="color: #7386a5">HtmlHelper</span><span style="color: #cda869">&lt;dynamic&gt;</span>(ViewContext, this);
	}

	<span style="color: #cda869">protected override void</span> SetViewData(<span style="color: #7386a5">ViewDataDictionary</span> viewData)
	{
		_viewData = new <span style="color: #7386a5">ViewDataDictionary</span><span style="color: #cda869">&lt;dynamic&gt;</span>(viewData);
		<span style="color: #cda869">base.</span>SetViewData(_viewData);
	}

	<span style="color: #cda869">public new</span> <span style="color: #7386a5">AjaxHelper</span><span style="color: #cda869">&lt;dynamic&gt;</span> Ajax { get; set; }

	<span style="color: #cda869">public new</span> <span style="color: #7386a5">HtmlHelper</span><span style="color: #cda869">&lt;dynamic&gt;</span> Html { get; set; }

	<span style="color: #cda869">public new dynamic</span> Model
	{
		<span style="color: #cda869">get</span>
		{
			<span style="color: #cda869">return</span> ViewData.Model;
		}
	}

	<span style="color: #cda869">public new</span> <span style="color: #7386a5">ViewDataDictionary</span><span style="color: #cda869">&lt;dynamic&gt;</span> ViewData
	{
		<span style="color: #cda869">get</span>
		{
			<span style="color: #cda869">if</span> (_viewData <span style="color: #cda869">== null</span>)
			{
				SetViewData(new <span style="color: #7386a5">ViewDataDictionary</span><span style="color: #cda869">&lt;dynamic&gt;</span>());
			}
			<span style="color: #cda869">return</span> _viewData;
		}
		<span style="color: #cda869">set</span>
		{
			SetViewData(<span style="color: #cda869">value</span>);
		}
	}
}</pre>
<p>Now your view needs to inherit from DynamicViewPage.</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">Inherits="Web.Views.DynamicViewPage"</pre>
<p>In your controller you can ask your persistence abstraction of choice for some data and return it to the view.</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">public</span> <span style="color: #7386a5">ActionResult</span> Index()
{
	<span style="color: #d0da90">IEnumerable</span><span style="color: #cda869">&lt;dynamic&gt;</span> foos <span style="color: #cda869">=</span> FooQueries.GetAll();
	<span style="color: #cda869">return</span> View(foos);
}</pre>
<p>Where this can get interesting is when you have a linq provider that returns dynamic objects. Then essentially your domain model is king and you eliminate a lot of DTOs. That&#8217;s all I&#8217;ve got for now. I attached a sample application that demonstrates the dynamic view, enjoy!</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2010/06/23/dynamic-view-page-mvc-without-a-view-model/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Step by Step to Using MSpec (Machine.Specifications) with ReSharper</title>
		<link>http://lostechies.com/seanbiefeld/2009/08/26/step-by-step-to-using-machine-specifications-with-resharper/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/08/26/step-by-step-to-using-machine-specifications-with-resharper/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 01:34:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[BDD]]></category>
		<category><![CDATA[Behavior Driven Design]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[MSpec]]></category>
		<category><![CDATA[ReSharper]]></category>
		<category><![CDATA[Specifications]]></category>
		<category><![CDATA[Unit Test]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/08/25/step-by-step-to-using-machine-specifications-with-resharper.aspx</guid>
		<description><![CDATA[Whilst researching using MSpec with ReSharper I found it difficult to find all the resources I needed in one place. This is an attempt to condense everything into that one place and facilitate those seeking to accomplish the same task.&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/08/26/step-by-step-to-using-machine-specifications-with-resharper/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Whilst researching using MSpec with ReSharper I found it difficult to find all the resources I needed in one place. This is an attempt to condense everything into that one place and facilitate those seeking to accomplish the same task.</p>
<h2>Step 1 &#8211; Git It:</h2>
<p>
First thing&#8217;s first, grab the latest Machine Spec source from github.
</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">$ git clone git://github.com/machine/machine.specifications.git mspec</pre>
<h2>Step 2 &#8211; Build It:</h2>
<p>
Next, open it up in Visual Studio, set it to build in release mode and build it. Now the binaries will be ready for you.
</p>
<h2>Step 3 &#8211; Setup ReSharper:</h2>
<p>
Now we need to setup ReSharper to be able to utilize the MSpec framework and run the tests in ReSharper&#8217;s test runner. To do this we need to add a plugins directory to the &#8220;JetBrainsReSharperv4.5Bin&#8221; directory or the where ever the bin directory for your ReSharper is located. In the Plugins create a Machine.Specifications directory, so you should now have a path similar to; &#8220;JetBrainsReSharperv4.5BinPluginsMachine.Specifications&#8221;. Place the following dlls in the newly created folder: Machine.Specifications.ReSharperRunner.4.5.dll and Machine.Specifications.dll.
</p>
<h2>Step 4 &#8211; Write some Specifications:</h2>
<p>
Coolio, now to test some behaviors, the dlls needed in our test project; Machine.Specifications.dll, Machine.Specifications.NUnit.dll or Machine.Specifications.XUnit.dll, and the appropriate test framework dll.</p>
<p>Let&#8217;s take a look at a couple of examples to get used to the syntax. The most common keywords you want to pay attention to are <strong>Subject, Establish, Because</strong> and <strong>It</strong>. Declare the Subject of your Spec, Establish a context of the spec, Because x occurs, It should do something. For more complex scenarios you can use the keyword, <strong>Behaves_like</strong> and the <strong>Behaviors</strong> attribute which allows you to define complex behaviors. If you need to perform some cleanup use the <strong>Cleanup</strong> keyword.</p>
<p>Now for a couple of simple contrived examples&#8230;</p>
<p>This first specification looks at adding two numbers:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">[<span style="color: #7386a5">Subject</span>(<span style="color: #8f9d6a">"adding two operands"</span>)]
<span style="color: #cda869">public class</span> <span style="color: #7386a5">when_adding_two_operands</span>
{
	<span style="color: #cda869">static decimal</span> value;

	<span style="color: #7386a5">Establish</span> context <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value <span style="color: #cda869">=</span> <span style="color: #9B7032">0m</span>;

	<span style="color: #7386a5">Because</span> of <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value <span style="color: #cda869">= new</span> Operator().Add(<span style="color: #9B7032">42.0m</span>, <span style="color: #9B7032">42.0m</span>);

	<span style="color: #7386a5">It</span> should_add_both_operands <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value.ShouldEqual(<span style="color: #9B7032">84.0m</span>);
}</pre>
<p>The second specification looks at adding multiple numbers:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">[<span style="color: #7386a5">Subject</span>(<span style="color: #8f9d6a">"adding multiple operands"</span>)]
<span style="color: #cda869">public class</span> <span style="color: #7386a5">when_adding_multiple_operands</span>
{
	<span style="color: #cda869">static decimal</span> value;

	<span style="color: #7386a5">Establish</span> context <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value <span style="color: #cda869">=</span> <span style="color: #9B7032">0m</span>;

	<span style="color: #7386a5">Because</span> of <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value <span style="color: #cda869">= new</span> Operator().Add(<span style="color: #9B7032">42m</span>, <span style="color: #9B7032">42m</span>, <span style="color: #9B7032">42m</span>);

	<span style="color: #7386a5">It</span> should_add_all_operands <span style="color: #cda869">=</span> () <span style="color: #cda869">=&gt;</span>
		value.ShouldEqual(<span style="color: #9B7032">126m</span>);
}</pre>
<p>The code being tested:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">public class</span> <span style="color: #7386a5">Operator</span>
{
	<span style="color: #cda869">public decimal</span> Add(<span style="color: #cda869">decimal</span> firstOperand, <span style="color: #cda869">decimal</span> secondOperand)
	{
		<span style="color: #cda869">return</span> firstOperand <span style="color: #cda869">+</span> secondOperand;
	}

	<span style="color: #cda869">public decimal</span> Add(<span style="color: #cda869">params decimal</span>[] operands)
	{
		<span style="color: #cda869">decimal</span> value <span style="color: #cda869">=</span> <span style="color: #9B7032">0m</span>;

		<span style="color: #cda869">foreach</span> (<span style="color: #cda869">var</span> operand <span style="color: #cda869">in</span> operands)
		{
			value <span style="color: #cda869">+=</span> operand;
		}

		<span style="color: #cda869">return</span> value;
	}
}</pre>
<h2>Step 5 &#8211; Create Templates to Improve Your Efficiency:</h2>
<p>
Using ReSharper templates is a good way to improve your spec writing efficiency, the following are templates I have been using.</p>
<p>This first one is for your normal behaviors:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">[Subject("$subject$")]
public class when_<span style="color: #cda869">$when$</span>
{
	Establish context =()=&gt;	{};

	Because of =()=&gt; {};		
	
	It should_$should$ =()=&gt; <span style="color: #7386a5">$END$</span>;
}</pre>
<p>This one&#8217;s for assertions by themselves:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">It should_<span style="color: #cda869">$should$</span> =()=&gt; <span style="color: #7386a5">$END$</span>;</pre>
<h2>Step 6 &#8211; Run the Report</h2>
<p>The report generated is pretty much the exact same as the SpecUnit report. The easiest thing to do is place the following MSpec binaries and file in the directory where your test binaries are placed; CommandLine.dll, Machine.Specifications.ConsoleRunner.exe, Machine.Specifications.dll and CommandLine.xml. The command to run the report goes a little something like:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt">machine.specifications.consolerunner --html &lt;the location you want the html report stored&gt; &lt;your test dll name&gt;</pre>
<p>This is the report generated from the example specs:</p>
<p><img src="//lostechies.com/seanbiefeld/files/2011/03/MSpecReportExample.PNG" style="border: solid 1px #ddd" />
</p>
<p>Well, that&#8217;s about all for now, let me know if you have any questions.</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/08/26/step-by-step-to-using-machine-specifications-with-resharper/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Configuring Fluent NHibernate with an External NHibernate Config File</title>
		<link>http://lostechies.com/seanbiefeld/2009/07/13/using-fluent-nhibernate-with-and-external-nhibernate-config-file/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/07/13/using-fluent-nhibernate-with-and-external-nhibernate-config-file/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 16:12:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[configuration]]></category>
		<category><![CDATA[Fluent NHibernate]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[Nhibernate]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/07/13/using-fluent-nhibernate-with-and-external-nhibernate-config-file.aspx</guid>
		<description><![CDATA[A while ago I was having issues using configuring fluent NHibernate with an external configuration file. I kept running into the issue of mappings not being registered. I was finally able to get it working appropriately and thought I would&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/07/13/using-fluent-nhibernate-with-and-external-nhibernate-config-file/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A while ago I was having issues using configuring fluent NHibernate with an external configuration file. I kept running into the issue of mappings not being registered. I was finally able to get it working appropriately and thought I would share my solution. The key is to configure the normal mappings first and then pass that configuration in when configuring fluent NHibernate.</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">string</span> configFile = <span style="color: #8f9d6a">"hibernate.cfg.xml"</span>;<br /><br /><span style="color: #5f5a5f">//setup the normal map configuration</span><br /><span style="color: #cda869">Configuration</span> normalConfig = <span style="color: #cda869">new</span> <span style="color: #7386a5">Configuration</span>().Configure(configFile);<br /><br /><span style="color: #5f5a5f">//setup the fluent map configuration</span><br /><span style="color: #7386a5">Fluently</span>.Configure(normalConfig)<br />	.Mappings(<br />		m =&gt; m.FluentMappings<br />		.ConventionDiscovery.Add(<span style="color: #7386a5">DefaultLazy</span>.AlwaysFalse())<br />		.AddFromAssemblyOf&lt;<span style="color: #7386a5">UserMap</span>&gt;())<br />	.BuildConfiguration();<br /></pre>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/07/13/using-fluent-nhibernate-with-and-external-nhibernate-config-file/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Testing with a Compiled Class that Doesn&#8217;t Implement an Interface &#8211; Adapter Pattern</title>
		<link>http://lostechies.com/seanbiefeld/2009/04/11/testing-compiled-classes-which-don-t-implement-an-interface/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/04/11/testing-compiled-classes-which-don-t-implement-an-interface/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 01:26:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[Adapter Patter]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Compiled Class]]></category>
		<category><![CDATA[Implement Interface]]></category>
		<category><![CDATA[Specification]]></category>
		<category><![CDATA[Unit Test]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/04/10/testing-compiled-classes-which-don-t-implement-an-interface.aspx</guid>
		<description><![CDATA[*UPDATE: Per&#160;sean chambers, this is an example of the&#160;adapter pattern I recently ran into an issue where I needed to implement a simple email service to send users a randomly generated PIN when they are first entered into the system.&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/04/11/testing-compiled-classes-which-don-t-implement-an-interface/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>*UPDATE: Per&nbsp;<a href="/members/schambers/default.aspx" target="_blank">sean chambers</a>, this is an example of the&nbsp;<a href="http://en.wikipedia.org/wiki/Adapter_pattern" target="_blank">adapter pattern</a></p>
<p>I recently ran into an issue where I needed to implement a simple email service to send users a randomly generated PIN when they are first entered into the system. To accomplish this I decided to just use the <a target="_blank" title="system.net.mail" href="http://msdn.microsoft.com/en-us/library/system.net.mail.aspx">System.Net.Mail</a> implementation.&nbsp; To create and send an email you have to use the <a target="_blank" title="SmtpClient" href="http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx">SmtpClient</a> class which does not implement an interface. All I really wanted to test was that the Send() method was called, I did not want to write an integration test that actually sends an email.</p>
<p>One way to work around this problem is to create an interface containing the elements you need to mock from the compiled class.&nbsp; After this, create your own class that inherits the compiled class and implements your interface. Now when testing, you can seemingly mock up the non-interfaced compiled class, which is exactly what I wanted to achieve. I am not sure whether this is the appropriate way to handle the issue, if anyone has any thoughts on a better way to do this, I would be grateful for the advice.</p>
<p>My specification ended up looking like this:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">public class</span> <span style="color: #7386a5">EmailServiceSpecs</span> : <span style="color: #7386a5">ContextSpecification</span>
{
	<span style="color: #cda869">protected</span> <span style="color: #d0da90">IEmailService</span> _emailService;
	<span style="color: #cda869">protected</span> <span style="color: #d0da90">ISmtpClient</span> _smtpClient;
	<span style="color: #cda869">protected string</span> _emailTo <span style="color: #cda869">=</span> <span style="color: #8f9d6a">"phillip.fry@planetexpress.com"</span>;
	<span style="color: #cda869">protected string</span> _emailFrom <span style="color: #cda869">=</span> <span style="color: #8f9d6a">"hermes.conrad@planetexpress.com"</span>;
	<span style="color: #cda869">protected string</span> _emailSubject <span style="color: #cda869">=</span> <span style="color: #8f9d6a">"New Process to Improve Morale"</span>;
	<span style="color: #cda869">protected string</span> _emailBody <span style="color: #cda869">=</span> <span style="color: #8f9d6a">"From now on all employees will be required to have Brain slugs, remember, a mindless worker is a happy worker."</span>;

	<span style="color: #cda869">protected override void</span> SharedContext()
	{
		<span style="color: #7386a5">DependencyInjection</span><span style="color: #cda869">.</span><span style="color: #7386a5">RegisterType</span>&lt;<span style="color: #d0da90">IEmailService</span>, <span style="color: #7386a5">EmailService</span>&gt;();

		_emailService <span style="color: #cda869">=</span> <span style="color: #7386a5">DependencyInjection</span>
			<span style="color: #cda869">.</span>GetDependency&lt;<span style="color: #d0da90">IEmailService</span>&gt;(_emailTo, _emailFrom, _emailSubject, _emailBody);

		_smtpClient <span style="color: #cda869">=</span> <span style="color: #7386a5">MockRepository</span>.GenerateMock&lt;<span style="color: #d0da90">ISmtpClient</span>&gt;();

		<span style="color: #7386a5">DependencyInjection</span><span style="color: #cda869">.</span>RegisterInstance(_smtpClient);
	}
}

[<span style="color: #7386a5">TestFixture</span>]
[<span style="color: #7386a5">Concern</span>(<span style="color: #8f9d6a">"Email Service"</span>)]
<span style="color: #cda869">public class</span> <span style="color: #7386a5">when_sending_an_email</span> : <span style="color: #7386a5">EmailServiceSpecs</span>
{
	<span style="color: #cda869">protected override void</span> Context()
	{
		_smtpClient.Stub(smptClient <span style="color: #cda869">=&gt;</span> smptClient<span style="color: #cda869">.</span>Send(<span style="color: #cda869">new</span> <span style="color: #7386a5">MailMessage</span>()))
			<span style="color: #cda869">.</span>IgnoreArguments()
			<span style="color: #cda869">.</span>Repeat<span style="color: #cda869">.</span>Any();

		_emailService<span style="color: #cda869">.</span>Send();
	}

	[<span style="color: #7386a5">Test</span>]
	[<span style="color: #7386a5">Observation</span>]
	<span style="color: #cda869">public void</span> should_send_email()
	{
		_smtpClient<span style="color: #cda869">.</span>AssertWasCalled
			(smtpClient <span style="color: #cda869">=&gt;</span> smtpClient<span style="color: #cda869">.</span>Send(<span style="color: #cda869">new</span> MailMessage()),
			assertionOptions <span style="color: #cda869">=&gt;</span> assertionOptions<span style="color: #cda869">.</span>IgnoreArguments());
	}
}
</pre>
<p>Below are my email classes:</p>
<pre style="background-color: #141414;font-family: Lucida Console;padding: 5px;border:solid 1px #333;overflow: auto;color: #BEBEC8;font-size: 10pt"><span style="color: #cda869">public interface</span> <span style="color: #d0da90">ISmtpClient</span>
{
	<span style="color: #cda869">void</span> Send(<span style="color: #7386a5">MailMessage</span> message);
}

[<span style="color: #7386a5">MapDependency</span>(<span style="color: #cda869">typeof</span>(<span style="color: #d0da90">ISmtpClient</span>))]
<span style="color: #cda869">public class </span><span style="color: #7386a5">SubsideSmtpClient</span> : <span style="color: #7386a5">SmtpClient</span>, <span style="color: #d0da90">ISmtpClient</span> { }

<span style="color: #cda869">public interface</span> <span style="color: #d0da90">IEmailService</span>
{
	<span style="color: #cda869">void</span> Send();
}

[<span style="color: #7386a5">MapDependency</span>(<span style="color: #cda869">typeof</span>(<span style="color: #d0da90">IEmailService</span>))]
<span style="color: #cda869">public class</span> <span style="color: #7386a5">EmailService</span> : <span style="color: #d0da90">IEmailService</span>
{
	<span style="color: #cda869">public</span> <span style="color: #7386a5">EmailService</span>(<span style="color: #cda869">string</span> to, <span style="color: #cda869">string</span> from, <span style="color: #cda869">string</span> subject, <span style="color: #cda869">string</span> body)
	{
		Email = <span style="color: #cda869">new</span> <span style="color: #7386a5">MailMessage</span>(from, to, subject, body);
	}

	<span style="color: #cda869">protected</span> <span style="color: #7386a5">MailMessage</span> Email
	{
		<span style="color: #cda869">get</span>; <span style="color: #cda869">set</span>;
	}

	<span style="color: #cda869">private</span> <span style="color: #d0da90">ISmtpClient</span> _smptClient;

	<span style="color: #cda869">protected</span> <span style="color: #d0da90">ISmtpClient</span> Smtp
	{
		<span style="color: #cda869">get</span>
		{
			_smptClient = <span style="color: #7386a5">DependencyUtilities</span>
				<span style="color: #cda869">.</span>RetrieveDependency(_smptClient);
			<span style="color: #cda869">return</span> _smptClient;
		}
	}

	<span style="color: #cda869">public void</span> Send()
	{
		Smtp<span style="color: #cda869">.</span>Send(Email);
	}
}
</pre>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/04/11/testing-compiled-classes-which-don-t-implement-an-interface/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Updated MonoChrome Firefox theme</title>
		<link>http://lostechies.com/seanbiefeld/2009/03/27/updated-monochrome-firefox-theme/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/03/27/updated-monochrome-firefox-theme/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 01:55:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[Firefox]]></category>
		<category><![CDATA[monochrome]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/03/26/updated-monochrome-firefox-theme.aspx</guid>
		<description><![CDATA[Hey just wanted to let everyone know that I updated my Firefox theme, MonoChrome, for version 3.5b4pre.You can grab it from the link below: https://addons.mozilla.org/en-US/firefox/addon/8791 Screen shot: If you would like to contribute or grab the source, it is hosted&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/03/27/updated-monochrome-firefox-theme/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Hey just wanted to let everyone know that I updated my Firefox theme, MonoChrome, for version 3.5b4pre.<br />You can grab it from the link below:</p>
<p><a target="_blank" title="MonoChrome" href="https://addons.mozilla.org/en-US/firefox/addon/8791">https://addons.mozilla.org/en-US/firefox/addon/8791</a></p>
<p>Screen shot:</p>
<p><img src="//lostechies.com/seanbiefeld/files/2011/03/monochromeBrowserAll.png" /></p>
<p>If you would like to contribute or grab the source, it is hosted on google code:</p>
<p><a target="_blank" title="monochrome theme" href="http://code.google.com/p/monochrometheme">http://code.google.com/p/monochrometheme</a></p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/03/27/updated-monochrome-firefox-theme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Visual Studio Twilight theme</title>
		<link>http://lostechies.com/seanbiefeld/2009/03/23/my-visual-studio-twilight-theme/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/03/23/my-visual-studio-twilight-theme/#comments</comments>
		<pubDate>Mon, 23 Mar 2009 00:58:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[Color Scheme]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/03/22/my-visual-studio-twilight-theme.aspx</guid>
		<description><![CDATA[I just finalized my text color theme for visual studio. Just thought I would share it with everyone. It is geared towards those of you who have resharper installed, but it should still work fine without it. The theme is&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/03/23/my-visual-studio-twilight-theme/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just finalized my text color theme for visual studio. Just thought I would share it with everyone. It is geared towards those of you who have resharper installed, but it should still work fine without it.</p>
<p>The theme is based off of the <a href="http://wiki.macromates.com/Themes/UserSubmittedThemes" target="_blank">textmate</a> twilight theme. I was going for a low contrast theme that is easy on the eyes.&nbsp; I have tried the Vibrant Ink theme and it is too abrasive for me. My goal was to make warnings and errors blatantly obvious and distinguish classes from interfaces. I also love how the comments are dark and do not draw attention, I am not a big fan of comments.&nbsp; I think the code along with BDD tests should be self-explanatory of what is going on.</p>
<p>All resharper warnings show up as red text. Build errors have red squiggly lines under them.&nbsp; Breakpoints have red background. </p>
<p>Here is a c# example:</p>
<p><img src="/cfs-filesystemfile.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.37/TwilightCs.PNG" /></p>
<p>Here is an example of an aspx page:</p>
<p><img src="/cfs-filesystemfile.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.37/TwilightAspx.PNG" /></p>
<p>Style sheet example:</p>
<p><img src="/cfs-filesystemfile.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.37/TwilightCss.PNG" /></p>
<p>JavaScript example:</p>
<p><img src="/cfs-filesystemfile.ashx/__key/CommunityServer.Components.UserFiles/00.00.00.21.37/TwilightJs.PNG" /></p>
<p>Let me know if you have any suggestions.</p>
<p><a target="_blank" href="//lostechies.com/seanbiefeld/files/2011/03/MyTwighlightTheme.zip">Grab the Visual Studio settings file here!</a></p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/03/23/my-visual-studio-twilight-theme/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Developing at the Speed of Microsoft</title>
		<link>http://lostechies.com/seanbiefeld/2009/03/03/developing-at-the-speed-of-microsoft/</link>
		<comments>http://lostechies.com/seanbiefeld/2009/03/03/developing-at-the-speed-of-microsoft/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 08:07:00 +0000</pubDate>
		<dc:creator>Sean Biefeld</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[RESTful web service]]></category>

		<guid isPermaLink="false">/blogs/seanbiefeld/archive/2009/03/03/developing-at-the-speed-of-microsoft.aspx</guid>
		<description><![CDATA[As .net developers do you ever feel like Microsoft is hindering your development by the development tools they impose on us. I have been thinking about this lately and decide to discuss it, or this might actually be a rant,&#160;&#8230; <a href="http://lostechies.com/seanbiefeld/2009/03/03/developing-at-the-speed-of-microsoft/">Continue&#160;reading&#160;<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As .net developers do you ever feel like <a target="_blank" href="http://en.wikipedia.org/wiki/Microsoft">Microsoft i</a>s hindering your development by the development tools they impose on us. I have been thinking about this lately and decide to discuss it, or this might actually be a rant, forgive the rant. I aim to take a brief look at web development the Microsoft way, how it has evolved, and the hindrances imposed on the community.</p>
<h2>The Microsoft Web Development World</h2>
<p>Now I have never developed Microsoft web applications pre-webforms, i.e. pre-<a target="_blank" href="http://en.wikipedia.org/wiki/ASP.NET">Asp.net</a>, so I am not going to comment on that. What I am going to focus on is Microsoft&#8217;s asp.net development frameworks. As a side note, I have not done much development on the windows side of things, but it seems that it has been stagnating. I would love to see Microsoft write some bindings for <a target="_blank" href="http://en.wikipedia.org/wiki/GTK%2B">GTK+</a> and/or <a target="_blank" href="http://en.wikipedia.org/wiki/Qt_(toolkit)">Qt</a>, and support those cross platform toolkits. Pie in the sky dreams, I know.</p>
<h3>ASP.NET &#8211; Web Forms<br /></h3>
<p>Somehow in their brilliance, big brother decided that abstracting HTML and Javascript into a infinitely more complex framework would be a good idea. This is ludicrous, don&#8217;t introduce unnecessary bloat into a framework. The page life cycle is ridiculous, all the built in webform controls use some retarded infinite inheritance scheme. Also what&#8217;s Microsoft&#8217;s infatuation with span tags, they wrapped all their webform controls in them.</p>
<p> Lol, I know this is common knowledge and has been discussed at length before but I still have to deal with it on a daily basis and it feels like I&#8217;m trying to cut off my leg with a steak knife. My interest lies in finding the true reasoning behind this. I have to working theories. One is that Microsoft is so loving and kind towards their developers that they wanted to coddle them, and that coddling most likely stemmed from their lack of respect for us and our intelligence.  The other theory is that Microsoft convoluted the framework without realizing it due to their arrogance, believing they own the world and the way they are doing things must be right.</p>
<h3>ASP.NET AJAX</h3>
<p>Next the <a target="_blank" href="http://en.wikipedia.org/wiki/Web_2.0">web 2.0</a> boom arrived and everyone was clamoring for more interactive web UIs. The .net developers yelled loud enough and long enough that they wanted to have the same thing that they were witnessing in other web frameworks. The keyword here is <a target="_blank" href="http://en.wikipedia.org/wiki/ASP.NET_AJAX">ajax</a>. So what does Microsoft do, they don&#8217;t take this moment and think about totally redesigning their asp.net framework, they say lets create some more complex web controls and use them in conjunction with an uber-complex ajax framework. </p>
<p>Awesome, we now how fresh steamy poo piled on top of old rotting, festering poo. Thanks big brother. Instead of realizing their mistakes they made with web forms they exacerbate the problem. Now we get a seemingly dumbed down ajax scheme, oh just wrap everything in an update panel and Microsoft will do the rest. Besides the fact that this removes all control you have over the interactions between the server and client, you also can not use any other javascript inside of these panels. So once again it boils down to arrogance, contempt, and a lack of foresight.</p>
<h3>ASP.NET MVC</h3>
<p>Now, Microsoft sees a significant proportion of developers moving to <a target="_blank" href="http://en.wikipedia.org/wiki/Ruby_(programming_language)">ruby</a> utilizing the <a target="_blank" href="http://en.wikipedia.org/wiki/Ruby_on_Rails">ruby on rails framework</a>. Also the community is yelling and screaming again, must be appeasement time. Did Microsoft actually take an introspective look and realize how ass backwards webforms is? Doubtful, they just figured out that they better do something to try and hold onto market share and give the community some fools gold. So they copy ruby on rails, ooooh, way to go big brother, you&#8217;re so innovative!</p>
<p> It is way too late in the game, <a target="_blank" href="http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework">asp.net mvc</a> is something Microsoft should have done long ago. Back when they were formulating asp.net webforms. There is no excuse for Microsoft not to have created a framework like this when they introduced the asp.net ajax stuff. It&#8217;s ridiculous, and still they are losing market share, I wonder why. </p>
<p>They ignore their base long enough and they won&#8217;t have a base. What are we supposed to drink the kool-aid and be satisfied, the <a target="_blank" href="http://en.wikipedia.org/wiki/Model-view-controller">MVC pattern</a> is how old? Oh, wow they are supporting a way to <a target="_blank" href="http://en.wikipedia.org/wiki/Unit_testing">unit test</a> the UI interactions, wow how progressive you are Microsoft. Where is the support for plugins, where is the support for <a target="_blank" href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful web services</a>? The point is there is nothing to be impressed about, it&#8217;s ridiculous that people are excited, this should have happened long ago.</p>
<h2>Conclusion</h2>
<p>Now don&#8217;t get your panties in a wad I&#8217;m not all cynical, I like <a target="_blank" href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)">c#</a> as a language, even thought it is a static language and I like the <a target="_blank" href="http://en.wikipedia.org/wiki/Common_Language_Runtime">CL</a>R. Hopefully MVC is a sign that Microsoft is going to be moving at a less stagnant pace. I don&#8217;t think they will be. </p>
<p>Things like <a target="_blank" href="http://www.mono-project.com/Main_Page">Mono</a>, <a target="_blank" href="/www.nhibernate.org/">NHibernate</a>, the <a target="_blank" href="http://altdotnet.org/">alt.net community</a> supplement the failings of the giant, but we should be fed up. Microsoft doesn&#8217;t listen, because of their corporate culture, which i doubt will change. Adding things to the web framework that should have been there long ago is nothing to celebrate, there i said it, <a target="_blank" href="http://www.youtube.com/watch?v=_6rAUUoaNZo">&#8220;Big whoop, want to fight about it&#8221;</a>. </p>
<p>On a larger scale, why is Microsoft not listening to the community more, why are they not seeking to improve the community along the lines of the ruby community?  Where is Microsoft&#8217;s version of package management like <a target="_blank" href="http://en.wikipedia.org/wiki/RubyGems">ruby gems</a>? Where&#8217;s their continuous integration/build tool? Where&#8217;s their testing framework? Where&#8217;s there promotion of best software practices, i.e. <a target="_blank" href="/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx">SOLID</a>, <a target="_blank" href="http://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, <a target="_blank" href="http://en.wikipedia.org/wiki/Behavior_Driven_Development">BDD</a>, <a target="_blank" href="http://en.wikipedia.org/wiki/Agile_software_development">Agile methodologies</a>, <a target="_blank" href="http://blog.scottbellware.com/2009/02/decade-of-agile-dawn-of-lean.html">Lean methodologies</a>? The answer is no where, all of that exists inside the community without Microsoft&#8217;s support. </p>
<p>The community is bettering ourselves in spite of Microsoft&#8217;s stagnation. Now think what could be accomplished if they actually fully embraced the community and threw their money and clout behind what the community stands for, it would be great. I am very doubtful that will happen, though, I think it will take mass exodus from .net development for Microsoft to ever get the message. If nothing happens the .net community will continue to stagger along at the pace of Microsoft, it will not reach its potential, and the community will wither and die. </p>
<p>There is an entire software industry that needs to mature, the .net community is but a sub-section of it.&nbsp; It would be great if we could lead the industry in best practices and passion for our craft.</p>
<p><font color="#B4B4B4" size="-2">Post Footer automatically generated by <a href="http://www.freetimefoto.com/add_post_footer_plugin_wordpress" style="color: #B4B4B4; text-decoration:underline;">Add Post Footer Plugin</a> for wordpress.</font></p>
]]></content:encoded>
			<wfw:commentRss>http://lostechies.com/seanbiefeld/2009/03/03/developing-at-the-speed-of-microsoft/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
	</channel>
</rss>
