<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3492552138571540564</id><updated>2018-03-22T05:01:58.688-07:00</updated><category term="NAnt"/><category term="Visual Studio"/><category term="Pragmatic"/><category term="Resharper"/><category term="TDD"/><category term="Asp.net MVC"/><category term="Dot Net"/><category term="Funny"/><category term="NHibernate"/><category term="Personal"/><category term="Agile"/><category term="ThirdAngle"/><category term=".Net 3.5"/><category term="2008 Lancer"/><category term="Asp.net"/><category term="Domain Driven Design"/><category term="Food"/><category term="Functional Testing"/><category term="Goals"/><category term="Health and Safety"/><category term="IIS Express"/><category term="LINQ"/><category term="MbUnit"/><category term="ORM"/><category term="Pair Programming"/><category term="Podcasts"/><category term="Presentation"/><category term="Retrospective"/><category term="SQL CE"/><category term="UML"/><category term="YouOS"/><title type='text'>::.. Streamline Logic ..::</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default?start-index=26&amp;max-results=25'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-8479800506939885867</id><published>2014-10-23T13:23:00.003-07:00</published><updated>2014-11-10T16:49:15.783-08:00</updated><title type='text'>Git Tip: find unmerged branches</title><content type='html'>&lt;br /&gt;Here is handy little git command to find merged or unmerged branches.&lt;br /&gt;&lt;br /&gt;The command is as follows&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;git branch &amp;lt;whereToLook&amp;gt; --merged &amp;lt;branch&amp;gt; &lt;/blockquote&gt;Where to look can be :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;-l locally (default)&lt;/li&gt;&lt;li&gt;-r remotely&lt;/li&gt;&lt;li&gt;-a both&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;branch&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;The branch to check. The default is your current branch.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;To find merged branches&amp;nbsp;both (remotely and locally)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;git branch -a --merged&lt;/blockquote&gt;&lt;br /&gt;&lt;b&gt;To find unmerged branches&amp;nbsp;&lt;/b&gt;&lt;b&gt;remotely and locally)&lt;/b&gt;&lt;br /&gt;&lt;blockquote class=&quot;tr_bq&quot;&gt;git branch -a --no-merged&lt;/blockquote&gt;To find unmerged branches we append the merged command with no&lt;br /&gt;&lt;br /&gt;If you don&#39;t specify a branch it will default to your current branch.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/8479800506939885867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=8479800506939885867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/8479800506939885867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/8479800506939885867'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2014/10/git-tip-find-unmerged-branches.html' title='Git Tip: find unmerged branches'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-406265428905188981</id><published>2014-05-19T16:35:00.000-07:00</published><updated>2014-05-19T16:36:59.650-07:00</updated><title type='text'>Simple web server on mac</title><content type='html'>Here&#39;s a cool little command that you can use to start a simple web server to any directory on your mac.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open terminal&amp;nbsp;&lt;/li&gt;&lt;li&gt;Navigate to a directory&amp;nbsp;&lt;/li&gt;&lt;li&gt;Execute the following command&lt;br /&gt;&lt;span style=&quot;background-color: whitesmoke; color: #333333; font-family: Courier, monospace; font-size: 15px;&quot;&gt;python -m SimpleHTTPServer 8000&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/406265428905188981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=406265428905188981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/406265428905188981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/406265428905188981'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2014/05/simple-web-server-on-mac.html' title='Simple web server on mac'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5024044581841989556</id><published>2012-07-20T08:45:00.002-07:00</published><updated>2012-07-20T08:45:40.501-07:00</updated><title type='text'>Nifty Trick: Minimize remote desktop from your keyboard</title><content type='html'>Every time I try to go&amp;nbsp;mouse-less&amp;nbsp;I find one or two programs that have me reaching for the mouse. Remote desktop is one of those programs.&lt;br /&gt;&lt;br /&gt;I found a nifty short cut to exit full screen mode in remote desktop. All you have to do is press CTRL + ALT + Break.&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;To go back to full screen mode use the same key combo.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5024044581841989556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5024044581841989556' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5024044581841989556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5024044581841989556'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2012/07/nifty-trick-minimize-remote-desktop.html' title='Nifty Trick: Minimize remote desktop from your keyboard'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-7120020715998581205</id><published>2012-07-19T22:11:00.002-07:00</published><updated>2012-07-20T07:59:52.996-07:00</updated><title type='text'>I&#39;m a Published Apple Developer</title><content type='html'>Over the last several months I had the pleasure of making an iPad app for &lt;a href=&quot;http://ecompliance.com/&quot; target=&quot;_blank&quot;&gt;eCompliance&lt;/a&gt;. It&#39;s a simple application that allows one to perform an inspection. The application comes with a number of predefined inspections or you can create your own. The name of the application is &lt;a href=&quot;http://itunes.apple.com/app/id541415497&quot; target=&quot;_blank&quot;&gt;ec-InspectionPad.&amp;nbsp;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Learning to program in Objective C wasn&#39;t as difficult as I thought it would be. The most challenging aspect of learning Objective C was the absence of many .Net language features that I&#39;ve grown a custom to. For example, objective C does not have anything similar to LINQ or generics. If I&#39;ve learned anything from working with Objective C it&#39;s that C# is a progressive modern language that I would much rather work with.&lt;br /&gt;&lt;br /&gt;Just an example of a method call in Objective C. &lt;br /&gt;[redirect to:&lt;a href=&quot;http://itunes.apple.com/app/id541415497&quot; target=&quot;_blank&quot;&gt;ec-InspectionPad.&lt;/a&gt; andOpenInANewWindow:YES]&amp;nbsp;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/7120020715998581205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=7120020715998581205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/7120020715998581205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/7120020715998581205'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2012/07/im-published-apple-developer.html' title='I&#39;m a Published Apple Developer'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-1785984111213757198</id><published>2011-07-25T09:24:00.000-07:00</published><updated>2011-07-25T09:24:33.580-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Resharper"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Reshaper 6 JavaScript Support</title><content type='html'>JavaScript support in &lt;a href=&quot;http://www.jetbrains.com/resharper/whatsnew/#JavaScript&quot;&gt;Resharper 6&lt;/a&gt; is&amp;nbsp;absolutely&amp;nbsp;amazing. I was playing around with KnockOutJS and was&amp;nbsp;surprised&amp;nbsp;to find intellisense. Even Ctrl + p worked to show the signature of a&amp;nbsp;JavaScript&amp;nbsp;function. If you do alot of JavaScript I highly recommend Resharper 6.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/1785984111213757198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=1785984111213757198' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1785984111213757198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1785984111213757198'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2011/07/reshaper-6-javascript-support.html' title='Reshaper 6 JavaScript Support'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5747524489634030688</id><published>2011-07-24T15:39:00.000-07:00</published><updated>2011-07-24T15:39:54.392-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Visual Studio 2010 JScript Editor Extensions</title><content type='html'>Install it. Enough said.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5747524489634030688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5747524489634030688' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5747524489634030688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5747524489634030688'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2011/07/visual-studio-2010-jscript-editor.html' title='Visual Studio 2010 JScript Editor Extensions'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4228913480797855632</id><published>2010-07-19T13:52:00.000-07:00</published><updated>2010-07-19T14:08:59.943-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate"/><title type='text'>NHibernate Detached Criteria is not Reusable</title><content type='html'>While working on a paging feature for&amp;nbsp;our application&amp;nbsp;I&amp;nbsp;discovered that&amp;nbsp;the NHibernate&amp;nbsp;detached criteria is not reusable. My goal was to create a single call to&amp;nbsp;a repository using one detached criteria. The Idea&amp;nbsp;was to reuse the detached criteria to perform&amp;nbsp;two queries. One query to retrieve the total number records. The second query to&amp;nbsp;retrieve a list of items for the specified&amp;nbsp;page number and number of records per a&amp;nbsp;page.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #444444;&quot;&gt;On the repository we have the following method.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;QueryResult&amp;lt;&lt;/span&gt;T&amp;gt; FindBy(&lt;span style=&quot;color: #2b91af;&quot;&gt;DetachedCriteria&lt;/span&gt; query,&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; pageNumber,&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; numberOfItemsToDisplay);&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #444444;&quot;&gt;The QueryResult returned from the repository has&amp;nbsp;a total and the items for the requested page.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 10pt;&quot;&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;QueryResult&lt;/span&gt;&lt;span style=&quot;background-color: white; color: black;&quot;&gt;&amp;lt;&lt;/span&gt;T&amp;gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; TotalNumberOfItems { &lt;span style=&quot;color: blue;&quot;&gt;get&lt;/span&gt;; &lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt; Items { &lt;span style=&quot;color: blue;&quot;&gt;get&lt;/span&gt;; &lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;set&lt;/span&gt;; }&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; QueryResult(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; totalNumberOfItems, &lt;span style=&quot;color: #2b91af;&quot;&gt;IEnumerable&lt;/span&gt;&amp;lt;T&amp;gt; items)&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; TotalNumberOfItems = totalNumberOfItems;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Items = items;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #444444;&quot;&gt;Here is my implementation of FindBy. I had a few helper methods but removed them to fully illustrate the problem.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 10pt;&quot;&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;QueryResult&lt;/span&gt;&amp;lt;T&amp;gt; FindBy(&lt;span style=&quot;color: #2b91af;&quot;&gt;DetachedCriteria&lt;/span&gt; query, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; pageNumber, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; numberOfItemsToDisplay)&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; pageIndex = pageNumber - 1;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; firstResult = 0;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (pageIndex != 0)&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; firstResult = pageIndex * numberOfItemsToDisplay;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af;&quot;&gt;ICriteria&lt;/span&gt; executableQuery = query.GetExecutableCriteria(CurrentSession());&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; executableQuery.SetProjection(&lt;span style=&quot;color: #2b91af;&quot;&gt;Projections&lt;/span&gt;.RowCount());&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; count =&amp;nbsp; executableQuery.UniqueResult&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;gt;();&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetProjection(&lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: #ffe599;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; query.SetResultTransformer(&lt;span style=&quot;color: #2b91af;&quot;&gt;CriteriaSpecification&lt;/span&gt;.RootEntity);&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; items = FindBy(query.SetFirstResult(firstResult).SetMaxResults(numberOfItemsToDisplay));&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;QueryResult&lt;/span&gt;&amp;lt;T&amp;gt;(count,items);&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #444444;&quot;&gt;The confusing part&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;u&gt;&lt;/u&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 10pt;&quot;&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;ICriteria&lt;/span&gt; executableQuery = query.GetExecutableCriteria(CurrentSession());&lt;/div&gt;&lt;/div&gt;Calling getExecutableCritieria returns an ICrtieria object. One would think that the criteria object does&amp;nbsp;not have a connection to the detached query object. Calling the code below should not change the detached criteria.&lt;br /&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 10pt;&quot;&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;executableQuery.SetProjection(&lt;span style=&quot;color: #2b91af;&quot;&gt;Projections&lt;/span&gt;.RowCount());&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; count =&amp;nbsp; executableQuery.UniqueResult&amp;lt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt;&amp;gt;();&lt;/div&gt;&lt;/div&gt;The quick fix is to set the projection to null and reset the result transformer.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 10pt;&quot;&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;//Reset&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;query.SetProjection(&lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;);&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;query.SetResultTransformer(&lt;span style=&quot;color: #2b91af;&quot;&gt;CriteriaSpecification&lt;/span&gt;.RootEntity);&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;//Excute new query&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; items = FindBy(query.SetFirstResult(firstResult).SetMaxResults(numberOfItemsToDisplay));&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: #444444;&quot;&gt;In Summary&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I find the behaviour of the detached criteria object to be somewhat odd. It might just be a misunderstanding on my part but the API led me to believe that the ICriteria object had no relationship to the detached query.&amp;nbsp;The coupling between the ICriteria object and detached criteria was a big surprise. If I were to ask I bet the NHibernrate/Hibernate team or even Oren Eini could provide me with an explanation.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4228913480797855632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4228913480797855632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4228913480797855632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4228913480797855632'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2010/07/nhibernate-detached-criteria-is-not.html' title='NHibernate Detached Criteria is not Reusable'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-1526191658159298496</id><published>2010-07-18T21:24:00.000-07:00</published><updated>2010-08-03T20:28:46.192-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Asp.net MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="IIS Express"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL CE"/><title type='text'>Razor View Engine for Asp.Net MVC and More</title><content type='html'>Microsoft has done it again. They are releasing a new view engine for Asp.Net MVC code named Razor. Even more impressive is the fact that you will be able to use more than one view engine in your application. This means that you can&amp;nbsp;develop an application using the web forms view engine, spark and razor. To learn more head over to &lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx&quot;&gt;Scott Gu&#39;s blog&lt;/a&gt;. The new view engine is slated to be&amp;nbsp;released with the next version of Asp.net MVC. &lt;br /&gt;&lt;br /&gt;In other news Microsoft is working on two other products: IIS Express and SQL Server Compact Edition 4. With IIS Express you can have a full featured web server that does not require administrative privileges. This is&amp;nbsp;wonderful news for the security conscious developer with&amp;nbsp;a locked down machine(&lt;a href=&quot;http://www.softwarealchemist.net/&quot;&gt;for example this guy&lt;/a&gt;).&amp;nbsp;IIS Express unlike the built-in web server&amp;nbsp;in visual&amp;nbsp;studio will support SSL and url rewriting. From what I can tell it&amp;nbsp;will do pretty much anything IIS 7 does. According to the Gu it will be released as an patch&amp;nbsp;for Visual Studio 2010 later in the year. All versions of Visual Studio in the future will be shipped with IIS Express.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;SQL &lt;/span&gt;Server Compact Edition 4 is another cool product that will work with Asp.Net MVC. SQL CE doesn&#39;t require any installation. It&#39;s as simple as dropping a few dlls in the bin of your application. When your application &lt;span style=&quot;background-color: white;&quot;&gt;starts SQL CE&lt;/span&gt; is loaded into memory and when the application stops it is unloaded. Even better is the ability to easily upgrade from SQL CE to&amp;nbsp;SQL server express,&amp;nbsp;SQL server or&amp;nbsp; even SQL Azure. This means that you can start an application with SQL CE&amp;nbsp;and then upgrade when your application grows beyond the limitations of SQL CE. Visual Studio 2010 will also feature&amp;nbsp;support for SQL CE. It might just be me but Visual Studio is starting to become a one stop&amp;nbsp;shop&amp;nbsp;for everything,&amp;nbsp;and I like&amp;nbsp;it.&amp;nbsp;Fortunately SQL CE does not support stored procedures. Stored procedures are evil so no big deal there. It&#39;s also important to mention that you do not have to change any code to work with SQL CE. It should be as easy as changing your connection string.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/1526191658159298496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=1526191658159298496' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1526191658159298496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1526191658159298496'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2010/07/razor-view-engine-for-aspnet-mvc.html' title='Razor View Engine for Asp.Net MVC and More'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4005315339752492744</id><published>2010-04-05T16:40:00.000-07:00</published><updated>2010-04-05T16:59:10.246-07:00</updated><title type='text'>10038 Jolly Jumper Solution</title><content type='html'>Here&#39;s my Jolly Jumper solution. It was accepted by UVA online judge. It may not be the best solution but at least its readable.&lt;br /&gt;&lt;br /&gt;My Algorithm is designed to fail quickly. As it calculates each sequence number it checks against three simple rules&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The sequence(n) number cannot be 0&lt;/li&gt;&lt;li&gt;The sequence(n) number cannot be equal or greater than the input(numbers in my code). If there are 4 numbers then the sequence should contain the numbers 1,2,3&lt;/li&gt;&lt;li&gt;There cannot be duplicates.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;My solutions took 0.304 seconds to execute. Compared to the best, my solution is rather slow. The best solutions were written in C++ and ANSI C. Their run time was a flat 0. It would be rather interesting to see if &amp;nbsp;I could get an even faster run time. The only problem is that I&#39;m using Java which is going to be slow from the get go. On the bright side I am one of 9546 users that have solved this problem.&lt;br /&gt;&lt;br /&gt;My solution came as a result of refactoring. My original solution did not fail early. Instead it gathered all sequence numbers, sorted a list and then checked that it had the correct numbers. My original solution had an execution time of about 0.36 well my new solution executed at about 0.304. Although my solution isn&#39;t the fastest&#39;s I do enjoy its readability.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;page=show_problem&amp;amp;category=12&amp;amp;problem=979&amp;amp;mosmsg=Submission+received+with+ID+7877328&quot;&gt;The problem can be found here&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/S7p0ms9jblI/AAAAAAAAAdk/4KgU8BY43JM/s1600/Capture.GIF&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/S7p0ms9jblI/AAAAAAAAAdk/4KgU8BY43JM/s640/Capture.GIF&quot; width=&quot;468&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4005315339752492744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4005315339752492744' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4005315339752492744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4005315339752492744'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2010/04/10038-jolly-jumper-solution.html' title='10038 Jolly Jumper Solution'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_nG44Iy0UNwo/S7p0ms9jblI/AAAAAAAAAdk/4KgU8BY43JM/s72-c/Capture.GIF" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-6386297317728641047</id><published>2010-04-04T21:29:00.000-07:00</published><updated>2010-04-04T21:30:58.006-07:00</updated><title type='text'>Algorithms Book Club</title><content type='html'>Well the book club I am a member of is at it again. This time our book club is tackling Algorithms in all its fun and glory... The book we are reading is &quot;&lt;a href=&quot;http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600&quot;&gt;The Algorithm Design Manual&lt;/a&gt;&quot; by Stenven S. Skiena.&lt;br /&gt;&lt;br /&gt;Our first session covered the wonders of big O notation (asymptotic Notation). I&#39;m happy to say that complexity is growing linearly at O(n)... but some days I swear its like O(n!).&lt;br /&gt;&lt;br /&gt;Our second session covered big O again... &lt;br /&gt;&lt;br /&gt;Our third session uncovered the mysteries of data structures.&lt;br /&gt;&lt;br /&gt;Our next session is perhaps more ambitious. We are going to step into the arena and knockout a few algorithms.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Arena:&lt;/b&gt; &lt;a href=&quot;http://uva.onlinejudge.org/&quot;&gt;http://uva.onlinejudge.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;My Weapon of Choice:&lt;/b&gt; Java &lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Problems:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Jolly Jumpers (&lt;span style=&quot;color: #6aa84f;&quot;&gt;Solved&lt;/span&gt;)&lt;br /&gt;&lt;a href=&quot;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=12&amp;amp;page=show_problem&amp;amp;problem=979&quot; target=&quot;_blank&quot;&gt;http://uva.onlinejudge.org/&lt;wbr&gt;&lt;/wbr&gt;index.php?option=com_&lt;wbr&gt;&lt;/wbr&gt;onlinejudge&amp;amp;Itemid=8&amp;amp;categor&lt;br /&gt;y=12&amp;amp;page=show_problem&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;problem=979&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Where&#39;s Waldorf?(&lt;span style=&quot;color: red;&quot;&gt;Unsolved&lt;/span&gt;)&lt;br /&gt;&lt;a href=&quot;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=12&amp;amp;page=show_problem&amp;amp;problem=951&quot; target=&quot;_blank&quot;&gt;http://uva.onlinejudge.org/&lt;wbr&gt;&lt;/wbr&gt;index.php?option=com_&lt;wbr&gt;&lt;/wbr&gt;onlinejudge&amp;amp;Itemid=8&amp;amp;categor&lt;br /&gt;y=12&amp;amp;page=show_problem&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;problem=951&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Crypt Kicker(&lt;span style=&quot;color: red;&quot;&gt;Unsolved&lt;/span&gt;)&lt;br /&gt;&lt;a href=&quot;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=10&amp;amp;page=show_problem&amp;amp;problem=784&quot; target=&quot;_blank&quot;&gt;http://uva.onlinejudge.org/&lt;wbr&gt;&lt;/wbr&gt;index.php?option=com_&lt;wbr&gt;&lt;/wbr&gt;onlinejudge&amp;amp;Itemid=8&amp;amp;categor&lt;br /&gt;y=10&amp;amp;page=show_problem&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;problem=784&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Crypt Kicker II(&lt;span style=&quot;color: red;&quot;&gt;Unsolved&lt;/span&gt;)&lt;br /&gt;&lt;a href=&quot;http://uva.onlinejudge.org/index.php?option=com_onlinejudge&amp;amp;Itemid=8&amp;amp;category=31&amp;amp;page=show_problem&amp;amp;problem=791&quot; target=&quot;_blank&quot;&gt;http://uva.onlinejudge.org/&lt;wbr&gt;&lt;/wbr&gt;index.php?option=com_&lt;wbr&gt;&lt;/wbr&gt;onlinejudge&amp;amp;Itemid=8&amp;amp;categor&lt;br /&gt;y=31&amp;amp;page=show_problem&amp;amp;&lt;wbr&gt;&lt;/wbr&gt;problem=791&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/6386297317728641047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=6386297317728641047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/6386297317728641047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/6386297317728641047'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2010/04/algorithms-book-club.html' title='Algorithms Book Club'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4065929829214487811</id><published>2010-03-14T15:38:00.000-07:00</published><updated>2010-03-14T15:38:48.287-07:00</updated><title type='text'>Happy Pi day!!!</title><content type='html'>Other than being Pi day it&#39;s also Mr. Einstien&#39;s birthday!</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4065929829214487811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4065929829214487811' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4065929829214487811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4065929829214487811'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2010/03/happy-pi-day.html' title='Happy Pi day!!!'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5710981719171475468</id><published>2009-11-13T06:03:00.000-08:00</published><updated>2009-11-13T08:09:12.402-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Reset Visual Stuido Environment</title><content type='html'>For some reason or another my esc key stopped working in visual studio. To make things worse I never made a copy of my&amp;nbsp;environment&amp;nbsp;settings. Without a copy of my default settings I thought that I would have to reinstall or repair visual studio. I was completely and utterly doomed. However, thanks to a quick search, I found that visual studio can be reset back to its default settings through the command line:&lt;br /&gt;&lt;br /&gt;devenv /resetsettings&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms241273(VS.80).aspx&quot;&gt;MSDN Documentation&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5710981719171475468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5710981719171475468' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5710981719171475468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5710981719171475468'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/11/reset-visual-stuido-enviornment.html' title='Reset Visual Stuido Environment'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5028628652794074375</id><published>2009-11-11T05:48:00.000-08:00</published><updated>2009-11-11T05:49:03.921-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Asp.net MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Functional Testing"/><title type='text'>Functional Testing Reinvented</title><content type='html'>For the last few months our team has been using ruby and RWebSpec for functional testing. The only problem with this type of testing is that it&#39;s very brittle. The slightest change to an html element name or even renaming a view can cause our tests to fail. We have been actively searching for a better solution without any results. At least until NOW.&lt;br /&gt;&lt;br /&gt;Jimmy Bogard recently hosted a screencast called &quot;UI Testing&quot;. From the looks of it, the Jimmster has solved our brittle functional testing problem. Using watiN, gallio and most importantly designing for testability our functional tests can be less fragile. It&#39;s actually no different than test driven development. The first thing that you learn with test driven development is that you have to design for&amp;nbsp;testability. If your interested in making your legacy code more testable I suggest giving Michael Feathers book &quot;Working Effectively with Legacy Code&quot; a read. As Michael puts it, all code is legacy code.&lt;br /&gt;&lt;br /&gt;On a&amp;nbsp;separate&amp;nbsp;note our team has also been struggling with deciding how to integrate&amp;nbsp;functional&amp;nbsp;testing into our sprint. One idea that we have is to create a set of&amp;nbsp;acceptance&amp;nbsp;criteria for each story. The acceptance criteria would then be confirmed through our functional tests. Therefore, a story can only be marked as complete if it passes all acceptance criteria.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/10/22/c4mvc-ui-testing-screencast-posted.aspx&quot;&gt;Click here&lt;/a&gt; to view Jimmy&#39;s awesome screencast.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5028628652794074375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5028628652794074375' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5028628652794074375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5028628652794074375'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/11/functional-testing-reinvented.html' title='Functional Testing Reinvented'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-141786084294284943</id><published>2009-11-10T10:39:00.000-08:00</published><updated>2009-11-10T19:35:03.985-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Asp.net MVC"/><title type='text'>MVC 2 Preview 2 Client Side Validation</title><content type='html'>&lt;span style=&quot;font-family: Arial; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: 13px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;;&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Every once in a while early adoption has a way of making a simple process painful. What makes matters even worse is the lack of documentation. Several times during the spiking process I found myself second guessing whether I was at fault or I found a bug.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First here&#39;s an awesome walk through of how to use MVC client side validation. That&#39;s right, it&#39;s just a blank page at the moment.&lt;br /&gt;&lt;insert image=&quot;&quot;&gt;&lt;/insert&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SvnLb-fqo7I/AAAAAAAAAZU/c8EmpQAtEjg/s1600-h/mvc+validation.bmp&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SvnLb-fqo7I/AAAAAAAAAZU/c8EmpQAtEjg/s400/mvc+validation.bmp&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Validating on the Server Side&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;ASP.MVC 2 Preview 1 introduced DataAnnotations to validate a presentation model on the server side. After decorating your model with DataAnnotations validating the presentation model is taken care of by the DefaultModelBinder.&lt;br /&gt;&lt;br /&gt;For example, I created a car presentation model class that ensures the make and model are both required and the string length can be no more than 100 characters. I also added a validation to ensure that the year is between 1900 and 2011.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 11px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;Car&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;DisplayName&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Make&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;Required&lt;/span&gt;]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;StringLength&lt;/span&gt;(100)]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt; Make { &lt;span style=&quot;color: blue;&quot;&gt;get&lt;/span&gt;; &lt;span style=&quot;color: blue;&quot;&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;DisplayName&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Model&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;Required&lt;/span&gt;]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [&lt;span style=&quot;color: #2b91af;&quot;&gt;StringLength&lt;/span&gt;(100)]&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt; Model { &lt;span style=&quot;color: blue;&quot;&gt;get&lt;/span&gt;; &lt;span style=&quot;color: blue;&quot;&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: &#39;Courier New&#39;; font-size: 8pt;&quot;&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;           [&lt;span style=&quot;color: #2b91af;&quot;&gt;Range&lt;/span&gt;(1900,2011)]&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/div&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; Year { &lt;span style=&quot;color: blue;&quot;&gt;get&lt;/span&gt;; &lt;span style=&quot;color: blue;&quot;&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/pre&gt;&amp;nbsp;The create action can now ask the ModelState if it is valid. If the ModelState is not valid you can redisplay the view with errors.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 11px; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;ViewResult&lt;/span&gt; Create(&lt;span style=&quot;color: #2b91af;&quot;&gt;Car&lt;/span&gt; car)&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (ModelState.IsNotValid())&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; View(car);&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: #2b91af;&quot;&gt;CreateCarCommand&lt;/span&gt;.Execute(car);&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; View(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Success&quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;;&quot;&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: &#39;Courier New&#39;; font-size: 8pt;&quot;&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;ModelStateDictionaryExtensions&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;bool&lt;/span&gt; IsNotValid(&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;ModelStateDictionary&lt;/span&gt; subject)&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; !subject.IsValid;&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;pre style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Times New Roman&#39;; white-space: normal;&quot;&gt;On the view you can display errors in a validation summary or place the errors next to the offending html control.&lt;/span&gt;   &lt;/pre&gt;&lt;b&gt;Validating On The Client Side (MVC 2 Preview 2)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;As great as server side validation is, client side validation is the icing on the cake. In the spirit of&amp;nbsp;re-usability DataAnnotations can be reused on the client side. Here is an snippit from ASP.MVC 2 preview 2 release notes:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: monospace; font-size: 11px; white-space: pre;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;The model validator provider class exposes validation metadata to the browser in the form of JSON-serialized metadata that can be consumed by a client-side validation library. The provider class allows you to use other client validation frameworks by writing an adapter that processes the JSON metadata and calls into the alternate client validation library.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div class=&quot;MsoNormal&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;ASP.NET MVC Preview 2 includes the jQuery validation library and a client-side validation adapter for that library. The adapter supports the following&amp;nbsp;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;DataAnnotations&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;namespace validation attributes:&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;BulletedList1&quot; style=&quot;margin-left: 0.25in; text-indent: -0.25in;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span lang=&quot;ES-PR&quot; style=&quot;font-family: Symbol; font-style: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;font: normal normal normal 7pt/normal &#39;Times New Roman&#39;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;StringLengthAttribute&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;BulletedList1&quot; style=&quot;margin-left: 0.25in; text-indent: -0.25in;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span lang=&quot;ES-PR&quot; style=&quot;font-family: Symbol; font-style: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;font: normal normal normal 7pt/normal &#39;Times New Roman&#39;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;RequiredAttribute&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;BulletedList1&quot; style=&quot;margin-left: 0.25in; text-indent: -0.25in;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span lang=&quot;ES-PR&quot; style=&quot;font-family: Symbol; font-style: normal;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;font: normal normal normal 7pt/normal &#39;Times New Roman&#39;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;RegexAttribute&lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;BulletedList1&quot; style=&quot;margin-left: 0.25in; text-indent: -0.25in;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;·&lt;/span&gt;&lt;span style=&quot;font: normal normal normal 7pt/normal &#39;Times New Roman&#39;;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;RangeAttribute &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div class=&quot;BulletedList1&quot; style=&quot;margin-left: 0.25in; text-indent: -0.25in;&quot;&gt;&lt;div style=&quot;margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;&quot;&gt;&lt;span lang=&quot;ES-PR&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&quot;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;The only kicker is that this is a preview and far from perfect.&lt;br /&gt;&lt;br /&gt;To enable client side validation you only need a few things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A call to Html.EnableClientSideValidation();&lt;/li&gt;&lt;li&gt;Three javascript files&lt;/li&gt; &lt;ol&gt;&lt;li&gt;jquery core&lt;/li&gt;&lt;li&gt;jquery validate&lt;/li&gt;&lt;li&gt;and MicrosoftMvcJqueryValidation.JS&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;A lucky rabbit&#39;s foot...&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Actually it really wasn&#39;t that hard to get going and I imagine it will be allot easier in future releases. Heres a list of a few bugs and annoyances.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Html.BeginForm and Html.EndForm do not work as pointed out on Hadi Hariri&#39;s blog. Since it does not implement IDisposable.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Html.BeginForm does not seem to generate any JSON or JS needed to validate on the client. I have no Idea why this will not work since it does implement IDisposable..&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;So far only Html.BeginForm with out generics works but you can still do some cleaver things to keep things strongly typed.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Once I had my application up and running I noticed the javascript validations were not firing when I was tabbing over the input boxes. They only started to work after clicking submit.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you plan on doing server side validations there seems to be an odd side effect. At least I think it&#39;s an odd side effect. I have a view that requires one of the inputs to be validated on the server side. I achieved this by creating a custom validation attribute. Upon returning to the view you are presented with a input box that is colored red and has text explaining the error. Once entering text into the input the textbox returns to normal and the red text disappears. Since the error resides from the server side I would expect the error message to not disappear. I&#39;m still deciding if this is odd behavior or not.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Overall I&#39;m happy with the first release of client side validation for Asp.net MVC. Now that I&#39;ve had a taste of client side validation in ASP.Net MVC I&#39;m ready to try other validation frameworks.&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 8pt;&quot;&gt;&lt;pre style=&quot;margin: 0px;&quot;&gt;&lt;div style=&quot;background: white; color: black; font-family: Courier New; font-size: 8pt;&quot;&gt;&lt;pre style=&quot;margin: 0px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/pre&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/141786084294284943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=141786084294284943' title='28 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/141786084294284943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/141786084294284943'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/11/mvc-2-preview-2-client-side-validation.html' title='MVC 2 Preview 2 Client Side Validation'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_nG44Iy0UNwo/SvnLb-fqo7I/AAAAAAAAAZU/c8EmpQAtEjg/s72-c/mvc+validation.bmp" height="72" width="72"/><thr:total>28</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-655911094967769264</id><published>2009-11-03T08:21:00.000-08:00</published><updated>2009-11-03T08:23:00.320-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Food"/><title type='text'>M&amp;M Cookie</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;What is that? Well my friends its a cookie stuffed with M&amp;amp;M&#39;s. That way when your done eating the cookie you don&#39;t have to eat any M&amp;amp;M&#39;s. Yet another time saver.&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SvBYX4DxP5I/AAAAAAAAAY0/lJX5FcSZqGc/s1600-h/SSPX8145.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SvBYX4DxP5I/AAAAAAAAAY0/lJX5FcSZqGc/s320/SSPX8145.jpg&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/655911094967769264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=655911094967769264' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/655911094967769264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/655911094967769264'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/11/m-cookie.html' title='M&amp;M Cookie'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_nG44Iy0UNwo/SvBYX4DxP5I/AAAAAAAAAY0/lJX5FcSZqGc/s72-c/SSPX8145.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5792973859204461853</id><published>2009-10-30T21:54:00.000-07:00</published><updated>2009-10-30T23:25:35.062-07:00</updated><title type='text'>I had to try this out</title><content type='html'>This is my first blog post from my IPOD Touch. How cool is that.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5792973859204461853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5792973859204461853' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5792973859204461853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5792973859204461853'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/10/i-had-to-try-this-out.html' title='I had to try this out'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4219597121073699735</id><published>2009-10-25T14:02:00.000-07:00</published><updated>2009-10-25T20:30:16.323-07:00</updated><title type='text'>Will Ferrell: Donut Idea</title><content type='html'>&lt;div&gt;It&#39;s a donut stuffed with M&amp;amp;M&#39;s. That way when you finish the donut, you don&#39;t have to eat any M&amp;amp;M&#39;s. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;.&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/SuS-uNPvYaI/AAAAAAAAAYU/9axEibI50SU/s1600-h/MandMDonut.jpg&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/SuS-uNPvYaI/AAAAAAAAAYU/9axEibI50SU/s400/MandMDonut.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5396647954535637410&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4219597121073699735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4219597121073699735' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4219597121073699735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4219597121073699735'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/10/will-ferrell-donut-idea.html' title='Will Ferrell: Donut Idea'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_nG44Iy0UNwo/SuS-uNPvYaI/AAAAAAAAAYU/9axEibI50SU/s72-c/MandMDonut.jpg" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4012559380475342551</id><published>2009-03-16T19:23:00.001-07:00</published><updated>2009-03-17T12:22:19.597-07:00</updated><title type='text'>Injen cold Air Intake</title><content type='html'>&lt;div&gt;I finally did it. Today after work I purchased an Injen Cold Air Intake for my Lancer. I can&#39;t for spring to install my cold air intake. The intake shouldn&#39;t be to difficult to install the instructions Injen provided are adequate. My only preference is that they should have used color pictures instead of black and white ones.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;In the end I should have 10 more hp and 11.46lbs of torque.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8L2ES2cmI/AAAAAAAAAVE/WDcWvtgtams/s1600-h/IMGP2475.JPG&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8L2ES2cmI/AAAAAAAAAVE/WDcWvtgtams/s400/IMGP2475.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313979108814123618&quot; style=&quot;cursor: pointer; width: 400px; height: 300px; &quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/Sb8L3Ks4P1I/AAAAAAAAAVM/Wx249xMFV60/s1600-h/IMGP2476.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/Sb8L3Ks4P1I/AAAAAAAAAVM/Wx249xMFV60/s400/IMGP2476.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313979127713775442&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4012559380475342551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4012559380475342551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4012559380475342551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4012559380475342551'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/03/injen-cold-air-intake.html' title='Injen cold Air Intake'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8L2ES2cmI/AAAAAAAAAVE/WDcWvtgtams/s72-c/IMGP2475.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5400822862279792677</id><published>2009-03-16T19:17:00.000-07:00</published><updated>2009-03-16T19:22:18.464-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="2008 Lancer"/><title type='text'>2008 Lancer Winter Tires</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8JLcpZ7tI/AAAAAAAAAU8/WXEvGhzNYDY/s1600-h/CIMG0554.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8JLcpZ7tI/AAAAAAAAAU8/WXEvGhzNYDY/s400/CIMG0554.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313976177593544402&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/Sb8JK9JxN-I/AAAAAAAAAU0/Xynr07YYcw4/s1600-h/CIMG0548.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/Sb8JK9JxN-I/AAAAAAAAAU0/Xynr07YYcw4/s400/CIMG0548.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313976169139353570&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8JK0U7CxI/AAAAAAAAAUs/p457gpkH-sw/s1600-h/CIMG0544.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8JK0U7CxI/AAAAAAAAAUs/p457gpkH-sw/s400/CIMG0544.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313976166770215698&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/Sb8JJzDmnXI/AAAAAAAAAUk/_X5VsyKZowg/s1600-h/CIMG0543.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/Sb8JJzDmnXI/AAAAAAAAAUk/_X5VsyKZowg/s400/CIMG0543.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313976149249269106&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/Sb8Iaoz9mLI/AAAAAAAAAUc/GJhh5dinKWI/s1600-h/CIMG0542.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 400px; height: 300px;&quot; src=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/Sb8Iaoz9mLI/AAAAAAAAAUc/GJhh5dinKWI/s400/CIMG0542.JPG&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5313975339045460146&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5400822862279792677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5400822862279792677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5400822862279792677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5400822862279792677'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2009/03/2008-lancer-winter-tires.html' title='2008 Lancer Winter Tires'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_nG44Iy0UNwo/Sb8JLcpZ7tI/AAAAAAAAAU8/WXEvGhzNYDY/s72-c/CIMG0554.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-4770393700360944857</id><published>2008-12-26T15:48:00.000-08:00</published><updated>2008-12-26T17:02:06.230-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Agile"/><category scheme="http://www.blogger.com/atom/ns#" term="Presentation"/><title type='text'>Shortenting the Feedback Loop - Aftermath</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SVV7F8GEotI/AAAAAAAAATk/Sr0uvX5fiSU/s1600-h/tmnt.gif&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;width: 338px; height: 319px;&quot; src=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SVV7F8GEotI/AAAAAAAAATk/Sr0uvX5fiSU/s400/tmnt.gif&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5284265079750304466&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, I finally had opportunity to give a presentation in front of a large audience. Ok the audience wasn&#39;t that large. There were about 40 to 50 people. December 2008 my colleagues and I gave a presentation entitled &quot;Shortening the Feedback loop - Our sprint in a nutshell&quot; to the &lt;a href=&quot;http://calgaryagile.com/&quot;&gt;Calgary Agile Methodologies User Group&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Seeing as this was my first presentation outside of school I think that it went pretty good. To make things more interesting our President Ben Snyman and Vice President TJ Snyman attended our presentation. They even chimed in a few times to answer questions and express their opinions during the presentation. I still have a lot to learn about becoming a great presenter but now at least I can check off presenting on my list of goals. The next time I gave a presentation I&#39;ll have to remember to ask someone to take a picture... We were way to focused on the presentation to even remember snapping a picture of this momentous occasion. On &lt;a href=&quot;http://luuduong.com/blog/archive/2008/12/10/shortening-the-feedback-loop---our-sprint-in-a-nutshell.aspx&quot;&gt;Luu&lt;/a&gt; &#39;s blog you can find our slides and &lt;a href=&quot;http://mokhan.ca/blog/2008/12/10/Shortening+The+Feedback+Loop.aspx&quot;&gt;Mo&lt;/a&gt; managed to snap a picture of the audience on his cell phone.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The best part about doing this presentation as a group is that it gave us a chance to really sit down and find a way to articulate what we do to others. If Agile software development could be broken down into one concept I would call it &quot;shortening the feedback loop&quot;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Here&#39;s a synopsis of our presentation:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic; &quot;&gt;Under the Agile software development umbrella there are many principals, processes, methodologies, and practices that fit this style of development. Many companies are relentlessly seeking and implementing ways to continually improve how they design, develop and deliver software. We believe and have found in practice that the Agile way of software development enables, supports and drives this continuous quest for efficiency and improvement. One of the primary goals of Agile software development is to satisfy customer needs through early and continuous delivery of valuable software. We find that most of the business value comes from creating an environment where a shorter feedback loop allows our team to be more proactive and adapt quickly as and when necessary. In this presentation we will share and walk you through a typical sprint/iteration at eCompliance.ca and highlight to where we have shortened the feedback loop and increased efficiency and feedback quality.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/4770393700360944857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=4770393700360944857' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4770393700360944857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/4770393700360944857'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/12/shortenting-feedback-loop-aftermath.html' title='Shortenting the Feedback Loop - Aftermath'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_nG44Iy0UNwo/SVV7F8GEotI/AAAAAAAAATk/Sr0uvX5fiSU/s72-c/tmnt.gif" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-6427587499414339493</id><published>2008-12-07T13:26:00.000-08:00</published><updated>2008-12-07T13:30:47.552-08:00</updated><title type='text'>Merry Christmas From eCompliance</title><content type='html'>Take a look at our Christmas logo. It has a Christmas hat.&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/STxAfQGOZ-I/AAAAAAAAATc/ioeDZSxv90E/s1600-h/.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 155px; height: 110px;&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/STxAfQGOZ-I/AAAAAAAAATc/ioeDZSxv90E/s400/.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5277163769012578274&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/6427587499414339493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=6427587499414339493' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/6427587499414339493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/6427587499414339493'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/12/merry-christmas-from-ecompliance.html' title='Merry Christmas From eCompliance'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_nG44Iy0UNwo/STxAfQGOZ-I/AAAAAAAAATc/ioeDZSxv90E/s72-c/.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-2483376442554307774</id><published>2008-12-06T23:07:00.001-08:00</published><updated>2008-12-07T15:45:08.618-08:00</updated><title type='text'>Shortening the Feedback Loop - Our Sprint in a Nutshell</title><content type='html'>Check it out. ThirdAngle is doing a presentation for Calgary Agile Methods User Group.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.calgaryagile.com/node/25&quot;&gt;Link to the presentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It&#39;s kind of cool to see my name appear on the CAMUG website.</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/2483376442554307774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=2483376442554307774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/2483376442554307774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/2483376442554307774'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/12/shortening-feedback-loop-our-sprint-in.html' title='Shortening the Feedback Loop - Our Sprint in a Nutshell'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-1637008519209293150</id><published>2008-09-11T21:03:00.000-07:00</published><updated>2008-09-17T13:15:18.124-07:00</updated><title type='text'>2008 Lancer</title><content type='html'>Here are a few pictures of my car.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SMnso_3gn1I/AAAAAAAAAPg/uyIR_ZH4zEE/s1600-h/IMGP1786.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SMnso_3gn1I/AAAAAAAAAPg/uyIR_ZH4zEE/s400/IMGP1786.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5244983430132834130&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/SMnsouEgW_I/AAAAAAAAAPY/M6eSKKu2mvs/s1600-h/IMGP1745.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://2.bp.blogspot.com/_nG44Iy0UNwo/SMnsouEgW_I/AAAAAAAAAPY/M6eSKKu2mvs/s400/IMGP1745.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5244983425355504626&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SMntreCuy8I/AAAAAAAAAPw/Vjsjqv8xIGE/s1600-h/IMGP1752.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_nG44Iy0UNwo/SMntreCuy8I/AAAAAAAAAPw/Vjsjqv8xIGE/s400/IMGP1752.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5244984572104330178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SMntFrpL8XI/AAAAAAAAAPo/ALVrLArCyoc/s1600-h/IMGP1740.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SMntFrpL8XI/AAAAAAAAAPo/ALVrLArCyoc/s400/IMGP1740.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5244983922920255858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SMnsoGqptzI/AAAAAAAAAPQ/i5S1z8KdGqw/s1600-h/IMGP1751.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_nG44Iy0UNwo/SMnsoGqptzI/AAAAAAAAAPQ/i5S1z8KdGqw/s400/IMGP1751.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5244983414778083122&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/1637008519209293150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=1637008519209293150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1637008519209293150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1637008519209293150'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/09/2008-lancer.html' title='2008 Lancer'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_nG44Iy0UNwo/SMnso_3gn1I/AAAAAAAAAPg/uyIR_ZH4zEE/s72-c/IMGP1786.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-5926368731146759062</id><published>2008-04-10T21:27:00.001-07:00</published><updated>2008-05-09T21:42:29.903-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Personal"/><title type='text'>Welcome To The Layer Cake</title><content type='html'>&lt;table border=&quot;1&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; width=&quot;678&quot;&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign=&quot;top&quot; width=&quot;676&quot;&gt;&lt;em&gt;Your born, you take shit.       &lt;br /&gt;You get out in the world, you take more shit.        &lt;br /&gt;You climb a little higher, you take less shit.        &lt;br /&gt;Till one day you&#39;re up in the rarefied atmosphere and you&#39;ve forgotten what shit even looks like.        &lt;br /&gt;Welcome to the layer cake son...&lt;/em&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:41903899-7501-4a50-bb22-9c477ad3c085&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;object height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/GfNamZmzPc0&amp;amp;feature=related&quot;&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot;&gt;&lt;embed src=&quot;http://www.youtube.com/v/GfNamZmzPc0&amp;amp;feature=related&quot; type=&quot;application/x-shockwave-flash&quot; wmode=&quot;transparent&quot; height=&quot;355&quot; width=&quot;425&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;hints id=&quot;hah_hints&quot;&gt;&lt;/hints&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/5926368731146759062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=5926368731146759062' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5926368731146759062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/5926368731146759062'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/04/welcome-to-layer-cake.html' title='Welcome To The Layer Cake'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3492552138571540564.post-1133231664679679171</id><published>2008-04-10T20:10:00.001-07:00</published><updated>2008-04-10T21:23:01.900-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Health and Safety"/><title type='text'>Health and Safety in Alberta</title><content type='html'>&lt;p&gt;For the last little while my focus has been directed towards working on software for the health and safety industry. The following is a short description of concepts that are related to the health and safety industry for the province of Alberta. Some of the terminology and concepts mentioned are crosscutting among the health and safety industry in other provinces and countries... &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;What is a Certifying Partner?&lt;/font&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;A certifying partner is an organization that is responsible for assessing the quality of health and safety program&#39;s of its members. Alberta has 14 different certifying partners that target different industries. If a certifying partner approves your health and safety program your organization will be issued a certificate of recognition(COR).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;Why are they called certifying partners?&lt;/font&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;The reason that we call these organizations certifying partners is that they have a partnership with Alberta Employment and Immigration. Each certificate that is issued by a certifying partner is co-signed by Alberta Employment and Immigration.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;What is a certificate of recognition?&lt;/font&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;A certificate of recognition signifies that your organizations health and safety management system meets certain established standards. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;What are the benefits of obtaining a certificate of recognition?&lt;/font&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;Other than providing a safe place to work for employees your organization may be entitled to a discount on your WCB insurance. Year after year companies are sued for poor health and safety practices. By establishing a health and safety management system your organization can save lives and prevent law suites. The end goal of a health and safety management system is zero incidents.     &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;&lt;font color=&quot;#a80000&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;How do I get a Certificate of Recognition?&lt;/font&gt;           &lt;br /&gt;&lt;/font&gt;        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;A certificate of recognition is rewarded to a company after the completion of a successful audit by an external auditor.     &lt;br /&gt;&lt;strong&gt;     &lt;br /&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;Who is eCompliance?&lt;/font&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;a href=&quot;http://www.ecompliance.ca&quot; target=&quot;_blank&quot;&gt;eCompliance&lt;/a&gt; provides solutions to increase health and safety awareness, decrease incidents and streamline the auditing process. &lt;/p&gt; &lt;strong&gt;&lt;font color=&quot;#a80000&quot;&gt;&lt;font color=&quot;#000000&quot;&gt;&lt;font color=&quot;#7d0000&quot;&gt;Who is ThirdAngle?&lt;/font&gt;         &lt;br /&gt;&lt;/font&gt;      &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;I work for &lt;a href=&quot;http://www.thirdangle.ca&quot; target=&quot;_blank&quot;&gt;ThirdAngle&lt;/a&gt; a division of eCompliance that focuses on creating many of the products that eCompliance customers use on a daily basis. For more information please check out: &lt;a href=&quot;http://www.ecompliance.ca&quot;&gt;http://www.ecompliance.ca&lt;/a&gt;.  </content><link rel='replies' type='application/atom+xml' href='http://blog.streamlinelogic.ca/feeds/1133231664679679171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3492552138571540564&amp;postID=1133231664679679171' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1133231664679679171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3492552138571540564/posts/default/1133231664679679171'/><link rel='alternate' type='text/html' href='http://blog.streamlinelogic.ca/2008/04/health-and-safety-in-alberta.html' title='Health and Safety in Alberta'/><author><name>Adam</name><uri>http://www.blogger.com/profile/15849931967719286557</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_nG44Iy0UNwo/SMNjXBaRNoI/AAAAAAAAAOw/3bSaQZXZWic/S220/av-62740.gif'/></author><thr:total>1</thr:total></entry></feed>