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

<channel>
	<title>Caffeine Industries</title>
	<atom:link href="http://caffeineindustries.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://caffeineindustries.com</link>
	<description></description>
	<lastBuildDate>Sat, 12 May 2012 06:26:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Still going strong</title>
		<link>http://caffeineindustries.com/2012/05/still-going-strong/</link>
		<comments>http://caffeineindustries.com/2012/05/still-going-strong/#comments</comments>
		<pubDate>Sat, 12 May 2012 06:26:03 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=470</guid>
		<description><![CDATA[What a wild month and a half I&#8217;ve had! Cam is 4 and Mia is almost 2. I am learning Rails and Node.js in an effort to become a full-stack web developer. More to come&#8230;]]></description>
			<content:encoded><![CDATA[<p>What a wild month and a half I&#8217;ve had! Cam is 4 and Mia is almost 2. I am learning Rails and Node.js in an effort to become a full-stack web developer. More to come&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/05/still-going-strong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coffeescript, Jasmine and Katas</title>
		<link>http://caffeineindustries.com/2012/03/coffeescript-jasmine-and-katas/</link>
		<comments>http://caffeineindustries.com/2012/03/coffeescript-jasmine-and-katas/#comments</comments>
		<pubDate>Sat, 10 Mar 2012 21:07:54 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=457</guid>
		<description><![CDATA[Hey-O! CoffeeScript is nice. It provides syntactic sugar and adds tremendous functionality to the web developers tool-chest. Those who appreciate terse, yet readable and well formatted code; CoffeeScript will seem like a manna from heaven. I find that I am already looking at my JavaScript and refactoring it in my head to CoffeeScript. On long [...]]]></description>
			<content:encoded><![CDATA[<p>Hey-O!</p>
<p><a href="http://coffeescript.org/">CoffeeScript</a> is nice. It provides syntactic sugar and adds tremendous functionality to the web developers tool-chest. Those who appreciate terse, yet readable and well formatted code; CoffeeScript will seem like a manna from heaven. I find that I am already looking at my JavaScript and refactoring it in my head to CoffeeScript. </p>
<p>On long road trips I generally have a few hours to kill while the rest of the family is asleep. I generally take this time to fire up some podcasts and/or tutorials and to learn as I drive. I actually look forward to this time as I can almost totally focus on the content.</p>
<p>This trip I decided to load my Galaxy Nexus with a metric ton of CoffeeScript screen casts (just audio) and podcasts. My intention was to get the basics out of the way and I accomplished that objective.</p>
<p>Since I&#8217;ve returned home, I have decided to stick with CoffeeScript and add a few more. I have decided that my code needs to tested more throughly. CoffeeScript has made testing a complete breeze.</p>
<p>I&#8217;ve also become a believer in dedicated, <a href="http://www.missiontolearn.com/2010/04/deliberate-practice/">deliberate practice</a>. One can constantly reuse the same patterns and never really push themselves to get better. However, those who deliberately practice techniques and patterns they are not comfortable with generally begin to excel faster than those who just put in the hours haphazardly. </p>
<p>I used <a href="http://osherove.com/tdd-kata-1/">this code kata</a> with CoffeeScript and Jasmine. </p>
<p>Click the post image to see the passing tests!</p>
<p>Here is my solution:</p>
<p>The Spec&#8217;s in CoffeeScript</p>
<div id="gist-2014544" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nx">describe</span> <span class="s">&quot;StringCalc&quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC2'>&nbsp;&nbsp;<span class="nx">describe</span> <span class="s">&quot;constructor with null&quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">beforeEach</span> <span class="o">-&gt;</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@mystrCalc = </span><span class="k">new</span> <span class="nx">StrCalc</span><span class="p">()</span></div><div class='line' id='LC5'><br/></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;replaces null with 0&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">firstNum</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">0</span></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>&nbsp;&nbsp;<span class="nx">describe</span> <span class="s">&quot;constructor with zero &quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">beforeEach</span> <span class="o">-&gt;</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@mystrCalc = </span><span class="k">new</span> <span class="nx">StrCalc</span><span class="p">(</span><span class="s">&#39;0&#39;</span><span class="p">)</span></div><div class='line' id='LC12'><br/></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;replaces &quot;0&quot; with 0&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">firstNum</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">0</span></div><div class='line' id='LC15'><br/></div><div class='line' id='LC16'>&nbsp;&nbsp;<span class="nx">describe</span> <span class="s">&quot;constructor with multiple numbers&quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC17'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">beforeEach</span> <span class="o">-&gt;</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@mystrCalc = </span><span class="k">new</span> <span class="nx">StrCalc</span><span class="p">(</span><span class="s">&#39;1, 2, 3&#39;</span><span class="p">)</span></div><div class='line' id='LC19'><br/></div><div class='line' id='LC20'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;matches first arg to firstNum&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC21'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">firstNum</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">1</span></div><div class='line' id='LC22'><br/></div><div class='line' id='LC23'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;matches second arg to secondNum&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC24'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">secondNum</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">2</span></div><div class='line' id='LC25'><br/></div><div class='line' id='LC26'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;matches third arg to thirdNum&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC27'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">thirdNum</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">3</span></div><div class='line' id='LC28'><br/></div><div class='line' id='LC29'>&nbsp;&nbsp;<span class="nx">describe</span> <span class="s">&quot;add method&quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC30'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">beforeEach</span> <span class="o">-&gt;</span></div><div class='line' id='LC31'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@mystrCalc = </span><span class="k">new</span> <span class="nx">StrCalc</span><span class="p">(</span><span class="s">&#39;2, 4, 6&#39;</span><span class="p">)</span></div><div class='line' id='LC32'><br/></div><div class='line' id='LC33'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;adds three arguments of StrCalc&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC34'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">total</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">12</span></div><div class='line' id='LC35'><br/></div><div class='line' id='LC36'>&nbsp;&nbsp;<span class="nx">describe</span> <span class="s">&quot;add method with bigger numbers&quot;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC37'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">beforeEach</span> <span class="o">-&gt;</span></div><div class='line' id='LC38'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@mystrCalc = </span><span class="k">new</span> <span class="nx">StrCalc</span><span class="p">(</span><span class="s">&#39;20\n40, 60&#39;</span><span class="p">)</span></div><div class='line' id='LC39'><br/></div><div class='line' id='LC40'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">it</span> <span class="s">&#39;adds three arguments for big numbers and wacky delimiters&#39;</span><span class="p">,</span> <span class="o">-&gt;</span></div><div class='line' id='LC41'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">(</span><span class="nx">expect</span> <span class="nx">@mystrCalc</span><span class="p">.</span><span class="nx">total</span><span class="p">).</span><span class="nx">toEqual</span> <span class="mi">120</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/2014544/631189eb9ae7c8a093bdaeac6c9f14d595a70582/gistfile1.coffee" style="float:right;">view raw</a>
            <a href="https://gist.github.com/2014544#file_gistfile1.coffee" style="float:right;margin-right:10px;color:#666">gistfile1.coffee</a>
            <a href="https://gist.github.com/2014544">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>The implementation in CoffeeScript:</p>
<div id="gist-2014548" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="nb">window</span><span class="p">.</span><span class="nv">StrCalc = </span><span class="k">class</span> <span class="nx">StrCalc</span></div><div class='line' id='LC2'><br/></div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="nv">constructor: </span><span class="nf">(myStr = 0) -&gt;</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="nx">myStr</span> <span class="o">is</span> <span class="s">&#39;0&#39;</span> <span class="o">or</span> <span class="nx">myStr</span> <span class="o">is</span> <span class="mi">0</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@firstNum = </span><span class="mi">0</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">else</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">@parseMyNum</span> <span class="nx">myStr</span></div><div class='line' id='LC8'><br/></div><div class='line' id='LC9'>&nbsp;&nbsp;<span class="nv">parseMyNum: </span><span class="nf">(myStr) -&gt;</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">pattern = </span><span class="sr">/(\d)+.*?(\d*)/gm</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">result = </span><span class="nx">myStr</span><span class="p">.</span><span class="nx">match</span> <span class="nx">pattern</span></div><div class='line' id='LC12'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@firstNum = </span><span class="nb">parseInt</span> <span class="nx">result</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span></div><div class='line' id='LC13'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@secondNum = </span><span class="nb">parseInt</span> <span class="nx">result</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span></div><div class='line' id='LC14'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@thirdNum = </span><span class="nb">parseInt</span> <span class="nx">result</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span></div><div class='line' id='LC15'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">@add</span><span class="p">()</span></div><div class='line' id='LC16'><br/></div><div class='line' id='LC17'>&nbsp;&nbsp;<span class="nv">add: </span><span class="o">-&gt;</span></div><div class='line' id='LC18'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="vi">@total = </span><span class="nx">@firstNum</span> <span class="o">+</span> <span class="nx">@secondNum</span> <span class="o">+</span> <span class="nx">@thirdNum</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/2014548/06e21153d27cabd1170de931628f8513944f2ea7/gistfile1.coffee" style="float:right;">view raw</a>
            <a href="https://gist.github.com/2014548#file_gistfile1.coffee" style="float:right;margin-right:10px;color:#666">gistfile1.coffee</a>
            <a href="https://gist.github.com/2014548">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>Paste the CoffeeScript <a href="http://js2coffee.org/">here</a> to see what it looks like in JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/03/coffeescript-jasmine-and-katas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thick Client Architecture</title>
		<link>http://caffeineindustries.com/2012/03/thick-client-architecture/</link>
		<comments>http://caffeineindustries.com/2012/03/thick-client-architecture/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 03:53:15 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=454</guid>
		<description><![CDATA[The funny thing about not knowing something is&#8230; not knowing. Until a few weeks ago I had no idea that a massive transformation was taking place under my own feet. I knew that servers served and browsers display. I didn&#8217;t realize that so many developers using ASP.NET MVC and Ruby on Rails relied on the [...]]]></description>
			<content:encoded><![CDATA[<p>The funny thing about not knowing something is&#8230; not knowing. Until a few weeks ago I had no idea that a massive transformation was taking place under my own feet. I knew that servers served and browsers display. I didn&#8217;t realize that so many developers using ASP.NET MVC and Ruby on Rails relied on the server for everything except the container. Ignorance is bliss eh?</p>
<p>See, to me it makes perfect sense to do as much as one possibly can on the client. Knowing that the least amount of work one can do to get the best results is the perfect amount of work. I have always set out to get the maximum &#8220;bang-for-my-buck&#8221; as it were.</p>
<p>We are now seeing lots of posts titled: <a href="http://fhwang.net/2012/03/05/Should-your-web-application-be-rich-client-from-day-one">Should your web application be rich-client from day one?</a> and <a href="http://eliperelman.com/blog/2012/03/03/decoupling-front-ends/">decoupling front ends</a>. Great reads to be sure, but to me this is common wisdom. However, I haven&#8217;t been a developer for as long as many of these developers so I don&#8217;t have the experience or historical perspective. </p>
<p>I do feel that this is a prime time for indie-developers, like me, to make a dent in the development world. If front end developers have invested a little time to become proficient with JavaScript they will have very little trouble transferring to the newer thick-client architecture paradigm. In other words, a front end developer can now realistically get a big project off the ground without a massive backend effort in parallel. </p>
<p>Don&#8217;t get me wrong, a masterfully crafted RESTful API is indeed a thing of beauty and generally bomb-proof. However, geting a &#8220;working&#8221; web app out the door without knowing the nuts and bolts of a massive server-side framework is within closer reach than ever before. Exciting!!!!</p>
<p>I would be lying if I told you this wasn&#8217;t exciting to me on a personal and professional level. I have been really focused on mobile and web for the last year and I hope some exciting opportunities extend from my efforts. </p>
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/03/thick-client-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Knockoutjs&#8217;s foreach on nested jQuery Mobile lists</title>
		<link>http://caffeineindustries.com/2012/02/knockout-foreach-jquerymobile/</link>
		<comments>http://caffeineindustries.com/2012/02/knockout-foreach-jquerymobile/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 02:34:45 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[knockout]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=439</guid>
		<description><![CDATA[I just want to drop a quick note to anyone who may search google for a problem I ran into.A nested jQuery mobile list can be populated with one knockoutjs observable array. The only caveat I&#8217;ve seen thus far is that you need to use the foreach data-binding twice. Once on the outer list and [...]]]></description>
			<content:encoded><![CDATA[<p>I just want to drop a quick note to anyone who may search google for a problem I ran into.A nested jQuery mobile list can be populated with one knockoutjs observable array.  The only caveat I&#8217;ve seen thus far is that you need to use the foreach data-binding twice. Once on the outer list and again for the inner &#8220;list&#8221; or page. </p>
<p>Example:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ul</span> <span style="color: #000066;">data-role</span>=<span style="color: #ff0000;">&quot;listview&quot;</span>  <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;foreach: watched&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li</span> <span style="color: #000066;">data-role</span>=<span style="color: #ff0000;">&quot;list-divider&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span> Repo: <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h3</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: name&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/h3<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ul</span> <span style="color: #000066;">data-role</span>=<span style="color: #ff0000;">&quot;listview&quot;</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;foreach: watched&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;li<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Description:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: description&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">&quot;ui-li-count&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Forks: <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: forks&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> - Issues: <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span></span>
<span style="color: #009900;">                        <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: open_issues&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                          - Watchers: <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;span</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: watchers&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/span<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Language: <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: language&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Owner:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: owner&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span> <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>URL:<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h4<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;p</span> <span style="color: #000066;">data-bind</span>=<span style="color: #ff0000;">&quot;text: url&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/p<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/02/knockout-foreach-jquerymobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter Bootstrap with Html5 Boilerplate&#8217;s Build</title>
		<link>http://caffeineindustries.com/2012/02/twitter-bootstrap-with-html5-boilerplates-build/</link>
		<comments>http://caffeineindustries.com/2012/02/twitter-bootstrap-with-html5-boilerplates-build/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 00:12:35 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Less]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Twitter Bootstrap]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=431</guid>
		<description><![CDATA[Twitter bootstrap is a great piece of kit. Html5 boilerplate (h5bp) is also a great piece of kit. Those of you who have used h5bp know it also comes bundled (or not?) with a great ant build script. This build script automagically builds, minifies, compresses, concatenates, lints and hints the files you specify. A ton [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.github.com/bootstrap/">Twitter bootstrap</a> is a great piece of kit. <a href="http://html5boilerplate.com/">Html5 boilerplate (h5bp)</a> is also a great piece of kit. Those of you who have used h5bp know it also comes bundled (or not?) with a great <a href="https://github.com/h5bp/ant-build-script">ant build script</a>.  This build script automagically builds, minifies, compresses, concatenates, lints and hints the files you specify. A ton of crap, really. </p>
<p>You will have to read the <a href="http://html5boilerplate.com/docs/Build-script/">documentation</a> as it makes some assumptions in regards to your project scaffolding and what-have-you. Seriously, read the documentation. You don&#8217;t have to trust me when I say its worth it, but it is. </p>
<p>So now that I found this script, I want to use it on every project. Once everything is set-up it is just so easy to run. I have forced myself to use it on trivial tests and what not. My <a href="http://lab.caffeineindustries.com">lab page</a> is a total work-in-progress and made with Twitter bootstrap. I thought I would show you how I integrated h5bp ant-build-script with it. </p>
<p>A screen shot of my folder structure inside webstorm:<br />
<a href="http://caffeineindustries.com/wp-content/uploads/2012/02/Screen-shot-2012-02-20-at-4.31.30-PM.png"><img src="http://caffeineindustries.com/wp-content/uploads/2012/02/Screen-shot-2012-02-20-at-4.31.30-PM-225x300.png" alt="" title="Screen shot 2012-02-20 at 4.31.30 PM" width="225" height="300" class="aligncenter size-medium wp-image-432" /></a></p>
<p>As you can see, I mimicked the file structure that h5bp recommends in the documentation (RTFM, right?)</p>
<p>I then modified the project. properties file to include the changes you see here:</p>
<pre lang=shell>
# project.properties file defines overrides for default.properties

# Explanation: This file should be created by each user as and when he or she needs to override particular values.
# Consequently, it should not be placed under version control.

# Stylesheets
#
# Note: Stylesheets will be concatenated in the order they are listed in the file.stylesheets property (i.e. the last
# file listed will be at the end of the concatenated file), so it probably makes sense to have the main style.css file
# as the first entry
# Example:
# file.stylesheets  = style.css, lightbox.css, plugin.css
#
file.stylesheets  = bootstrap.css, style.css

# Web Pages
#
# These are the pages (files) that will be served to users (.html, .php, .asp, etc). Files in this property will
# be minified / optimised and have any stylesheet or javascript references updated to the minified examples
#
# The paths need to be relative
#
# Files can be added in a comma separated form
file.pages        = toolbox.html, vacapp.html 

# Excluded files and dirs
#
# Add any files or directories you add to the project and do not want to be copied to the publish directory as a
# comma separated list
# These files are ignored in addition to the default ones specified in default.properties.
# Example: file.exclude = badfolder/**
file.exclude      = js/tests/**, style/less/**, 

# Bypassed JavaScript files and dirs
#
# Add any files or folders within the mylibs directory that you want to be copied to the publish directory as a
# comma separated list
# These files will not be concatenated or minimized and will simply be copied over as is.
# Note: you cannot declare an empty file.bypass property, it would exclude the entire mylibs folder
# Example:
# file.js.bypass = widgets.js, gadgets.js, gidgets.js
file.js.bypass = cafflab.js

# Directory Structure
#
# Override any directory paths specific to this project
#
# dir.publish
# dir.js
#dir.js.libs = js/bootstrap
#dir.js.mylibs = js/bootstrap
dir.css = style/css
# dir.img
</pre>
<p>Note: I&#8217;ve only included the actual changes to my file. The actual project.properties is a bit denser. </p>
<p>I haven&#8217;t gone all-the-way with the power of the build script thus far. As you can see, I am not fully concatenating my javascript and css files. However, they are fully linted, hinted and compressed which is better than nothing, I suppose. I will keep working and making refinements to this process, but I&#8217;ve seen the light with an intermediate build step in deployment. It is so full of win, that I can&#8217;t imagine doing it another way. </p>
<p>If you simply use build like I have, you will save a tremendous amount of time optimizing your pages for production. Once you see this in action&#8230; You will have a hard time turning back as well, I reckon. </p>
<p>Todo: Work out how to force the build script into nested directories for the manifest. Maybe even get a wild hair and attempt to write a pre build-build that analyzes the project structure. </p>
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/02/twitter-bootstrap-with-html5-boilerplates-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Github Mobile &#8211; A jQuery Mobile Project</title>
		<link>http://caffeineindustries.com/2012/02/github-a-jquery-mobile-project/</link>
		<comments>http://caffeineindustries.com/2012/02/github-a-jquery-mobile-project/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 07:45:34 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[knockout]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=424</guid>
		<description><![CDATA[I was having so much fun with the Github Api and my new found love of Git &#038;&#038; Github that I to make something mobile! It is definitely a work in progress. Don&#8217;t put in your API token. As of now I don&#8217;t have any features enabled that require it. So without further ado, have [...]]]></description>
			<content:encoded><![CDATA[<link type="text/css" rel="stylesheet" href="http://caffeineindustries.com/wp-content/plugins/advanced-iframe/css/ai.css" />
<p>I was having so much fun with the Github Api and my new found love of Git &#038;&#038; Github that I to make something mobile!</p>
<p>It is definitely a work in progress. Don&#8217;t put in your API token. As of now I don&#8217;t have any features enabled that require it. So without further ado, have a play here:</p>
<iframe id='advanced_iframe' src='http://lab.caffeineindustries.com/githubMobile/index.html' width='450' height='800' scrolling='yes'  marginwidth='2'  marginheight='2'  frameborder='2'  allowtransparency='true' ></iframe>
 
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/02/github-a-jquery-mobile-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lab &#8211; Twitter Bootstrap V2</title>
		<link>http://caffeineindustries.com/2012/02/lab-twitter-bootstrap-v2/</link>
		<comments>http://caffeineindustries.com/2012/02/lab-twitter-bootstrap-v2/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 23:00:09 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Less]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=416</guid>
		<description><![CDATA[The awesome duo, @mdo &#038;&#038; @fat, of Twitter bootstrap fame have released Twitter bootstrap 2.0. In short, Twitter bootstrap is a great way to get HTML5-CSS3-JavaScript up and running with a lot of the hard work already done. The project comes with a heap of customization options and a full complement of Less files which [...]]]></description>
			<content:encoded><![CDATA[<p>The awesome duo, @mdo &#038;&#038; @fat, of <a href="http://twitter.github.com/bootstrap/">Twitter bootstrap</a> fame have released <a href="http://twitter.github.com/bootstrap/">Twitter bootstrap</a> 2.0. In short, <a href="http://twitter.github.com/bootstrap/">Twitter bootstrap</a> is a great way to get HTML5-CSS3-JavaScript up and running with a lot of the hard work already done. </p>
<p>The project comes with a heap of customization options and a full complement of Less files which compile down to CSS. If you haven&#8217;t checked out <a href="http://lesscss.org/">Less</a>, you really ought to as it makes CSS dev much saner. </p>
<p>I have set-up a lab page for experiments, tests, projects-that-are-not-quite-done and my foray into game development.  The Caffeine lab is built with <a href="http://twitter.github.com/bootstrap/">Twitter bootstrap</a> and is definitely a work in progress. </p>
<p>Check it out <a href="http://lab.caffeineindustries.com"><br />
<h2>HERE</h3>
<p></a></p>
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/02/lab-twitter-bootstrap-v2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with Github Api v3</title>
		<link>http://caffeineindustries.com/2012/02/working-with-github-api-v3/</link>
		<comments>http://caffeineindustries.com/2012/02/working-with-github-api-v3/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 20:56:44 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=397</guid>
		<description><![CDATA[I was pleasantly surprised when I needed to use the Github API for a project. The API is dead simple to use, retrive and iterate data for almost any repo based stat you can imagine. This is just a quick and dirty GET example that makes a list of all the repos I follow on [...]]]></description>
			<content:encoded><![CDATA[<p>I was pleasantly surprised when I needed to use the <a href="http://develop.github.com/p/general.html">Github API</a> for a project. The API is dead simple to use, retrive and iterate data for almost any repo based stat you can imagine. This is just a quick and dirty GET example that makes a list of all the repos I follow on Github. </p>
<p>aside &#8211; The result below is a real-time demo using the <a href="http://www.jqueryin.com/projects/jinx-javascript-includer-wordpress-plugin/">jinX</a> wp plugin to inject javascript into posts</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span> document <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">ready</span><span style="color: #009900;">&#40;</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #003366; font-weight: bold;">var</span> html <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&quot;</span><span style="color: #339933;">;</span>
  $.<span style="color: #660066;">ajax</span><span style="color: #009900;">&#40;</span> <span style="color: #009900;">&#123;</span>
    url <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;https://api.github.com/users/MichaelMartinez/watched&quot;</span><span style="color: #339933;">,</span>
    dataType <span style="color: #339933;">:</span> <span style="color: #3366CC;">&quot;jsonp&quot;</span><span style="color: #339933;">,</span>
    success <span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> returndata <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      $.<span style="color: #660066;">each</span><span style="color: #009900;">&#40;</span> returndata.<span style="color: #660066;">data</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span> i<span style="color: #339933;">,</span> <span style="color: #000066; font-weight: bold;">item</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        html <span style="color: #339933;">+=</span> <span style="color: #3366CC;">'&lt;li&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;h3&gt;&lt;a href=&quot;'</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">html_url</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&quot;&gt;'</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #000066;">name</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/a&gt;&lt;/h3&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;ul&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;li&gt;'</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'Description: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">description</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;li&gt;'</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'Language: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">language</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;li&gt;'</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'Updated: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">updated_at</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;li&gt;'</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'Owner: '</span> <span style="color: #339933;">+</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">owner</span>.<span style="color: #660066;">login</span> <span style="color: #339933;">+</span> <span style="color: #3366CC;">'&lt;/li&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;/ul&gt;'</span> <span style="color: #339933;">+</span>
          <span style="color: #3366CC;">'&lt;/li&gt;'</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      $<span style="color: #009900;">&#40;</span> <span style="color: #3366CC;">'#result'</span> <span style="color: #009900;">&#41;</span>.<span style="color: #660066;">append</span><span style="color: #009900;">&#40;</span> html <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h2>Result:</h2>
<ul id="result">
</ul>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">$( document ).ready( function () {

  var html = "";
  $.ajax( {
    url : "https://api.github.com/users/MichaelMartinez/watched",
    dataType : "jsonp",
    success : function ( returndata ) {
      $.each( returndata.data, function ( i, item ) {
        html += '<li>' +
          '<h6><a href="' + this.html_url + '">' + this.name + '</a></h6>' +
          '<ul>' +
          '<li>' + 'Description: ' + this.description + '</li>' +
          '<li>' + 'Language: ' + this.language + '</li>' +
          '<li>' + 'Updated: ' + this.updated_at + '</li>' +
          '<li>' + 'Owner: ' + this.owner.login + '</li>' +
          '</ul>' +
          '</li>';
      } );
      $( '#result' ).append( html );
    }
  } );
} );</script>]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/02/working-with-github-api-v3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My MOO cards!</title>
		<link>http://caffeineindustries.com/2012/01/my-moo-cards/</link>
		<comments>http://caffeineindustries.com/2012/01/my-moo-cards/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 06:20:28 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=392</guid>
		<description><![CDATA[Just Ordered&#8230;.]]></description>
			<content:encoded><![CDATA[<p>Just Ordered&#8230;.</p>

<a href='http://caffeineindustries.com/2012/01/my-moo-cards/mooback-copy/' title='mooBack copy'><img width="150" height="150" src="http://caffeineindustries.com/wp-content/uploads/2012/01/mooBack-copy-150x150.jpg" class="attachment-thumbnail" alt="mooBack copy" title="mooBack copy" /></a>
<a href='http://caffeineindustries.com/2012/01/my-moo-cards/moo2-1/' title='moo2-1'><img width="150" height="150" src="http://caffeineindustries.com/wp-content/uploads/2012/01/moo2-1-150x150.jpg" class="attachment-thumbnail" alt="moo2-1" title="moo2-1" /></a>

]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/01/my-moo-cards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vacation Hour Tracker App</title>
		<link>http://caffeineindustries.com/2012/01/vacation-hour-tracker-app/</link>
		<comments>http://caffeineindustries.com/2012/01/vacation-hour-tracker-app/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 04:13:36 +0000</pubDate>
		<dc:creator>Michael</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[jQuery Mobile]]></category>
		<category><![CDATA[knockout]]></category>
		<category><![CDATA[localStorage]]></category>

		<guid isPermaLink="false">http://caffeineindustries.com/?p=378</guid>
		<description><![CDATA[Most of us deal with some aspect of our job/career that isn&#8217;t directly under our control. For those who do not know, I am a firefighter for a medium to large metropolitan fire department that is located 1.5 hours south of Phoenix, Az. There are many of aspects in my job that I have very [...]]]></description>
			<content:encoded><![CDATA[<link type="text/css" rel="stylesheet" href="http://caffeineindustries.com/wp-content/plugins/advanced-iframe/css/ai.css" />
<p>Most of us deal with some aspect of our job/career that isn&#8217;t directly under our control. For those who do not know, I am a firefighter for a medium to large metropolitan fire department that is located 1.5 hours south of Phoenix, Az. There are many of aspects in my job that I have very little control over.</p>
<p>Recently, I was charged for three days of vacation time that I did not take. I have to admit that I caught the error by mistake as I generally glance at the number of hours without much thought. When I realized the error, I decided to go back and inspect the last six months and I found two more errors&#8230; Which prompted another 6 months of inspection and one more error.</p>
<p>I really don&#8217;t want to painstakingly evaluate and cross reference my pay stub to our staffing software for correctness every two weeks. That isn&#8217;t exactly my idea of a good time. So I wrote this little application that should, in theory, be my ever watchful vacation hour sentry. As a great by product of writing this app, I investigated several javascript MV* / MVVM frameworks and various libraries.</p>
<p>The libraries used for this app are:</p>
<ol>
<li><a href="https://github.com/brianleroux/Cordova">Phonegap / Cordova &#8211; Phone version</a></li>
<li><a href="https://github.com/SteveSanderson/knockout">Knockoutjs &#8211; MVVM Framework / Data Binding</a></li>
<li><a href="http://www.jquerymobile.com">jQuery Mobile &#8211; 1.0</a></li>
<li><a href="https://github.com/andris9/jStorage">jStorage &#8211; localStorage</a></li>
<li><a href="https://github.com/timrwood/moment">Momentjs &#8211; JavaScript Date Library</a></li>
<li><a href="http://code.google.com/p/mobiscroll/">Mobiscroll jQuery Mobile plugin</a></li>
<li>Zend Framework GData Library &#8211; PHP</li>
</ol>
<p>The file tree and code are completely UGLY and it is not my prettiest work to be sure. So when you go snooping around the src remember I&#8217;ve been HACKING on this like crazy. I have three or four implementations of this app contained within the asset/www file so be sure to snoop around and look at the backbone version and vanilla jQuery mobile version.</p>
<p>I chose to go with Knockout for a variety of reasons for the main app. The big reason was that it works with my brain and I was able to accomplish a ton with very little boilerplate. I really eff&#8217;ing hate boilerplate. I watched several Backbone tutorials and I read countless lines of Backbone code and I was (am?) still pretty much lost. It made me work way too hard to get basic functionality. I had several &#8220;aha&#8221; moments with Backbone&#8230; only to have them stuffed in my pie-hole minutes later. Not a good experience but I plan on re-visiting Backbone in the future.</p>
<p>I&#8217;ll have several follow on posts regarding this app in the coming days. I will also spend some time styling this app as its is default to a fault right now using non-standard icons and Adobe Fireworks. I can post that as a tutorial if there is interest.  </p>
<p>Here is the fully functional app (tested with Safari 5+, Firefox 9, Chrome 16 on Mac):</p>
<iframe id='advanced_iframe' src='http://lab.caffeineindustries.com/VacationBalance2/assets/www/indexTestKO.html' width='450' height='800' scrolling='yes'  marginwidth='2'  marginheight='2'  frameborder='2'  allowtransparency='true' ></iframe>
 
]]></content:encoded>
			<wfw:commentRss>http://caffeineindustries.com/2012/01/vacation-hour-tracker-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

