<?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>Lazycoder &#187; General</title>
	<atom:link href="http://www.lazycoder.com/weblog/category/general/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lazycoder.com/weblog</link>
	<description></description>
	<lastBuildDate>Fri, 03 Feb 2012 23:26:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>A third option for using jQuery templates</title>
		<link>http://www.lazycoder.com/weblog/2010/10/06/a-third-option-for-using-jquery-templates/</link>
		<comments>http://www.lazycoder.com/weblog/2010/10/06/a-third-option-for-using-jquery-templates/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 20:17:21 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1511</guid>
		<description><![CDATA[Dave Ward has a great post about defining jQuery templates. There's a third method that he doesn't mention in his post. The "embedd-and-grab/clone" method. I've used this method before for simple element cloning of templates. PLAIN TEXT HTML: &#60;div id="templates"&#62; &#160; &#160; &#60;div id="hello"&#62; &#160; &#160; &#160; &#160; &#60;p&#62;Hello, ${name}.&#60;/p&#62; &#160; &#160; &#60;/div&#62; &#60;/div&#62; We [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://encosia.com/2010/10/05/using-external-templates-with-jquery-templates/">Dave Ward has a great post about defining jQuery templates</a>. There's a third method that he doesn't mention in his post. The "embedd-and-grab/clone" method. <a href="http://www.lazycoder.com/weblog/2009/12/10/benchmarking-a-simple-dom-based-cloning-template/">I've used this method before for simple element cloning of templates. </a></p>
<div class="igBar"><span id="lhtml-3"><a href="#" onclick="javascript:showCodeTxt('html-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName"><acronym title='HyperText Markup Language'><span class='caps'>HTML</span></acronym>:</span>
<div id="html-3">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"templates"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"hello"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>Hello, ${name}.<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>We can create a div, or really any element you want, to hold our templates. What does this gain us? Well if we are using a design tool, we can see what the template will look like before we have to render it. That may make it easier for a designer on your project. We don't have to make an <acronym title='Asynchronous Javascript and XML'><span class='caps'>AJAX</span></acronym> call out to retrieve the external template, although Dave talks about how this really isn't an issue if you have caching set up correctly on your server. And frankly, for the amount of bytes that are in a typical template I can't imagine any successful <acronym title='Asynchronous Javascript and XML'><span class='caps'>AJAX</span></acronym> request taking very long.</p>
<p>To use them, you simply grab the templates div and detach it from the <acronym title='Document Object Model'><span class='caps'>DOM</span></acronym>. If you assign the detached elements to a var, you can just use jQuery selectors to find the one you want to use. Because, remember most of the jQuery methods return the jQuery object itself.</p>
<div class="igBar"><span id="ljavascript-4"><a href="#" onclick="javascript:showCodeTxt('javascript-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JAVASCRIPT:</span>
<div id="javascript-4">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> templates = ​$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"#templates"</span><span style="color: #66cc66;">&#41;</span>​​​​​​​​​.<span style="color: #006600;">detach</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$.<span style="color: #006600;">tmpl</span><span style="color: #66cc66;">&#40;</span>templates.<span style="color: #006600;">find</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">"#hello"</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">text</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>, person<span style="color: #66cc66;">&#41;</span>;​​​ </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Why do you want to use the detach method rather than the remove method? The detach method removes the elements from the <acronym title='Document Object Model'><span class='caps'>DOM</span></acronym> but keeps any jQuery data associated with them intact. Meaning you can use the $.data() method to add data to your templates and access the data before you compile your templates.<br />
<em>Dave Ward points out that I need to use "tempates.find()" rather than the default selector method on the jQuery object. Noted and updated</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/10/06/a-third-option-for-using-jquery-templates/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Twitter Updates for 2010-08-22</title>
		<link>http://www.lazycoder.com/weblog/2010/08/22/twitter-updates-for-2010-08-22/</link>
		<comments>http://www.lazycoder.com/weblog/2010/08/22/twitter-updates-for-2010-08-22/#comments</comments>
		<pubDate>Sun, 22 Aug 2010 23:35:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2010/08/22/twitter-updates-for-2010-08-22/</guid>
		<description><![CDATA[[posted] Twitter Updates for 2010-08-21 http://bit.ly/bOpDka # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>[posted] Twitter Updates for 2010-08-21 <a href="http://bit.ly/bOpDka" rel="nofollow">http://bit.ly/bOpDka</a> <a href="http://twitter.com/lazycoder/statuses/21786531737" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/08/22/twitter-updates-for-2010-08-22/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Updates for 2010-08-21</title>
		<link>http://www.lazycoder.com/weblog/2010/08/21/twitter-updates-for-2010-08-21/</link>
		<comments>http://www.lazycoder.com/weblog/2010/08/21/twitter-updates-for-2010-08-21/#comments</comments>
		<pubDate>Sat, 21 Aug 2010 23:35:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2010/08/21/twitter-updates-for-2010-08-21/</guid>
		<description><![CDATA[[posted] Twitter Updates for 2010-08-20 http://bit.ly/du9klD # #herdingCode Herding Code 91: Listener-Powered Lightning Round: This week on Herding Code, K Scott, Jon, Kevin, an... http://bit.ly/d1WaI4 # Oslo: because SQL DDL is too hard I guess. # Powered by Twitter Tools]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>[posted] Twitter Updates for 2010-08-20 <a href="http://bit.ly/du9klD" rel="nofollow">http://bit.ly/du9klD</a> <a href="http://twitter.com/lazycoder/statuses/21704965493" class="aktt_tweet_time">#</a></li>
<li>#<a href="http://search.twitter.com/search?q=%23herdingCode" class="aktt_hashtag">herdingCode</a> Herding Code 91: Listener-Powered Lightning Round: This week on Herding Code, K Scott, Jon, Kevin, an... <a href="http://bit.ly/d1WaI4" rel="nofollow">http://bit.ly/d1WaI4</a> <a href="http://twitter.com/lazycoder/statuses/21731113534" class="aktt_tweet_time">#</a></li>
<li>Oslo: because <acronym title='Structured Query Language'><span class='caps'>SQL</span></acronym> DDL is too hard I guess. <a href="http://twitter.com/lazycoder/statuses/21759928802" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/08/21/twitter-updates-for-2010-08-21/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Twitter Updates for 2010-08-20</title>
		<link>http://www.lazycoder.com/weblog/2010/08/20/twitter-updates-for-2010-08-20/</link>
		<comments>http://www.lazycoder.com/weblog/2010/08/20/twitter-updates-for-2010-08-20/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 23:35:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2010/08/20/twitter-updates-for-2010-08-20/</guid>
		<description><![CDATA[Microsoft to Co-Chair New W3C Web Performance Working Group http://bit.ly/dgOfXX # Seriously, do people actually conduct financial transactions on E*Trade? The website sucks and doesn&#039;t work 1/2 the time. # In unrelated news, I hate everything. # .@SaraJChipps JavaScript - The Good Parts by Douglas Crockford #BasicsTrumpsFrameworks # .@bmsullivan Right, but if you don&#039;t understand [...]]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>Microsoft to Co-Chair New <acronym title='World Wide Web Consortium'><span class='caps'>W3C</span></acronym> Web Performance Working Group <a href="http://bit.ly/dgOfXX" rel="nofollow">http://bit.ly/dgOfXX</a> <a href="http://twitter.com/lazycoder/statuses/21591711852" class="aktt_tweet_time">#</a></li>
<li>Seriously, do people actually conduct financial transactions on E*Trade? The website sucks and doesn&#039;t work 1/2 the time. <a href="http://twitter.com/lazycoder/statuses/21593914490" class="aktt_tweet_time">#</a></li>
<li>In unrelated news, I hate everything. <a href="http://twitter.com/lazycoder/statuses/21593976823" class="aktt_tweet_time">#</a></li>
<li>.@SaraJChipps JavaScript - The Good Parts by Douglas Crockford #<a href="http://search.twitter.com/search?q=%23BasicsTrumpsFrameworks" class="aktt_hashtag">BasicsTrumpsFrameworks</a> <a href="http://twitter.com/lazycoder/statuses/21595898534" class="aktt_tweet_time">#</a></li>
<li>.@bmsullivan Right, but if you don&#039;t understand scope and events you might wright your handlers incorrectly and cause more problems. <a href="http://twitter.com/lazycoder/statuses/21597460351" class="aktt_tweet_time">#</a></li>
<li>#<a href="http://search.twitter.com/search?q=%23herdingCode" class="aktt_hashtag">herdingCode</a> Herding Code 91: Listener-Powered Lightning Round: This week on Herding Code, K Scott, Jon, Kevin, an... <a href="http://bit.ly/bU1jd7" rel="nofollow">http://bit.ly/bU1jd7</a> <a href="http://twitter.com/lazycoder/statuses/21597999212" class="aktt_tweet_time">#</a></li>
<li><a href="http://bit.ly/bU1jd7" rel="nofollow">http://bit.ly/bU1jd7</a> where we finally tackle the burning question &quot;Cake or pie?&quot; <a href="http://twitter.com/lazycoder/statuses/21598419410" class="aktt_tweet_time">#</a></li>
<li>Did I just see a JavaFX article on DrDobbs? Seriously? Is JavaFX still around? Has anything other than examples been written using it? <a href="http://twitter.com/lazycoder/statuses/21602175262" class="aktt_tweet_time">#</a></li>
<li>For those wondering, yes Dr Dobbs is still around. At least online. <a href="http://bit.ly/9MH0Nf" rel="nofollow">http://bit.ly/9MH0Nf</a> <a href="http://twitter.com/lazycoder/statuses/21605629294" class="aktt_tweet_time">#</a></li>
<li>I&#039;m not registering for PDC10, but I will register for PDC10 afterparties. <img src='http://www.lazycoder.com/weblog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  <a href="http://twitter.com/lazycoder/statuses/21610250325" class="aktt_tweet_time">#</a></li>
<li>“@dorianmuthig: Lala <img src='http://www.lazycoder.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ” got me on my knees <a href="http://twitter.com/lazycoder/statuses/21631233080" class="aktt_tweet_time">#</a></li>
<li>Cool, husband of one of my HS classmates is the President of SendThisFile.com <a href="http://j.mp/dxPYDH" rel="nofollow">http://j.mp/dxPYDH</a> #<a href="http://search.twitter.com/search?q=%23fb" class="aktt_hashtag">fb</a> <a href="http://twitter.com/lazycoder/statuses/21631631973" class="aktt_tweet_time">#</a></li>
<li>.@robconery Not so fast Conery! You don&#039;t speak for me! <a href="http://twitter.com/robconery/statuses/21636265926" class="aktt_tweet_reply">in reply to robconery</a> <a href="http://twitter.com/lazycoder/statuses/21637296197" class="aktt_tweet_time">#</a></li>
<li>[posted] Twitter Updates for 2010-08-19 <a href="http://bit.ly/dbUgku" rel="nofollow">http://bit.ly/dbUgku</a> <a href="http://twitter.com/lazycoder/statuses/21637492318" class="aktt_tweet_time">#</a></li>
<li>5 assumptions MongoDB makes that users often miss. <a href="http://j.mp/9gGqBG" rel="nofollow">http://j.mp/9gGqBG</a> <a href="http://twitter.com/lazycoder/statuses/21637673235" class="aktt_tweet_time">#</a></li>
<li>I have 4687 fake followers. Wait, that can&#039;t be right. <a href="http://twitter.com/lazycoder/statuses/21668648480" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/08/20/twitter-updates-for-2010-08-20/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter Updates for 2010-08-19</title>
		<link>http://www.lazycoder.com/weblog/2010/08/19/twitter-updates-for-2010-08-19/</link>
		<comments>http://www.lazycoder.com/weblog/2010/08/19/twitter-updates-for-2010-08-19/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 23:35:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2010/08/19/twitter-updates-for-2010-08-19/</guid>
		<description><![CDATA[Ruby 1.9.2 is released http://bit.ly/aLHlEW # Free F# stand alone IDE (VS Shell) http://bit.ly/9zPBp5 # Interesting, If you install enough extensions in Chrome, you lose the default menus? Can&#039;t get to the &#34;home&#34; menu anymore. # .@jongalloway @OdeToCode he also loads jQuery twice for some reason. (fo&#039; reals) # I am the terror that flaps [...]]]></description>
			<content:encoded><![CDATA[<ul class="aktt_tweet_digest">
<li>Ruby 1.9.2 is released <a href="http://bit.ly/aLHlEW" rel="nofollow">http://bit.ly/aLHlEW</a> <a href="http://twitter.com/lazycoder/statuses/21504471991" class="aktt_tweet_time">#</a></li>
<li>Free F# stand alone IDE (VS Shell) <a href="http://bit.ly/9zPBp5" rel="nofollow">http://bit.ly/9zPBp5</a> <a href="http://twitter.com/lazycoder/statuses/21518159341" class="aktt_tweet_time">#</a></li>
<li>Interesting, If you install enough extensions in Chrome, you lose the default menus? Can&#039;t get to the &quot;home&quot; menu anymore. <a href="http://twitter.com/lazycoder/statuses/21519934774" class="aktt_tweet_time">#</a></li>
<li>.@jongalloway @<a href="http://twitter.com/OdeToCode" class="aktt_username">OdeToCode</a> he also loads jQuery twice for some reason. (fo&#039; reals) <a href="http://twitter.com/lazycoder/statuses/21524458003" class="aktt_tweet_time">#</a></li>
<li>I am the terror that flaps in the night. I am the 8 am conference call that starts late... #<a href="http://search.twitter.com/search?q=%23fb" class="aktt_hashtag">fb</a> <a href="http://twitter.com/lazycoder/statuses/21540483621" class="aktt_tweet_time">#</a></li>
<li>One thing I&#039;d like is to be able to hook my iPhone up to a monitor for gaming/movies and use the iPhone as the controller. <a href="http://twitter.com/lazycoder/statuses/21548729782" class="aktt_tweet_time">#</a></li>
<li>That might require a beefier chip though and drain the battery faster. <a href="http://twitter.com/lazycoder/statuses/21548779495" class="aktt_tweet_time">#</a></li>
<li>I&#039;ve noticed that multiple monitors aren&#039;t necessary if I can use Expose on osx or with the taskbar peaks in windows7 <a href="http://twitter.com/lazycoder/statuses/21574287297" class="aktt_tweet_time">#</a></li>
<li>/s/peaks/peeks sheesh <a href="http://twitter.com/lazycoder/statuses/21574357964" class="aktt_tweet_time">#</a></li>
<li>I don&#039;t get it? Why roll out a @<a href="http://twitter.com/lightswitch" class="aktt_username">lightswitch</a> beta to <acronym title='Microsoft Developer Network'><span class='caps'>MSDN</span></acronym> subscribers? They aren&#039;t the target audience. <a href="http://twitter.com/lazycoder/statuses/21579797933" class="aktt_tweet_time">#</a></li>
</ul>
<p class="aktt_credit">Powered by <a href="http://alexking.org/projects/wordpress">Twitter Tools</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/08/19/twitter-updates-for-2010-08-19/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The hardest part of software development has nothing to do with code</title>
		<link>http://www.lazycoder.com/weblog/2010/06/30/the-hardest-part-of-software-development-has-nothing-to-do-with-code/</link>
		<comments>http://www.lazycoder.com/weblog/2010/06/30/the-hardest-part-of-software-development-has-nothing-to-do-with-code/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:09:10 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1250</guid>
		<description><![CDATA[People who complain about how much "more" code they have to write in an MVC project versus a Webforms project, or really any project, prove to me that they have absolutely no idea where the REAL work is in ANY development project. The main work in any software development project is FIGURING OUT WHAT TO [...]]]></description>
			<content:encoded><![CDATA[<p>People who complain about how much "more" code they have to write in an MVC project versus a Webforms project, or really any project, prove to me that they have absolutely no idea where the REAL work is in ANY development project.</p>
<p>The main work in any software development project is FIGURING OUT WHAT TO BUILD. How you build it is trivial compared to the amount of time and effort you SHOULD put into discovering the users needs and working with them to solve their problems and make their life better.</p>
<p>Remember, that's the number one purpose for any piece of computer hardware or software. This cannot be stressed and repeated enough.</p>
<p><strong>COMPUTERS SHOULD MAKE OUR LIVES BETTER!</strong></p>
<p>How do we write programs that make lives better? By writing programs that fulfill their needs and ease the pain of their work. We still aren't at a point where we have a common, easy to understand vocabulary when it comes to build software. We often get it wrong the first, second, and third times. That's where the discipline and engineering comes into play. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/06/30/the-hardest-part-of-software-development-has-nothing-to-do-with-code/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Getting started with node.js on Windows</title>
		<link>http://www.lazycoder.com/weblog/2010/03/18/getting-started-with-node-js-on-windows/</link>
		<comments>http://www.lazycoder.com/weblog/2010/03/18/getting-started-with-node-js-on-windows/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 16:15:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2010/03/19/getting-started-with-node-js-on-windows/</guid>
		<description><![CDATA[The title is somewhat misleading. As of right now, node.js doesn’t run on Windows. You have to run it on some kind of *nix/BSD based system. But there is a somewhat low footprint way to run it and play around with it on your Windows box. Step 1 – Download and install VirtualBox orVMWare Player. [...]]]></description>
			<content:encoded><![CDATA[<p>The title is somewhat misleading. As of right now, node.js doesn’t run on Windows. You have to run it on some kind of *nix/BSD based system. But there is a somewhat low footprint way to run it and play around with it on your Windows box.</p>
</p>
<p>Step 1 – Download and install <a href="http://www.virtualbox.org/" target="_blank">VirtualBox</a> or<a href="http://www.vmware.com/products/player/" target="_blank">VMWare Player</a>. I chose VirtualBox. It’s free, and supports 64-bit guests.</p>
<p>Step 2 – Download The <a href="http://www.turnkeylinux.org/core" target="_blank">Turnkey Linux core appliance</a> and unzip it somewhere. This handy little virtual machine is based on Ubuntu and give you a basic command line environment with networking.</p>
<p>Step 3 - Import the Turnkey core appliance into VirtualBox.</p>
<p><a href="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="turnkey_step_1" border="0" alt="turnkey_step_1" src="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_1_thumb.png" width="369" height="285" /></a> </p>
<p><a href="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="turnkey_step_2" border="0" alt="turnkey_step_2" src="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_2_thumb.png" width="418" height="274" /></a> </p>
<p>Choose the .ovf file in the Turnkey directory you unzipped earlier.</p>
<p><a href="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="turnkey_step_4" border="0" alt="turnkey_step_4" src="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_4_thumb.png" width="477" height="378" /></a> </p>
<p>Click next and review the settings, making any changes as you see fit. The defaults should work fine. Then click import. </p>
<p><a href="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="turnkey_step_3" border="0" alt="turnkey_step_3" src="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_step_3_thumb.png" width="483" height="325" /></a> </p>
</p>
<p>Once Virtualbox finishes importing the virtual machine, you can start it up. </p>
<p>Assuming your network is configured correctly, the virtual machine will grab an IP from your DHCP server and be ready to go. </p>
<p><a href="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_startup.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="turnkey_startup" border="0" alt="turnkey_startup" src="http://www.lazycoder.com/weblog/wp-content/uploads/2010/03/turnkey_startup_thumb.png" width="465" height="247" /></a> </p>
<p>Step 4 – At this point you can either SSH into the virtual machine or you can connect using the web shell at the address indicated in the startup screen. Initially you can connect using as the root account with no password. You are almost ready to start installing node.js. First type "apt-get update" at the command line to make sure you have all the latest package information.</p>
<p>Step 5 – Install the developer tools you need to get and build node.js. Node.js isn’t packaged as a binary, you have to build it from source. Luckily it includes it’s dependencies and is pretty easy to build. But first we need to get a compiler. Type “apt-get install build-essential” and hit return. A lot of text will fly past, if it asks you if you want to go ahead press “y”. </p>
<p>Step 6 – Install Git. Now you’ve got a compiler installed, we have to install git so we can fetch node.js from the repository. At the command prompt type “apt-get install git”. Once that is complete, type “apt-get install git-core”.</p>
<p>Step 7 – Clone the node.js Git repository. If you want to put node.js is a specific directory, go ahead and make it then “cd” into the new directory. At the command prompt, type “git clone <a title="git://github.com/joyent/node.git" href="git://github.com/joyent/node.git">git://github.com/joyent/node.git</a>“.</p>
<p>Step 8 – configure the source for building. type “cd node” and change into the node directory that Git created. Type “./configure”. You may see a few “fail” messages. Don’t worry about them.</p>
<p>Step 9 – Build node.js. Type" “make” at the command prompt. Get a sandwich or a nice cool drink. It doesn’t take very long, but it’s not very exciting unless the Matrix screensaver is your favorite screen saver.</p>
<p>Step 10 – Install node.js and start build applications. Type “make install” once the build is complete. Once that is complete,you can type “node” at the command prompt and you should see the standard help information fly by.</p>
</p>
<p>Building a node module or application is beyond the scope of this short tutorial. I suggest reading up at the <a href="http://nodejs.org" target="_blank">Node.js</a> site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/03/18/getting-started-with-node-js-on-windows/feed/</wfw:commentRss>
		<slash:comments>50</slash:comments>
		</item>
		<item>
		<title>Goals for 2010</title>
		<link>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/</link>
		<comments>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 18:29:08 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[mvcturbine]]></category>
		<category><![CDATA[ringbinder]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1254</guid>
		<description><![CDATA[So I've been mulling around what I want to do, at least in terms of my development skills and community type stuff, in 2010 (The year we make contact). I figure if I blog them up here, I can refer back to them and check on my progress at the end of the year. Help [...]]]></description>
			<content:encoded><![CDATA[<p>So I've been mulling around what I want to do, at least in terms of my development skills and community type stuff, in <a href="http://www.youtube.com/watch?v=7el-E9Wk1bQ">2010 (The year we make contact)</a>. I figure if I blog them up here, I can refer back to them and check on my progress at the end of the year.</p>
<ol>
<li>Help out with the <a href="http://mvcturbine.codeplex.com/">MVC Turbine</a> docs</li>
<li>Finish my<a href="http://github.com/skoon/ringbinder"> Ringbinder </a>project and release it</li>
<li>Write a simple little app for use at home in either Clojure or Smalltalk</li>
<li>Continue to learn Python</li>
<li>Write a small app that runs on the Google App Engine</li>
<li>Write a blog post, either here or on my <a href="http://devcentral.f5.com/weblogs/scott/Default.aspx">work blog</a>, at least once a week</li>
<li>Redesign this blog</li>
<li>Work on and launch the coderdads.info site I've had in mind for a while</li>
</ol>
<p>I'm sure I'll come up with more as the year progresses and I, hopefully, finish up these tasks.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2010/01/07/goals-for-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Pros don&#8217;t make do</title>
		<link>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/</link>
		<comments>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 17:03:00 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/</guid>
		<description><![CDATA[I had a locksmith come out to replace a doorknob that had gone bad. It had gradually gotten hard and harder to turn and finally the bolt got stuck inside the door. Which meant the only thing keeping the door shut was the deadbolt. I had replaced doorknobs before, but this one had a non-standard [...]]]></description>
			<content:encoded><![CDATA[<p>I had a locksmith come out to replace a doorknob that had gone bad. It had gradually gotten hard and harder to turn and finally the bolt got stuck inside the door. Which meant the only thing keeping the door shut was the deadbolt. I had replaced doorknobs before, but this one had a non-standard length and strike plate so I didn't want to mess with it. The thing that struck me while watching him work is that he never had to try and force a tool to do something it wasn't designed to do. He always had the correct tool and it worked exactly the way he expected it to. <a href="http://thereifixedit.com/2009/10/30/long-term-temporary-fix/"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="mikeg-longtermfix" border="0" alt="mikeg-longtermfix" align="left" src="http://www.lazycoder.com/weblog/wp-content/uploads/2009/11/mikeglongtermfix.jpg" width="244" height="184" /></a>He never tried to screw in a Phillips head screw using a knife blade or a flat head screwdriver. He didn’t have to <a href="http://www.joelonsoftware.com/items/2009/09/23.html">duct tape</a> anything</p>
<p>I have a small battery powered Dremel rotary tool. It works for very small jobs. There have been a couple of times when I’ve had to push it way beyond it’s limit, including once when I needed to make the opening on a door jam for a strike plate a little wider. It took me forever. I had to charge the battery twice and broke a bit before I finally had enough room, but just barely enough room. Contrast that with the locksmith who had to do the exact same thing. He pulled out a much larger Dremel that plugged into the wall. Where it took me almost 45 minutes to rout out the door jam, he took about 2 minutes with his much more powerful tool. I could have stopped, went to the store, and bought a more powerful tool and gotten the job done much faster. But I thought that this tool would do the trick and going to the store would have cost me some resources, it might have taken a little longer. I’d have to learn how to use the new tool. Get a new bit. But overall, it probably would have saved me some time in the future and probably would have saved me some time on that project. I could definitely find other uses for the new tool.</p>
<p>Think about that the next time you reject a new programming tool because you think it might take too long to learn or it’s different. Instead of doing the hacky way you KNOW will work, check to see if there is a more elegant or permanent solution.&#160; Because if you aren’t careful, your cheap and easy workaround might end up sticking around in the project long enough for it to become a problem to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/11/23/pros-dont-make-do/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>We need a language for programmers</title>
		<link>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/</link>
		<comments>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 21:10:40 +0000</pubDate>
		<dc:creator>Scott</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Languages]]></category>

		<guid isPermaLink="false">http://www.lazycoder.com/weblog/?p=1218</guid>
		<description><![CDATA[Here is a great rant about "modern" programming languages. And so for 20 years now these folks --- *the* shining lights, in many ways, of "practical" programming language, operating systems, and general systems research --- have continued to fail to "get" the fundamental practical needs of everyday programmers working in The Real World. "Go" is [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a <a href="http://www.xent.com/pipermail/fork/Week-of-Mon-20091109/054578.html">great rant about "modern" programming languages</a>.</p>
<blockquote><p>And so for 20 years now these folks ---<br />
*the* shining lights, in many ways, of "practical" programming<br />
language, operating systems, and general systems research --- have<br />
continued to fail to "get" the fundamental practical needs of everyday<br />
programmers working in The Real World.  "Go" is just another language<br />
written first for the compiler and only secondarily for the programmer<br />
--- and stuck in a 70s mindset* about the relationship of that<br />
programmer to the (digital) world within which they live and work!<br />
(But hey, it compiles fast!  Which is, of course, THE problem that<br />
really needs addressing.) </p></blockquote>
<p>He then goes on to talk about some aspects of languages that frustrate him.</p>
<blockquote><p>J.H.C, folks, it's nearly 2010.  Let's get a few things straight:</p>
<p>   - most programming involves schlepping a few but complex data types<br />
between different string representations<br />
   - programmers have become plumbers and documentation-archaeologists<br />
mostly, which is sad and uninteresting<br />
   - programming languages are for *programmers* --- not compilers and<br />
compiler-writers<br />
   - until you make the everyday, "simple" things simple, it will<br />
continue to be a dark art practiced by fewer and fewer<br />
   - any language that makes you explicitly import an IO module to<br />
read a file or stdin is fucked<br />
   - declarations are a pointless anachronism (same for explicit<br />
memory management)<br />
   - if I have to understand category theory to write a program that<br />
does IO, IT IS A NON STARTER!<br />
   - less stupid line-noise syntax and punctuation, people
</p></blockquote>
<p>I don't understand why the need to compile fast is such a big deal. If your programming language makes you write so much code that it takes more than a few seconds to compile, you should probably look at using a different language. Here are some things that I'd like to see in a programming language that is designed for programmers rather than compilers or computers.</p>
<p>1) No typing - That's not to say that I can't declare my own types, classes, objects, etc... But that calls to objects should be type independent. (e.g. messaging and dynamic dispatch)</p>
<p>2) Built in unit testing - I should be able to declare contracts on the methods and pass/fail criteria. The tests should be run as part of the compile step or interpretation (if the language is compiled or interpreted)</p>
<p>3) Jellybeans</p>
<p>4) Automatic inclusion of libraries based on path and usage. - I don't mind having to pull in a library to do file I/O or consume some other kind of data like ATOM or JSON. But at compile time, if I have referenced any of the objects contained in the library, all of the references to the library should be handled for me automatically. Any name collisions should be compiler warnings so I can specify which library to use by in my code or make the reference explicit in some other way. I like Pythons path based module convention, the language should just search the child directories for a library if the library isn't already included in the base language pack.</p>
<p>5) Anytime a design pattern emerges, it should be re-factored into the language itself.</p>
<p>6) It should be a pocket language, have a set of keywords and syntax that is small and compact but still understandable. JavaScript and C are good examples of pocket languages. It's easy to pick up the syntax.</p>
<p>I'm sure there's more that I would add. What kinds of features would you like to see in a language oriented towards programmers rather than compilers?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lazycoder.com/weblog/2009/11/17/we-need-a-language-for-programmers/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

