<?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>Nuclear Rooster &#187; Uncategorized</title>
	<atom:link href="http://dev.nuclearrooster.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.nuclearrooster.com</link>
	<description></description>
	<lastBuildDate>Mon, 19 Jul 2010 03:48:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Node.JS filesystem watcher: Auto-reload server on code-change</title>
		<link>http://dev.nuclearrooster.com/2010/07/18/node-js-filesystem-watcher-auto-reload-server-on-code-change/</link>
		<comments>http://dev.nuclearrooster.com/2010/07/18/node-js-filesystem-watcher-auto-reload-server-on-code-change/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 03:46:40 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=474</guid>
		<description><![CDATA[Wow, a 2nd Node.JS post of the day, a Sunday to boot. I was thinking about how to auto-reload a node server, and then I came across a great solution by accident. DracoBlue has some good Node.JS articles. In particular, check out this one about auto-reloading in addition to a link to the code in [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, a 2nd Node.JS post of the day, a Sunday to boot.</p>
<p>I was thinking about how to auto-reload a node server, and then I came across a great solution by accident.  <a href="http://dracoblue.net/">DracoBlue</a> has some <a href="http://dracoblue.net/dev/hot-reload-for-nodejs-servers-on-code-change/173/">good Node.JS articles</a>.  In particular, check out <a href="http://dracoblue.net/dev/hot-reload-for-nodejs-servers-on-code-change/173/">this one about auto-reloading</a> in addition to a link to the <a href="http://github.com/DracoBlue/spludo/blob/master/build/run_dev_server.js">code in their Spludo Node.JS framework</a> which makes this happen.</p>
<p>Simply save the file to your apps top-level directory, change the 'run_server.js' to the name of your file that you want watched, and presto, you're app will be restarted if any js files changes.  Love it.</p>
<p>Here's what the console looks like:</p>
<pre class="brush: plain;">
steggie:appstat nstielau$ node dev_server.js
DEBUG: DEVSERVER: Starting server
Server running at http://127.0.0.1:8124/ in development
DEBUG: DEVSERVER: Restarting because of changed file at ./appstat_tracker.js
DEBUG: DEVSERVER: Stopping server for restart
DEBUG: DEVSERVER: Child process exited: null
DEBUG: DEVSERVER: Starting server
Server running at http://127.0.0.1:8124/ in development
</pre>
<p>I wish node had a --watch flag that would do this for me.  I took a peek at the node code, but I'm not quite ready to make that happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/07/18/node-js-filesystem-watcher-auto-reload-server-on-code-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Capistrano Scripts for Node.js</title>
		<link>http://dev.nuclearrooster.com/2010/07/18/capistrano-scripts-for-node-js/</link>
		<comments>http://dev.nuclearrooster.com/2010/07/18/capistrano-scripts-for-node-js/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 23:38:45 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=467</guid>
		<description><![CDATA[Here are some basic capistrano scripts and a configuration script to get Node.js running on Ubuntu 10.0.4 Lucid on ec2 (or anywhere else). I pieced these together from different places, but it's kinda cool to have a 2-command deploy out-of-the-box. Here is a gist that should get you up and running with node.js on ec2. [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some basic capistrano scripts and a configuration script to get Node.js running on Ubuntu 10.0.4 Lucid on ec2 (or anywhere else).  I pieced these together from different places, but it's kinda cool to have a 2-command deploy out-of-the-box.  Here is a gist that should get you <a href="http://gist.github.com/479007">up and running with node.js on ec2</a>.  Clone the gist repo to you local box and follow along!</p>
<p>I also configured nginx to proxy to the example Node.js application, mostly so that it would be accessible on port 80, which is enabled by default for EC2 security groups.</p>
<h2>EC2 Launch Script</h2>
<p>If you have the ec2 tools installed (I'd recommend <a href="http://github.com/mxcl/homebrew">brew</a>), and you have your credential environment variables in place, you can run this script to launch an ec2 instance.  It's using Alestic's ubuntu 10.04 AMI<br />
<script src="http://gist.github.com/479007.js?file=launch_instance.sh"></script></p>
<h2>Ubuntu 10.04 Configure Script</h2>
<p>This is the config script that the launch script uses.<br />
<script src="http://gist.github.com/479007.js?file=configure_server.sh"></script></p>
<h2>Copy host to Capfile</h2>
<p>If you're following along, you'll want to copy the public DNS name of your ec2 instance to the 'host' variable in the Capfile.</p>
<h2>Capfile</h2>
<p>You can break these out into ./config/deploy.rb or whatever you like, but it's all here for succinctness.<br />
<script src="http://gist.github.com/479007.js?file=Capfile"></script></p>
<h2>Run the capistrano scripts</h2>
<pre class="brush: plain;">
cap deploy:setup
cap deploy
</pre>
<h2>References </h2>
<ul>
<li><a href="http://github.com/mnutt/hummingbird">Mnutt's HUmmingbird</a></liL
<li><a href="http://static01.vanzonneveld.net:8080/techblog/article/run_nodejs_as_a_service_on_ubuntu_karmic/">Kevin's article on running node as a service on ubuntu Karmic</a></li>
<li><a href="http://howtonode.org/deploying-node-upstart-monit">How-to-node on upstart and monit</a></li>
<li><a href="http://caolanmcmahon.com/deploying_nodejs_applications_with_upstart.html">Caolan's article on Node.js and upstart deployment</a>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/07/18/capistrano-scripts-for-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compiling Node.js on a 512mb (ve) MediaTemple VPS</title>
		<link>http://dev.nuclearrooster.com/2010/07/15/compiling-node-js-on-a-512-ve-mediatemple-vps/</link>
		<comments>http://dev.nuclearrooster.com/2010/07/15/compiling-node-js-on-a-512-ve-mediatemple-vps/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 18:42:46 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=456</guid>
		<description><![CDATA[The Bad News You can't. Or at least I couldn't. Make started throwing "virtual memory exhausted: Cannot allocate memory" errors after a few seconds. I tried setting some make flags. I confirmed make was increasing the fail count of 'privvmpages' in /proc/user_beancounters. I started trying to change the swap. And then I found an easier [...]]]></description>
			<content:encoded><![CDATA[<h3>The Bad News</h3>
<p>You can't.  Or at least I couldn't.  Make started throwing "virtual memory exhausted: Cannot allocate memory" errors after a few seconds.  I tried setting some make flags.  I confirmed make was increasing the fail count of 'privvmpages' in /proc/user_beancounters.  I started trying to change the swap.  And then I found an easier way.</p>
<h3>Good News</h3>
<p>It is pennies and minutes to upgrade to a VPS with 1gig of RAM, compile node.js, and revert back to your economic 512mb slice.  You keep all your data.  No problem.</p>
<h3>Temporarily (<2hrs) upgrade your MediaTemple (ve) server</h3>
<p>1) Enter your MediaTemple console</p>
<p>2) Select 'Upgrade Account'<br />
<img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/mt_upgrade.jpg" alt="" title="mt_upgrade" width="919" height="516" class="aligncenter size-full wp-image-458" /></p>
<p>3) Select the size container you need (1gig works for compiling node js)<br />
<img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/mt_select_upgrade.jpg" alt="" title="mt_select_upgrade" width="920" height="648" class="aligncenter size-full wp-image-457" /></p>
<p>4) Wait a few minutes, ssh in, configure &#038;& make &#038;& make install</p>
<p>5) Reverse the process, going back to the 512mb VPS.</p>
<h3>Conclusion</h3>
<p>At first I was pretty frustrated that I couldn't compile node.  But MediaTemple does let you choose from a lot of new OSes, which is nice, err, pretty much a requirement.  I consider myself pretty handy with a linux server, but I want to worry about improving the application and infrastructure, not hacking some memory issue on a shared server because I can't afford more power yet.  That is wasted time.  But media temple makes it amazingly easy to upgrade and downgrade your box.  (mt) ftw!</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/07/15/compiling-node-js-on-a-512-ve-mediatemple-vps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IRC with Adium</title>
		<link>http://dev.nuclearrooster.com/2010/07/06/irc-with-adium/</link>
		<comments>http://dev.nuclearrooster.com/2010/07/06/irc-with-adium/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:14:07 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=445</guid>
		<description><![CDATA[IRC with Adium IRC is a great way to get help when you need it, and it's even easier now that your favorite OS X IM client supports IRC. Here's how to get up and running. How to 1) Create an account Add a new IRC account. Enter your nickname, host server (irc.freenode.net). You probably [...]]]></description>
			<content:encoded><![CDATA[<h3>IRC with Adium</h3>
<p>IRC is a great way to get help when you need it, and it's even easier now that your <a href="http://adium.im/">favorite OS X IM client</a> supports IRC.  Here's how to get up and running. </p>
<h3>How to</h3>
<h4>1) Create an account</h4>
<p>Add a new IRC account. Enter your nickname, host server (irc.freenode.net).  You probably won't need a password.</p>
<p><a href="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.02.14-AM.png"><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.02.14-AM.png" alt="Create an IRC account with Adium" title="Create an IRC account" width="572" height="477" class="aligncenter size-full wp-image-446" /></a></p>
<h4>2) Join a group chat</h4>
<p>Make sure your new IRC account is connected, and select 'Join Group Chat' from the File menu.  Select the IRC account from the drop-down, enter the chat room (including the '#'), and join.</p>
<p><a href="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.02.41-AM.png"><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.02.41-AM.png" alt="Join IRC chat with Adlim" title="Join IRC chat with Adlim" width="385" height="201" class="aligncenter size-full wp-image-447" /></a></p>
<h4>Chat away</h4>
<p><a href="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.10.45-AM.png"><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/07/Screen-shot-2010-07-06-at-10.10.45-AM.png" alt="#mongodb IRC on Adium" title="#mongodb IRC on Adium" width="735" height="592" class="aligncenter size-full wp-image-449" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/07/06/irc-with-adium/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MongoDB Resources</title>
		<link>http://dev.nuclearrooster.com/2010/07/06/mongodb-resources/</link>
		<comments>http://dev.nuclearrooster.com/2010/07/06/mongodb-resources/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 17:00:57 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=440</guid>
		<description><![CDATA[Somebody on #mongodb asked for some learning resources yesterday, noting that all the mongo books are not yet published. Sometimes it feels great to have a pulpy reference, but, in the meantime, there are plenty of resources out there. Tutorials 10gen's got a solid set of docs. A good place to start is the general [...]]]></description>
			<content:encoded><![CDATA[<p>Somebody on #mongodb asked for some learning resources yesterday, noting that all the mongo books are <a href="http://www.mongodb.org/display/DOCS/Books">not yet published</a>.  Sometimes it feels great to have a pulpy reference, but, in the meantime, there are plenty of resources out there.</p>
<h3>Tutorials</h3>
<p>10gen's got a solid set of docs.  A good place to start is the <a href="http://www.mongodb.org/display/DOCS/Tutorial">general tutorial</a>.  Once you've got your head around the basic ideas, go over and try the <a href="http://try.mongodb.org/">instant online tutorial</a> to convince you that you want to install MongoDB on your machine.</p>
<h3>Examples</h3>
<p>To dig into a little code, there are some good examples for both the ruby driver and mongomapper on github.  Check out the <a href="http://github.com/mongodb/mongo-ruby-driver/tree/master/examples/">Ruby examples</a> and the <a href="http://github.com/jnunemaker/mongomapper/tree/master/examples/">MongoMapper</a> examples for some concise usage examples.  Even if you're not into ruby, these examples clearly demonstrate some of the Mongo principles.</p>
<h3>Hosted MongoDB</h3>
<p>If you don't want to install MongoDB locally, or you want to get a hosted database, I can't say enough about <a href="https://mongohq.com/">MongoHQ</a>.  Whether you are playing around with a free DB or launching a live project, MongoHQ makes it easy.  Seamless Heroku integration?  You betcha.</p>
<h3>MongoFu</h3>
<p>MognoFu.com appears to be gaining some momentum as a MongoDB resource, with nicely organized <a href="http://mongofu.com">MongoDB tutorials</a> as well as questions, articles and snippits.  Check it out.</p>
<h3>Other Resources</h3>
<p>Lastly, there is a good list of external resources <a href="http://www.mongodb.org/display/DOCS/Ruby+External+Resources">here</a> that will no doubt be kept up-to-date better than this blog.</p>
<p>Dig in</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/07/06/mongodb-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>280 Slides:  these go up to 11</title>
		<link>http://dev.nuclearrooster.com/2010/05/14/280-slides-these-go-up-to-11/</link>
		<comments>http://dev.nuclearrooster.com/2010/05/14/280-slides-these-go-up-to-11/#comments</comments>
		<pubDate>Fri, 14 May 2010 22:38:19 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cuppaccino]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=428</guid>
		<description><![CDATA[Recently, I was looking through some of the Cuppaccino demos and saw this snippit about 280 Slides claiming that it is "one of the most advanced applications on the web today". I took the bait, and shortly after loading the page was the claim proven correct. Most web apps on the web to day are [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I was looking through some of the <a href="http://cappuccino.org/learn/demos/">Cuppaccino demos</a> and saw this snippit about <a href="http://280slides.com/">280 Slides</a> claiming that it is "one of the most advanced applications on the web today".  </p>
<p><a href="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-3.28.05-PM.png"><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-3.28.05-PM.png" alt="" title="Screen shot 2010-05-14 at 3.28.05 PM" width="631" height="190" class="aligncenter size-full wp-image-427" /></a></p>
<p>I took the bait, and shortly after loading the page was the claim proven correct.</p>
<p><a href="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-10.56.12-AM.png"><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/Screen-shot-2010-05-14-at-10.56.12-AM.png" alt="" title="Screen shot 2010-05-14 at 10.56.12 AM" width="333" height="332" class="aligncenter size-full wp-image-426" /></a></p>
<p>Most web apps on the web to day are completely loaded at 100%.  Clearly, 280 Slides is so terrifically advanced that it <a href="http://en.wikipedia.org/wiki/Up_to_eleven">goes to 105% </a>.  Genius.  These new web technologies truly are groundbreaking.</p>
<p>All joking aside, some of the Cuppaccino demos are pretty cool.  Go check them out.  </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/05/14/280-slides-these-go-up-to-11/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developer Quiz:  Should I do this now?</title>
		<link>http://dev.nuclearrooster.com/2010/05/10/developer-quiz-should-i-do-this-now/</link>
		<comments>http://dev.nuclearrooster.com/2010/05/10/developer-quiz-should-i-do-this-now/#comments</comments>
		<pubDate>Mon, 10 May 2010 16:35:56 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=400</guid>
		<description><![CDATA[I recently had a average sized freakout after migrating from a beta to a real account at MongoHQ. (MongoHQ rocks. It wasn't their fault, the migration couldn't be easier. I just goofed something and was looking in the wrong place). A friend recently asked me "Can't you just not have that happen again?". Well, yes [...]]]></description>
			<content:encoded><![CDATA[<p>I recently had a average sized freakout after migrating from a beta to a real account at <a href="http://mongohq.com"/>MongoHQ</a>.  (MongoHQ rocks.  It wasn't their fault, the migration couldn't be easier.  I just goofed something and was looking in the wrong place). A friend recently asked me "Can't you just not have that happen again?".  Well, yes and no.</p>
<p>Avoiding freakouts is certainly part of being a good developer.  Self documenting code, a healthy test suite, multiple mirrored environments, etc.  But like my dad coaching hockey, if you don't fall sometimes, you're probably not trying hard enough.  Google better run exhaustive tests for the simplest features, but I can't afford to spend more than a few hours testing a trivial feature for a side project that will never pay my rent.  </p>
<p>Hopefully a simple set of questions will help keep my blood pressure low, and keep me punctual for dinner dates.  Please add any question that you think would help determine if <i>now</i> is the right time to embark on this particular problem. </p>
<p>I'd love to have an interactive little widget that I could pop open, answer a few questions, and get my coefficient-of-should-I-do-this-now.</p>
<ul>
<li>How long will this take, best case?</li>
<li>How long will this take, reasonably apocalyptic case?</li>
<li>What is the most number of people this could effect?</li>
<li>How many times have I done something like this before?</li>
<li>Have I ever done something exactly like this before?</li>
<li>Has this been testing programmatically?</li>
<li>Has this been tested in a dev/staging environment?</li>
<li>What do I have to do in the next two hours?</li>
<li>Where do I have to go in the next two hours?</li>
<li>Can I stay here for the next two hours?</li>
<li>Have I eaten recently?</li>
<li>Had a beer or a couple martinis lately?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/05/10/developer-quiz-should-i-do-this-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Sprite example from Google maps</title>
		<link>http://dev.nuclearrooster.com/2010/05/07/css-sprite-example-from-google-maps/</link>
		<comments>http://dev.nuclearrooster.com/2010/05/07/css-sprite-example-from-google-maps/#comments</comments>
		<pubDate>Fri, 07 May 2010 23:15:13 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=386</guid>
		<description><![CDATA[CSS sprites are a great way to improve both the speed and user experience of your website. Combining multiple images into a single file reduces the number of different requests made, which is at the top of Yahoo's list of ways to speed up your website. Additionally, it improves user-experience: since essentially all the contained [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alistapart.com/articles/sprites">CSS sprites</a> are a great way to improve both the speed and user experience of your website.  Combining multiple images into a single file reduces the number of different requests made, which is at the top of <a href="http://developer.yahoo.com/performance/rules.html">Yahoo's list</a> of ways to speed up your website. Additionally, it improves user-experience:  since essentially all the contained images are pre-loaded at the same, sprites offer flicker-less hovers.</p>
<p>I ran across this CSS Sprite of google's the other day while looking at Google Map's HTTP requests.  Juicy.  Looking around, I found a sprite from Bing, as well as two long fellows from Yahoo Maps.  Interesting that Yahoo went with a strictly vertical orientation, while the google sprite is jumbled together.</p>
<div align="center">
<div style="width: 400px">
<img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/google_maps_css_sprite.png" alt="Google CSS Sprite" title="google_maps_css_sprite" width="142" height="131" class="aligncenter size-full wp-image-387" style="float: right;" /><br />
<img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/bing_sprite.png" alt="" title="bing_sprite" width="125" height="231" class="aligncenter size-full wp-image-389" style="float: left;"/><br />
<br style="clear:both"/><br />
<img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/yahoo_sprites_1.png" alt="" title="yahoo_sprites_1" width="28" height="1323" class="aligncenter size-full wp-image-390" style="float: right;" /><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/05/yahoo_sprites2.png" alt="" title="yahoo_sprites2" width="100" height="1831" class="aligncenter size-full wp-image-391" style="float: left;" />
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/05/07/css-sprite-example-from-google-maps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML 5 Browser Compatibility Screenshots (20+ browsers)</title>
		<link>http://dev.nuclearrooster.com/2010/05/02/html-5-browser-compatibility-screenshots-20-browsers/</link>
		<comments>http://dev.nuclearrooster.com/2010/05/02/html-5-browser-compatibility-screenshots-20-browsers/#comments</comments>
		<pubDate>Mon, 03 May 2010 03:28:18 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cross-browser]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[litmus]]></category>
		<category><![CDATA[litmusapp]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=343</guid>
		<description><![CDATA[I didn't think that much of HTML 5 at first. I saw a few cool demos for sure, but the thought of waiting for the browser compatibility seems like a non-starter. That is until I saw a demo of Gilt Group's HTML5 based real-time analytics tool that was presented at MongoSF last Friday. Enter Litmus [...]]]></description>
			<content:encoded><![CDATA[<p>I didn't think that much of HTML 5 at first.  I saw a few cool demos for sure, but the thought of waiting for the browser compatibility seems like a non-starter.  That is until I saw a demo of <a href="http://www.gilt.com/">Gilt Group's</a> HTML5 based real-time analytics tool that was presented at MongoSF last Friday.  </p>
<h3>Enter Litmus </h3>
<p><img src="http://litmusapp.com/images/logo-white.gif" style="padding-top:20px;float:left;width: 115px;padding-right: 15px;" alt="Litmus App"/><br />
So just what is the state of HTML 5 comparability?   Combining <a href="http://litmusapp.com/">Litmus App</a> and <a href="http://html5test.com/">HTML5 Test</a> provided a dead-simple way to check cross browser compatibility.  Here's it at a glance, or check out the <a href="http://rainier.litmusapp.com/pub/4a4f56e">Litmus App results</a>.  Litmus didn't quite work for every browser, so you're on your own for Opera 10 and Internet Exploder 9.</p>
<style type="text/css" media="screen">
#results div {
display: inline;
height: 150px;
width: 140px;
float: left;
}
#results div h3 {height: 50px;}
</style>
<p><br/></p>
<div id="results">
<div>
<h3>Explorer 5.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/d391a88e-0c10-4b56-9bb2-d5392fa4a136.fullpagethumb.png' alt='Explorer 5.0 HTML 5 Compatibility'/></div>
<div>
<h3>Explorer 5.5</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/c22fd71a-f8b2-4b8b-ae63-56c7d4f80199.fullpagethumb.png' alt='Explorer 5.5 HTML 5 Compatibility'/></div>
<div>
<h3>Explorer 6.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/f5bd4cc0-9330-4ca9-9aab-342cbdcc0841.fullpagethumb.png' alt='Explorer 6.0 HTML 5 Compatibility'/></div>
<div>
<h3>Explorer 7.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/87b0d858-67b8-4daa-b31b-3bc4fef7cc32.fullpagethumb.png' alt='Explorer 7.0 HTML 5 Compatibility'/></div>
<div>
<h3>Explorer 8.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/7bf2a577-d2d8-4523-8fc9-8b09d3c1b192.fullpagethumb.png' alt='Explorer 8.0 HTML 5 Compatibility'/></div>
<div>
<h3>Explorer 9.0 Preview</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/c3534462-8a27-4a14-ab41-b1e919029176.fullpagethumb.png' alt='Explorer 9.0 Preview HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 1.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/f90b5920-790e-4987-bfd0-e12033b5ac53.fullpagethumb.png' alt='Firefox 1.0 HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 1.5</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/b4ee1311-7f81-4f67-ae8b-cd7f6064e3aa.fullpagethumb.png' alt='Firefox 1.5 HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 2.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/95d7f505-b2d1-4c38-a34d-40a7b49ee2f3.fullpagethumb.png' alt='Firefox 2.0 HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 3.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/bf1447d0-521f-4295-a784-7b5833721247.fullpagethumb.png' alt='Firefox 3.0 HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 3.6</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/03085e16-c4cd-4aa0-9eb2-0483ba7bc1cd.fullpagethumb.png' alt='Firefox 3.6 HTML 5 Compatibility'/></div>
<div>
<h3>Opera 10.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/c1348c43-f05e-4dfd-97b5-af2f2dc5267f.fullpagethumb.png' alt='Opera 10.0 HTML 5 Compatibility'/></div>
<div>
<h3>Netscape 9.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/1811720e-9bd1-4fbe-af3e-8245239e7b7c.fullpagethumb.png' alt='Netscape 9.0 HTML 5 Compatibility'/></div>
<div>
<h3>Safari 4.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/7bc74c50-3aa3-4e9e-8f27-98beccb8031c.fullpagethumb.png' alt='Safari 4.0 HTML 5 Compatibility'/></div>
<div>
<h3>Flock 1.2</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/4f64220f-0fc5-4708-b0a8-2374cba0a1f0.fullpagethumb.png' alt='Flock 1.2 HTML 5 Compatibility'/></div>
<div>
<h3>Flock 2.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/5901892d-3de9-4c58-b6dc-357bb1500575.fullpagethumb.png' alt='Flock 2.0 HTML 5 Compatibility'/></div>
<div>
<h3>Chrome 4.0</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/ebe2474d-d5de-4897-a16b-e078ca236982.fullpagethumb.png' alt='Chrome 4.0 HTML 5 Compatibility'/></div>
<div>
<h3>Sea Monkey 1.1</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/a0daf8c8-2017-434c-89de-bb5c70ebf52c.fullpagethumb.png' alt='Sea Monkey 1.1 HTML 5 Compatibility'/></div>
<div>
<h3>Safari 4.0 OSX</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/FDF95461-6F59-4532-9C41-86840656FC38.png' alt='Safari 4.0 OSX HTML 5 Compatibility'/></div>
<div>
<h3>Firefox 3.6 OSX</h3>
<p><img src='http://s3.amazonaws.com/resultcaptures/C26C3902-11C5-4A77-BF16-1EA8D50331D7.png' alt='Firefox 3.6 OSX HTML 5 Compatibility'/></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/05/02/html-5-browser-compatibility-screenshots-20-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIJabber: Get CIJoe build notifications and reminders via Jabber</title>
		<link>http://dev.nuclearrooster.com/2010/04/27/cijabber-get-cijoe-build-notifications-and-reminders-via-jabber/</link>
		<comments>http://dev.nuclearrooster.com/2010/04/27/cijabber-get-cijoe-build-notifications-and-reminders-via-jabber/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 15:57:14 +0000</pubDate>
		<dc:creator>nick.stielau</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adium]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[cijoe]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[instant message]]></category>
		<category><![CDATA[jabber]]></category>
		<category><![CDATA[notification]]></category>

		<guid isPermaLink="false">http://dev.nuclearrooster.com/?p=304</guid>
		<description><![CDATA[What? Here's a little script that hooks in to CIJoe to send build alerts and reminders via Jabber (i.e. GTalk). Why? Continuous integration is great, and it only works if you can keep track of the build status. Email just doesn't seem like the right tool for this. I've recently explored using Jabber instead of [...]]]></description>
			<content:encoded><![CDATA[<h3>What?</h3>
<p>Here's a little script that hooks in to CIJoe to send build alerts and reminders via Jabber (i.e. GTalk).  </p>
<p><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/04/Screen-shot-2010-04-26-at-2.02.49-PM.png" alt="CIJoe sending status via Jabber" title="CIJabber" width="666" height="375" class="aligncenter size-full wp-image-313" style="border:1px solid black;" /></p>
<h3>Why?</h3>
<p>Continuous integration is great, and it only works if you can keep track of the build status.  Email just doesn't seem like the right tool for this.  I've recently <a href="http://dev.nuclearrooster.com/2010/01/08/hooking-up-munin-alerts-to-jabberxmpp/">explored using Jabber instead of email for munin notifications</a>, and I think this is an even bigger win.  I want to know the build status, but I don't want the hassle of cleaning my inbox.  I don't want to come back from a vacation with a million build emails.  This is transitory information, and I only want to know it when I am paying attention.  </p>
<h3>I'm in, how?</h3>
<ol>
<li>
Clone the code</p>
<pre class="brush: bash; gutter: false;">
git clone git://gist.github.com/374030.git /opt/cijabber
</pre>
</li>
<li>
Put in your Jabber/ GTalk creds and destination jabber account.<br />
<a href="http://mail.google.com/mail/signup">create a gmail account if you need to</a><br />
<a href="http://partychapp.appspot.com/">create a party chat room (couldn't be easier)</a></p>
<pre class="brush: ruby; gutter: false;">
##############################
JABBER_USERNAME = &quot;example@gmail.com&quot;
JABBER_PASSWORD = &quot;secret&quot;
DESTINATION_JABBER_USERNAME = &quot;my_cijabber@partychapp.appspotchat.com&quot;
##############################
</pre>
</li>
<li>
Setup Crontab for reminders</p>
<pre class="brush: bash; gutter: false;">
# m h  dom mon dow   command
*/5 * * * * /opt/cijabber/CIJabber.rb /opt/my_git_repo_for_cijoe &gt; /dev/null
</pre>
</li>
<li>
Edit the build-worked and build-failed hooks:</p>
<pre class="brush: bash; gutter: false;">
#!/bin/bash

/opt/cijabber/CIJabber.rb /opt/my_git_repo_for_cijoe
</pre>
</li>
</ol>
<h3>Keep build stats with Party Chat's additional features</h3>
<p><a href="http://partychapp.appspot.com/">Party Chat</a> still rocks.  Not only does it provide a communication hub for you and your team, but it also has some cool bonus features that we can use to keep track of some stats.  It's trivial to keep track of number of builds per-project, as well as the number of failures and successes.</p>
<p><img src="http://dev.nuclearrooster.com/wp-content/uploads/2010/04/Screen-shot-2010-04-26-at-3.22.23-PM.png" alt="" title="Jabber with PartyChatApp" width="499" height="228" class="aligncenter size-full wp-image-316" /></p>
<h3>Private API Disclaimer</h3>
<p>This script digs into CIJoe's private API, so it may not work forever.  CIJoe provides the ability to call a script when a build passes or fails.  We'll use this functionality, but it isn't quite enough.  I like the idea of continually being reminded of a failed build.  For this, a crontab can be used to run the script, which uses CIJoe's private API to parse data about the last build.</p>
<h3>Code!</h3>
<p>Please give updates on the gist, or in the comments below.</p>
<p><script src="http://gist.github.com/374030.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.nuclearrooster.com/2010/04/27/cijabber-get-cijoe-build-notifications-and-reminders-via-jabber/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
