<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Shannon McPherson's Web Log</title>
	<atom:link href="http://mcphersonz.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mcphersonz.wordpress.com</link>
	<description>random crap, mostly about programming or opperating systems.</description>
	<lastBuildDate>Wed, 29 Jul 2009 06:11:56 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='mcphersonz.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/9aa4358306dc01fdf45c7063218041fb?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Shannon McPherson's Web Log</title>
		<link>http://mcphersonz.wordpress.com</link>
	</image>
			<item>
		<title>Chinny Fight!</title>
		<link>http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/</link>
		<comments>http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 06:11:56 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=97</guid>
		<description><![CDATA[I neglected to feed my chinchillas for a day &#8212; then I fed them &#38; was surprised to find myself in the midst of a &#8230;&#8230; CHINCHILLA FIGHT!!!!       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=97&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I neglected to feed my chinchillas for a day &#8212; then I fed them &amp; was surprised to find myself in the midst of a &#8230;&#8230; CHINCHILLA FIGHT!!!!</p>

<a href='http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/100_2863/' title='100_2863'><img width="150" height="112" src="http://mcphersonz.files.wordpress.com/2009/07/100_2863.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="" title="100_2863" /></a>
<a href='http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/100_2864/' title='100_2864'><img width="150" height="112" src="http://mcphersonz.files.wordpress.com/2009/07/100_2864.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="" title="100_2864" /></a>
<a href='http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/100_2865/' title='100_2865'><img width="150" height="112" src="http://mcphersonz.files.wordpress.com/2009/07/100_2865.jpg?w=150&#038;h=112" class="attachment-thumbnail" alt="" title="100_2865" /></a>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=97&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/07/28/chinny-fight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>Why I choose git over Perforce, SVN and other source control systems&#8230;</title>
		<link>http://mcphersonz.wordpress.com/2009/06/03/why-i-choose-git-over-perforce-svn-and-other-source-control-systems/</link>
		<comments>http://mcphersonz.wordpress.com/2009/06/03/why-i-choose-git-over-perforce-svn-and-other-source-control-systems/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 12:18:41 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[source control]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=88</guid>
		<description><![CDATA[Here are the top reasons I am a git fan:
- price. Depending in the implementation choice, it can be free (as in free beer!). Using a service like github.com to facilitate in a centralized workflow is super cheep. Currently for a year&#8217;s service for 10 developers we are paying about $25 a year per developer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=88&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Here are the top reasons I am a git fan:</p>
<p>- price. Depending in the implementation choice, it can be free (as in free beer!). Using a service like github.com to facilitate in a centralized workflow is super cheep. Currently for a year&#8217;s service for 10 developers we are paying about $25 a year per developer for the github service (and 20 &#8220;private&#8221; repositories). Scaled up a bit it&#8217;s relatively the same cost at $24 a month per developer for 1 year (100 developers, 300 private repositories).</p>
<p>- cheap local branching, merging &amp; tagging. It&#8217;s sinfully easy to do. As fast as you can 10 characters and a branch name, it is done. It&#8217;s all local, so it&#8217;s virtually instant. Easy branching means you are more likely to do it &amp; that can lead to better development as a whole. Isolating a feature, bug fix or re-factoring into a branch as a standard can be very rewarding. Merging is relatively straight forward, fast &amp; in some cases completely automatic. Tagging allows for you to give the code a name at any point in time &#8212; like &#8220;release 1.2&#8243;, or &#8220;hotfix&#8221;. You can very easily switch to a given tag (or any commit) and work on it via a new local branch.</p>
<p>- Fast. everything is local. Besides syncing up with other people, pretty much every interaction with the source control is local. This becomes a huge time saver &#8212; and again, when it&#8217;s quick you are more inclined to use it. Branching, merging,  looking at code history and committing are all practically instant tasks. Yes, git is faster than most source control systems out there. Oh yeah, and all revisions of every file are always locally available for you to inspect. Again, this can be a big performance booster of you are comfortable with the command prompt. When you do need to do network opperations like pulls &amp; pushes, it is also very fast. Git uses diffs and compression to make these also very fast. &#8220;raw, blistering speed.&#8221; Does that make you think of other source control systems?? no? didn&#8217;t think so&#8230;.   <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>- several workflows. You can follow the traditional centralized repository approach as we currently do with github. A master repository is designated, and people pull/push to that repository using it as a centralized sync area. This is very similar to the perforce workflow. Alternatively though, there is a &#8220;Dictator and Lieutenants&#8221; workflow that basically allows for anyone to sync up with anyone else&#8217;s repository. A &#8220;circle of trust&#8221; is applied here each developer trusts other developers in their commits &#8212; and each developer trusts certain people with that they have contributed. This works well for larger groups. Think of a triangle scheme, with the sr. developer (the dictator) trusts a few others (lieutenants), and those lieutenants each trust a few others, etc.</p>
<p>- easy to learn. You basically learn what you need to do your tasks. You may only need to do a few things with the files you are putting under source control. Maybe you only need to know &#8220;git pull&#8221;.  If you only need to make sure you have backups of a file locally then you only need to know 1 or 2 commands. Done. If you are a source control master, there&#8217;s more git functionality than I can shake a stick at&#8230;. I get by using probably 2% of git&#8217;s core functionality. And when I need more, I do a google search &amp; there&#8217;s a ton of user contributed info on how to accomplish a given task at hand.</p>
<p>The important thing to note here is that git has some major benefits in certain cases &amp; although it is not for everyone, I think it has some major wins in certain situations.</p>
<p>As Mr. Natural said &#8220;Get the right tool for the right job&#8221;. In other words, one tool may not be a good fit for any job at hand.</p>
<p>Oh yeah, github.com is the bomb. Look out for <a href="http://fi.github.com" rel="nofollow">http://fi.github.com</a>. It look killer if you need a github UI but internally (possibly due to corporate policies / restrictions)</p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=88&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/06/03/why-i-choose-git-over-perforce-svn-and-other-source-control-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>The RSpec Book by David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North</title>
		<link>http://mcphersonz.wordpress.com/2009/05/13/the-rspec-book-by-david-chelimsky-dave-astels-zach-dennis-aslak-helles%c3%b8y-bryan-helmkamp-dan-north/</link>
		<comments>http://mcphersonz.wordpress.com/2009/05/13/the-rspec-book-by-david-chelimsky-dave-astels-zach-dennis-aslak-helles%c3%b8y-bryan-helmkamp-dan-north/#comments</comments>
		<pubDate>Wed, 13 May 2009 08:39:46 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=80</guid>
		<description><![CDATA[I felt compelled to post this because this book is just great &#38; I wanted to share it with anyone who is interested. If you are just getting into behavior driven development (BDD), RSpec or cucumber then I have a book to recommend to you! Having heard nothing but good things, I recently purchased &#8220;The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=80&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I felt compelled to post this because this book is just great &amp; I wanted to share it with anyone who is interested. If you are just getting into behavior driven development (BDD), RSpec or cucumber then I have a book to recommend to you! Having heard nothing but good things, I recently purchased &#8220;<a href="http://www.pragprog.com/titles/achbd/the-rspec-book" target="_blank">The RSpec Book</a>&#8221; by David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North from Pragmatic Programmers.</p>
<p>It&#8217;s a easy read that is packed with great tips on how to approach BDD &#8211; as well as detailed info on rspec&#8217;s features, and tons of other very useful stuff.</p>
<p>The book is in beta right now (not finished) but you can purchase &amp; get the PDF right now. As updates are made you can re-download the PDF. Once the book is actually finished as paperback will be sent to me. I can&#8217;t wait!</p>
<p>Worth mentioning is that I  am just a fan &#8212; not affiliated with anyone who makes money from this, nor do I make any money for posting this or my website in general. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/80/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=80&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/05/13/the-rspec-book-by-david-chelimsky-dave-astels-zach-dennis-aslak-helles%c3%b8y-bryan-helmkamp-dan-north/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>Key Features for Rails v2.2, Rails v2.3 and the upcoming Rails v3.0</title>
		<link>http://mcphersonz.wordpress.com/2009/05/13/key-features-for-rails-v2-2-rails-v2-3-and-the-upcoming-rails-v3-0/</link>
		<comments>http://mcphersonz.wordpress.com/2009/05/13/key-features-for-rails-v2-2-rails-v2-3-and-the-upcoming-rails-v3-0/#comments</comments>
		<pubDate>Wed, 13 May 2009 08:32:43 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=78</guid>
		<description><![CDATA[Rails 2.2 new features of interest
- Ruby 1.9 and JRuby support
- Transactional Migrations that allow multi-step migrations to be rolled into a transaction.
- Memoization for caching methods for a request. Allows caching based on passed params as well.
- *!* Connection Pooling lets Rails distribute database requests across a pool of database connections
- find_last_by_attribute finder, for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=78&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>Rails 2.2 new features of interest</strong><br />
- Ruby 1.9 and JRuby support<br />
- Transactional Migrations that allow multi-step migrations to be rolled into a transaction.<br />
- Memoization for caching methods for a request. Allows caching based on passed params as well.<br />
- *!* Connection Pooling lets Rails distribute database requests across a pool of database connections<br />
- find_last_by_attribute finder, for example to get the last user who signed up from London:  User.find_last_by_city(&#8216;London&#8217;)<br />
- Layouts for ActionMailer &#8211; you can now use layouts in your ActionMailer views.<br />
- *!* To avoid deployment issues and make Rails applications more self-contained, it’s possible to place copies of all of the gems that your Rails application requires in /vendor/gems.<br />
# rake gems:install to install missing gems to the computer<br />
# rake gems:unpack to place a copy of the required gems into /vendor/gems<br />
# rake gems:unpack:dependencies to get copies of the required gems and their dependencies into /vendor/gems</p>
<p><strong>Rails 2.3 new features of interest</strong><br />
- ruby 1.9.1 support<br />
- Engines allow for nested rails applications.<br />
- Metal allows you to define a area of code that completely bypasses most rails things &#8211; does not go through routing, no logging, etc &#8211; for areas that need high performance or that get called frequently.<br />
- Nested transactions within ActiveRecord<br />
- Dynamic Scopes: Order.scoped_by_customer_id(12).scoped_by_status(&#8220;open&#8221;)  &#8212; no definition needed for dynamic scopes, just works.<br />
- Multiple Conditions for Callbacks. When using Active Record callbacks, you can now combine :if and :unless options on the same callback, and supply multiple conditions as an array:<br />
for example: before_save :update_credit_rating, :if =&gt; :active,  :unless =&gt; [:admin, :cash_only]</p>
<p><strong>Rails 3.0 new features of interest (David Heinemeier Hansson KEYNOTE FROM RAILSCONF09)</strong><br />
DHH&#8217;s Philosophy of rails 3:<br />
- Lock up all the unicorns. You can&#8217;t please everyone all the time, so don&#8217;t focus on the unicorns.<br />
- No holy cows. Nothing is sacred in rails &amp; everything is up for debate. Don&#8217;t look any anything we have &amp; feel like that is the way it has to be.<br />
Major Themes:<br />
- New routes. Faster, route by subdomain, user agents, etc. Rack to other rack machinery.<br />
- XSS protection (cross side injection). By default all output in views will be escaped. No more use of &lt;%= h something %&gt;. Assumed by default.<br />
- Javascript goes Unobtrusive &amp; Agnostic. Much less JS is injected into page &amp; instead unobtrusive JS is used to achieve same effect.<br />
- More Agnosticism.<br />
- Action ORM is a slim proxy wrapper for ORM tools that allows for easy swapping of ORM implementation,<br />
- Generators (script/generator) will for example allow you to specify that rspec is used, so script/generate model will create a rspec test file for model.<br />
- Refactoring<br />
- Abstract Controller takes similarities between for example ActionController &amp; ActionMailer and combines them into one code base.<br />
- Cherry picking from ActiveSupport allowing you to pick parts that are used instead of pulling in the entire library.<br />
- Increased performance / speed with callbacks.</p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=78&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/05/13/key-features-for-rails-v2-2-rails-v2-3-and-the-upcoming-rails-v3-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>Recommended Gems, Plugins and various notes on what&#8217;s hot in the ruby on rails world</title>
		<link>http://mcphersonz.wordpress.com/2009/05/13/recommended-gems-plugins-and-various-notes-on-whats-hot-in-the-ruby-on-rails-world/</link>
		<comments>http://mcphersonz.wordpress.com/2009/05/13/recommended-gems-plugins-and-various-notes-on-whats-hot-in-the-ruby-on-rails-world/#comments</comments>
		<pubDate>Wed, 13 May 2009 08:30:12 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=76</guid>
		<description><![CDATA[Performance Optimization
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
- optimization doesn&#8217;t end with speeding up my Ruby code (or Rails itself).
The performance of production application heavily depends on its environment &#8211; server filesystems, databases, load balancing solutions.
Testing
&#8212;&#8212;-
- use gems like UnitRecord or dust to cut off the database for unit testing. Mock all unit tests out to speed things up drastically.
- to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=76&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Performance Optimization<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
- optimization doesn&#8217;t end with speeding up my Ruby code (or Rails itself).<br />
The performance of production application heavily depends on its environment &#8211; server filesystems, databases, load balancing solutions.</p>
<p>Testing<br />
&#8212;&#8212;-<br />
- use gems like UnitRecord or dust to cut off the database for unit testing. Mock all unit tests out to speed things up drastically.<br />
- to scale large tests you can offload them to remote BAMs(Bad Ass Machines), or send tests to multiple processors. Deep Test allows you to spawn multiple remote threads to run functional tests<br />
- to benchmark a specific url you can use the ab (Apache HTTP server benchmarking tool) command:  ab -n 100 <a href="http://localhost:3000/quick_reply/list" rel="nofollow">http://localhost:3000/quick_reply/list</a><br />
- Errorlytics web service detects 404 errors via JS &amp; redirects user based on rules that you define at errorlytics.com &#8211; <a href="http://www.errorlytics.com/" rel="nofollow">http://www.errorlytics.com/</a><br />
- Using factories instead of fixtures.<br />
- Fixtures are more brittle &amp; they seperate the data from the test, creating a assumption that the data already exists &amp; is correct to begin with.<br />
- Factories &#8230;. Fixjour, Factory Girl, Object_daddy and Machinist are plugins that aim at creating factories.<br />
- Cucumber tips: <a href="http://media.railscasts.com/videos/159_more_on_cucumber.mov" rel="nofollow">http://media.railscasts.com/videos/159_more_on_cucumber.mov</a></p>
<p>Cucumber<br />
&#8212;&#8212;&#8211;<br />
- Write tests first, the run cucumber. To run a specific feature run: cucumber features/name.feature<br />
- Use output of cucumber to create stub step definitions.<br />
- Make each test pass, from the top down.</p>
<p>Feature: title<br />
In Order To [business value]<br />
As a [role]<br />
I want to [action] some feature</p>
<p>Scenatio: title<br />
When [context]<br />
And [more contect]<br />
When I do [action]<br />
And [other action]<br />
Then I should see [outcome]<br />
But I should not see [outcome]</p>
<p>Database<br />
&#8212;&#8212;&#8211;<br />
- CouchDB is a new way to think about database storage. Schema-less design. <a href="http://couchdb.apache.org/" rel="nofollow">http://couchdb.apache.org/</a></p>
<p>Video / Screen / Pod casts<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
<a href="http://railscasts.com/episodes" rel="nofollow">http://railscasts.com/episodes</a><br />
<a href="http://peepcode.com" rel="nofollow">http://peepcode.com</a><br />
<a href="http://pivotallabs.com/talks/" rel="nofollow">http://pivotallabs.com/talks/</a><br />
<a href="http://www.railsenvy.com/podcast" rel="nofollow">http://www.railsenvy.com/podcast</a><br />
<a href="http://confreaks.com/events" rel="nofollow">http://confreaks.com/events</a></p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=76&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/05/13/recommended-gems-plugins-and-various-notes-on-whats-hot-in-the-ruby-on-rails-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://media.railscasts.com/videos/159_more_on_cucumber.mov" length="33131697" type="video/quicktime" />
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>Favorite applications for OS X, Ubuntu and Windows</title>
		<link>http://mcphersonz.wordpress.com/2009/03/21/favorite-applications-for-os-x-ubuntu-and-windows/</link>
		<comments>http://mcphersonz.wordpress.com/2009/03/21/favorite-applications-for-os-x-ubuntu-and-windows/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 10:10:46 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=70</guid>
		<description><![CDATA[&#60;!&#8211;
Below is a list of my favorite applications for either OS X, Ubuntu linux, or Windows.
When I moved from windows to Ubuntu I kept looking for software that did what my favorite windows applications did. Similarly when I moved to OS X from Ubuntu I looked for more software that met my needs in Ubuntu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=70&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>&lt;!&#8211;<br />
Below is a list of my favorite applications for either OS X, Ubuntu linux, or Windows.</p>
<p>When I moved from windows to Ubuntu I kept looking for software that did what my favorite windows applications did. Similarly when I moved to OS X from Ubuntu I looked for more software that met my needs in Ubuntu or Windows. Although there are generally less options for OS X software, what is out there (or built into the OS) seems to work just as well or better than what I have been used to in my former favorite operating systems.</p>
<p>Here&#8217;s a list that I put together based on software that I use &amp; applications that I would recommend for the three operating system types that I have had daily experience with.</p>
<table style="table-layout:fixed;height:732px;" border="0" cellspacing="0" cellpadding="0" width="454">
<col width="145"></col>
<col width="113"></col>
<col width="108"></col>
<tbody>
<tr>
<td class="xl27" width="145" height="13"><strong>Functionality</strong></td>
<td class="xl24" width="113"><strong>OS X</strong></td>
<td class="xl24" width="105"><strong>Ubuntu</strong></td>
<td class="xl24" width="108"><strong>Windows</strong></td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Audio Backup (create MP3)</td>
<td class="xl26" width="113">iTunes</td>
<td class="xl26" width="105">Audio CD Extractor</td>
<td class="xl26" width="108">FreeRip, iTunes</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Calendar</td>
<td class="xl26" width="113">iCal</td>
<td class="xl26" width="105">Thunderbird, Evolution</td>
<td class="xl26" width="108">Outlook</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Data Backup</td>
<td class="xl26" width="113">Time Machine</td>
<td class="xl26" width="105">Time Vault</td>
<td class="xl26" width="108">DataKeeper, Norton Ghost</td>
</tr>
<tr>
<td class="xl25" width="145" height="39">Database Development</td>
<td class="xl26" width="113">MySQL Administrator, SQLDeveloper</td>
<td class="xl26" width="105">MySQL Administrator, SQLDeveloper</td>
<td class="xl26" width="108">MySQL Administrator, SQLDeveloper</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Drive Manager / Partition</td>
<td class="xl26" width="113">Disk Utility.app</td>
<td class="xl26" width="105">gparted</td>
<td class="xl26" width="108">Partition Magic</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Drive Usage Mapper</td>
<td class="xl26" width="113">Disk Inventory X.app</td>
<td class="xl26" width="105">Disk Usage Analyzer</td>
<td class="xl26" width="108">Drive Doppler</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">DVD Movie Backup</td>
<td class="xl26" width="113">JackTheRipper</td>
<td class="xl26" width="105">k9copy</td>
<td class="xl26" width="108">DVDShrink, RipIt4Me</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">DVD Player</td>
<td class="xl26" width="113">DVD Player.app</td>
<td class="xl26" width="105">Totem</td>
<td class="xl26" width="108">PowerDVD</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Email</td>
<td class="xl26" width="113">Mail.app, Entourage</td>
<td class="xl26" width="105">Thunderbird, Evolution</td>
<td class="xl26" width="108">Outlook, Eudora</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">FTP Client</td>
<td class="xl26" width="113">Transmit</td>
<td class="xl26" width="105">gFTP</td>
<td class="xl26" width="108">FlashFXP, CuteFTP, WS_FTP, Filezilla</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">FTP Server</td>
<td class="xl26" width="113">built in FTP server</td>
<td class="xl26" width="105">built in FTP server</td>
<td class="xl26" width="108">GuildFTP, Serv-U</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Graphic Manipulation</td>
<td class="xl26" width="113">Gimp, Photoshop</td>
<td class="xl26" width="105">Gimp</td>
<td class="xl26" width="108">Gimp, Photoshop, Paint Shop Pro</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Instant Messaging</td>
<td class="xl26" width="113">Adium, iChat</td>
<td class="xl26" width="105">Pidgin, Gaim</td>
<td class="xl26" width="108">Trillian</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Media Player</td>
<td class="xl26" width="113">VLC, QuickTime Player.app</td>
<td class="xl26" width="105">VLC, Totem</td>
<td class="xl26" width="108">VLC, MediaPlayerClassic</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Music Player</td>
<td class="xl26" width="113">iTunes</td>
<td class="xl26" width="105">Totem, Rhythmbox</td>
<td class="xl26" width="108">WinAmp, iTunes</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Office Suites</td>
<td class="xl26" width="113">Open Office, Microsoft Office</td>
<td class="xl26" width="105">Open Office</td>
<td class="xl26" width="108">Open Office, Microsoft Office</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">PDF Viewer</td>
<td class="xl26" width="113">Preview, Acrobat</td>
<td class="xl26" width="105">Acrobat</td>
<td class="xl26" width="108">Acrobat</td>
</tr>
<tr>
<td class="xl25" width="145" height="39">Peer to Peer / Fileshare</td>
<td class="xl26" width="113">Azureus/VUSE, Acquisition, BitTorrent</td>
<td class="xl26" width="105">Azureus/VUSE, Transmission</td>
<td class="xl26" width="108">Azureus/VUSE, Shareaza, LimeWire</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Photo Album</td>
<td class="xl26" width="113">iPhoto</td>
<td class="xl26" width="105">F-spot</td>
<td class="xl26" width="108">ACDSee</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Programmer Text Editor</td>
<td class="xl26" width="113">TextMate, TextEdit</td>
<td class="xl26" width="105">Kate, Komodo, Gedit</td>
<td class="xl26" width="108">UltraEdit, EditPad, Notepad</td>
</tr>
<tr>
<td class="xl25" width="145" height="26">Remote Control</td>
<td class="xl26" width="113">VNC, Screen Sharing.app, CoRD</td>
<td class="xl26" width="105">VNC, Remote Desktop Viewer</td>
<td class="xl26" width="108">VNC, Remote Desktop</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Terminal Client</td>
<td class="xl26" width="113">Terminal.app</td>
<td class="xl26" width="105">gnome-terminal</td>
<td class="xl26" width="108">Putty</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Video Editing</td>
<td class="xl26" width="113">iMovie</td>
<td class="xl26" width="105">avidemux</td>
<td class="xl26" width="108">VirtualDub</td>
</tr>
<tr>
<td class="xl25" width="145" height="39">Virtualization</td>
<td class="xl26" width="113">VMware Fusion, VirtualBox</td>
<td class="xl26" width="105">VMware Workstation, VirtualBox</td>
<td class="xl26" width="108">VMware Workstation, VirtualBox</td>
</tr>
<tr>
<td class="xl25" width="145" height="13">Web Browser</td>
<td class="xl26" width="113">Firefox, Safari</td>
<td class="xl26" width="105">Firefox</td>
<td class="xl26" width="108">Firefox, IE</td>
</tr>
</tbody>
</table>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/70/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/70/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/70/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=70&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/03/21/favorite-applications-for-os-x-ubuntu-and-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>Finally made the switch to the other side&#8230; (AKA: a former windows user that moved to Mac OS X)</title>
		<link>http://mcphersonz.wordpress.com/2009/03/07/finally-made-the-switch-to-the-other-side-aka-a-former-windows-user-that-moved-to-mac-os-x/</link>
		<comments>http://mcphersonz.wordpress.com/2009/03/07/finally-made-the-switch-to-the-other-side-aka-a-former-windows-user-that-moved-to-mac-os-x/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 09:52:09 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[apple]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=64</guid>
		<description><![CDATA[It&#8217;s official. Apple&#8217;s Mac OS X is my favorite operating system.
Here&#8217;s the story if you are at all interested:
My first computer was a Apple IIe (that was before windows existed, of course). I then had a Mac SE (released around the time Microsoft windows was released). My parents then bought me a killer computer &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=64&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It&#8217;s official. Apple&#8217;s Mac OS X is my favorite operating system.</p>
<p>Here&#8217;s the story if you are at all interested:</p>
<p>My first computer was a Apple IIe (that was before windows existed, of course). I then had a Mac SE (released around the time Microsoft windows was released). My parents then bought me a killer computer &#8211; it was a 100 mhz 486 that ran Windows 3.1.</p>
<p>I used windows for another 15 years. Windows 3.1, Windows 95, Windows 98, Windows 98se, Windows NT 4, Windows 2000, Windows XP&#8230;&#8230; Wow. Been there, done that. It was cool for a while because I didn&#8217;t know a lot. I kept learning &amp; kept using windows.</p>
<p>Over and over again I had to deal with the same old Windows crap. Bad performance. Bad UI. Bad experiences in general&#8230;</p>
<p>So I looked for alternative solutions. I was anti-mac for a long time. I had hard feeling about mac because of the lack of software at the time, the proprietary hardware, the lack of auxiliary hardware, the high prices&#8230;. well almost all of that has changed (basically everything but the high prices).</p>
<p>I made a dedicated switched to Ubuntu a few years ago &#8211; meaning that I ran it as my primary OS &amp; basically only ran windows when I had to &amp; would do so via a virtual machine anytime I could. Ubuntu Linux is a beautiful operating system &amp; idea in general. It has huge potential &amp; has had a huge impact in the overall acceptance of Linux based operating systems.</p>
<p>I can&#8217;t say this enough. I love Linux. I also love OS X&#8230;</p>
<p>About six months my employer bought me a MacBook Pro. My goodness, I have not looked back.</p>
<p>Not only is it basically built on Linux, OS X has an amazing GUI and unparalleled stability. That&#8217;s what sold me. The GUI is more intuitive &amp; less obtrusive then any windows or Linux solution I have ever encountered.</p>
<p>Compatibility is also amazing. Many Linux apps run under OS X, and if I ever need to I can run windows &amp; ubuntu with great performance via virtual machines.</p>
<p>Stability is better than windows or ubuntu with my experience &amp; my usage patterns. Adding and removing software, tweaking settings, applying system updates, etc all seem to not affect my system&#8217;s stability. Rarely do I have to restart my system or end applications.</p>
<p>Toss windows. Embrace Linux. Use OS X.</p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/64/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/64/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/64/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=64&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2009/03/07/finally-made-the-switch-to-the-other-side-aka-a-former-windows-user-that-moved-to-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>
	</item>
		<item>
		<title>autotest+mumbles for Growl like notifications</title>
		<link>http://mcphersonz.wordpress.com/2008/08/27/autotestmumbles-for-growl-like-notifications/</link>
		<comments>http://mcphersonz.wordpress.com/2008/08/27/autotestmumbles-for-growl-like-notifications/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 03:01:01 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=45</guid>
		<description><![CDATA[I was working with a colleague today who was kind enough to introduce me to autotest for continuous test integration. Change a file in your app &#38; tests are automatically run for you&#8230; Nice.
One thing that really stood out aesthetically was how status messages were passed to Growl (in OSX) for eye-pleasing popup notifications outside [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=45&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was working with a colleague today who was kind enough to introduce me to autotest for continuous test integration. Change a file in your app &amp; tests are automatically run for you&#8230; Nice.</p>
<div id="attachment_52" class="wp-caption alignright" style="width: 310px"><a href="http://mcphersonz.files.wordpress.com/2008/08/screenshot.png"><img class="size-medium wp-image-52" src="http://mcphersonz.files.wordpress.com/2008/08/screenshot.png?w=300&#038;h=225" alt="my mumble alert" width="300" height="225" /></a><p class="wp-caption-text">screenshot of my mumble alert (top-right)</p></div>
<p>One thing that really stood out aesthetically was how status messages were passed to Growl (in OSX) for eye-pleasing popup notifications outside of a terminal window.</p>
<p>Being a <a href="http://www.ubuntu.com/getubuntu/download" target="_blank">ubuntu</a> user, I started looking for a similar solution for linux. It turns out there is a great utility for linux that resembles Growl &#8212; it&#8217;s called <a href="http://www.mumbles-project.org/" target="_blank">Mumbles</a>. The challenge was getting Mumbles to work with autotest.</p>
<p>After searching google, I found <a href="http://caffeinatedcode.wordpress.com/2008/02/22/mumble-your-tests/" target="_blank">one post that got me started</a>. This is a good post, but I had to fill in a few blanks to get everything to work.</p>
<p>Here&#8217;s what I did:</p>
<ol>
<li>Install ZenTest:</li>
</ol>
<ul>
<blockquote>
<li>sudo gem install ZenTest</li>
</blockquote>
</ul>
<ol>
<li>Install Mumbles
<ul>
<li>grab the latest .deb file or source from the <a href="http://www.mumbles-project.org/" target="_blank">mumbles-project</a> page:</li>
<blockquote>
<li>wget <a href="https://sourceforge.net/project/showfiles.php?group_id=193587&amp;package_id=227998" rel="nofollow">https://sourceforge.net/project/showfiles.php?group_id=193587&amp;package_id=227998</a></li>
</blockquote>
<li>test out mumbles by running:</li>
<blockquote>
<li>mumbles &amp;</li>
<li>mumbles-send &#8216;a title&#8217; &#8216;it works!!&#8217;</li>
</blockquote>
<li>assuming mumbles has been installed correctly, you should see a little notification pop up. I recommend that at this point you add mumbles to your system session so it will start when you login to ubuntu.</li>
<blockquote>
<li>gnome-session-properties</li>
<li>add -&gt; &#8220;mumbles&#8221; for name &amp; command -&gt; ok</li>
</blockquote>
</ul>
</li>
<li>Install ruby-dbus. I could not find a gem, so install manually:
<ul>
<li>grab the latest from <a href="https://trac.luon.net/ruby-dbus/" rel="nofollow">https://trac.luon.net/ruby-dbus/</a></li>
<blockquote>
<li>wget <a href="https://trac.luon.net/data/ruby-dbus/releases/ruby-dbus-0.2.1.tar.gz" rel="nofollow">https://trac.luon.net/data/ruby-dbus/releases/ruby-dbus-0.2.1.tar.gz</a></li>
</blockquote>
<li>extract the archive to a local directory</li>
<blockquote>
<li>tar -xvf ./ruby-dbus-0.2.1.tar.gz</li>
</blockquote>
<li>look over the README file &#8212; it provides simple instructions:</li>
<blockquote>
<li>ruby setup.rb config</li>
<li>ruby setup.rb setup</li>
<li>sudo ruby setup.rb install</li>
</blockquote>
<li>test this out by requiring dbus via irb:</li>
</ul>
<ul>
<blockquote>
<li>irb</li>
<li>irb(main):001:0&gt; require &#8216;dbus&#8217;</li>
<li>=&gt; true</li>
</blockquote>
</ul>
</li>
<li>Create a .autotest file in your application root directory (or your home directory to make the settings global) Thanks to <a href="//caffeinatedcode.wordpress.com/2008/02/22/mumble-your-tests/" target="_blank">CaffinatedCode</a> for this script &#8212; they wrote it:</li>
</ol>
<ul>
<blockquote>
<li>require &#8216;dbus&#8217;def send_message(title, message, icon)<br />
begin<br />
bus = DBus::SessionBus.instance<br />
mumbles_service = bus.service(&#8220;org.mumblesproject.Mumbles&#8221;)<br />
mumbles = mumbles_service.object(&#8220;/org/mumblesproject/Mumbles&#8221;)<br />
mumbles.introspect<br />
mumbles_iface = mumbles["org.mumblesproject.Mumbles"]<br />
sig = mumbles_iface.signals["Notify"]<br />
bus.emit(mumbles_service, mumbles, mumbles_iface, sig, title, message, icon)<br />
rescue Exception =&gt; e<br />
end<br />
end</p>
<p>Autotest.add_hook :ran_command do |at|<br />
begin<br />
output = at.results.last.slice(/(\d+) examples?, (\d+) failures?(, \d+ pending)?/)<br />
if output =~ /.*[1-9] failure.*/ then<br />
send_message(&#8220;FAIL&#8221;, &#8220;#{output}&#8221;, &#8220;fail.png&#8221;)<br />
else<br />
send_message(&#8220;PASS&#8221;, &#8220;#{output}&#8221;, &#8220;pass.png&#8221;)<br />
end<br />
rescue Exception =&gt; e<br />
end<br />
end</li>
</blockquote>
</ul>
<p>Now for the fun part. From within your app root, type:</p>
<p>autotest</p>
<p>If everything works out, you should see a few things flash by &#8211; I get a error about &#8220;Insecure world writable dir&#8221; in my home dir. I just ignored that. After that, you should see a test summary in the terminal window, followed by a mumbles popup notificaton. Kick ass!</p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcphersonz.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcphersonz.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=45&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2008/08/27/autotestmumbles-for-growl-like-notifications/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>

		<media:content url="http://mcphersonz.files.wordpress.com/2008/08/screenshot.png?w=300" medium="image">
			<media:title type="html">my mumble alert</media:title>
		</media:content>
	</item>
		<item>
		<title>My Computer Setup</title>
		<link>http://mcphersonz.wordpress.com/2008/08/08/my-computer-setup/</link>
		<comments>http://mcphersonz.wordpress.com/2008/08/08/my-computer-setup/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 04:50:32 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=31</guid>
		<description><![CDATA[I was in a cleaning mood today &#38; eventually got to my desk where my PC is at. I think cleaning was waypast due&#8230; anyway &#8211; it was a photo oppurtunity. Here&#8217;s my current setup:
Laptop Specs: IBM T61, Pentium Dual Core Centrino Duo @ 1.83GHz, 1.5gb ram, 50gb hard drive, docking station, Ubuntu Hardy Heron [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=31&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was in a cleaning mood today &amp; eventually got to my desk where my PC is at. I think cleaning was waypast due&#8230; anyway &#8211; it was a photo oppurtunity. Here&#8217;s my current setup:</p>
<p><strong>Laptop Specs:</strong> IBM T61, Pentium Dual Core Centrino Duo @ 1.83GHz, 1.5gb ram, 50gb hard drive, docking station, Ubuntu Hardy Heron v8.04<br />
<strong>Desktop Specs:</strong> MSI P35D3 motherboard, Pentium Core 2 Duo @2.66GHz, 3.2gb DDR3-1066 ram, 2x 500gb and 1x 100gb internal hard drives, GeForce 8800 GTS video card with 512mb memory, Ubuntu Hardy Heron v8.04</p>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_34" class="wp-caption alignleft" style="width: 82px"><a href="http://mcphersonz.files.wordpress.com/2008/08/100_0533.jpg"><img class="alignleft size-thumbnail wp-image-32" src="http://mcphersonz.files.wordpress.com/2008/08/100_0533.jpg?w=72&#038;h=96" alt="" width="72" height="96" /></a><p class="wp-caption-text">Desktop setup</p></div></td>
<td>
<p><div id="attachment_34" class="wp-caption alignleft" style="width: 137px"><a href="http://mcphersonz.files.wordpress.com/2008/08/100_0531.jpg"><img class="size-thumbnail wp-image-34" src="http://mcphersonz.files.wordpress.com/2008/08/100_0531.jpg?w=127&#038;h=95" alt="Desktop setup" width="127" height="95" /></a><p class="wp-caption-text">Desktop setup</p></div></td>
<p><a href="http://mcphersonz.files.wordpress.com/2008/08/100_05322.jpg"><br />
</a></p>
<td>
<p><div id="attachment_42" class="wp-caption alignleft" style="width: 137px"><a href="http://mcphersonz.files.wordpress.com/2008/08/100_0532b.jpg"><img class="size-thumbnail wp-image-42" src="http://mcphersonz.files.wordpress.com/2008/08/100_0532b.jpg?w=127&#038;h=95" alt="Books that made it to my desk..." width="127" height="95" /></a><p class="wp-caption-text">Books that made it to my desk... What&#39;s that under my right monitor? Is that a PHP book? hahaha</p></div></td>
</tr>
</tbody>
</table>
<p><strong>Top:</strong> APC Back-UPS RS 1500, 6 external hard drives (a little over 3 terabytes of storage space), PC painted by my friend Nick, and Laptop.<br />
<strong>Left:</strong> 22&#8243; Element Flat TV attached to my desktop via HDMI<br />
<strong>Right</strong>: 22&#8243; Samsung SnycMaster 226bw monitor attached to my laptop via docked vga.</p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcphersonz.wordpress.com/31/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcphersonz.wordpress.com/31/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=31&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2008/08/08/my-computer-setup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>

		<media:content url="http://mcphersonz.files.wordpress.com/2008/08/100_0533.jpg?w=72" medium="image" />

		<media:content url="http://mcphersonz.files.wordpress.com/2008/08/100_0531.jpg?w=127" medium="image">
			<media:title type="html">Desktop setup</media:title>
		</media:content>

		<media:content url="http://mcphersonz.files.wordpress.com/2008/08/100_0532b.jpg?w=127" medium="image">
			<media:title type="html">Books that made it to my desk...</media:title>
		</media:content>
	</item>
		<item>
		<title>What&#8217;s Poignant? Chunky Bacon!</title>
		<link>http://mcphersonz.wordpress.com/2008/07/26/whats-poignant-chunky-bacon/</link>
		<comments>http://mcphersonz.wordpress.com/2008/07/26/whats-poignant-chunky-bacon/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 18:24:31 +0000</pubDate>
		<dc:creator>mcphersonz</dc:creator>
				<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://mcphersonz.wordpress.com/?p=25</guid>
		<description><![CDATA[I feel like I have been in a cave for the last 6 months&#8230; Well, I sorta have. I&#8217;ve been working on a rails project for Epocrates.com for the last 6 months &#8212; a type of social network that joins wall street with MDs opted into market research. What a great learning experience &#38; opportunity. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=25&subd=mcphersonz&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><img class="alignleft" style="margin:10px;" src="http://photos3.meetupstatic.com/photos/event/e/1/9/4/global_2097748.jpeg" alt="Chunky Bacon" width="180" height="152" />I feel like I have been in a cave for the last 6 months&#8230; Well, I sorta have. I&#8217;ve been working on a rails project for <a href="http://www.epocrates.com" target="_blank">Epocrates.com</a> for the last 6 months &#8212; a type of social network that joins wall street with MDs opted into market research. What a great learning experience &amp; opportunity. It&#8217;ll be great one day&#8230;</p>
<div class="mceTemp">
<p>Anyway, I just discovered the &#8220;<a title="Why's (Poignant) Guide to Ruby" href="http://poignantguide.net/ruby/" target="_blank">Why&#8217;s (Poignant) Guide to Ruby</a>&#8221; today when I was looking at local ruby groups on <a title="San Jose Ruby Hackfest" href="http://ruby.meetup.com/117/" target="_blank">meetup.com</a> &#8211; I noticed a chunky bacon comic &amp; remembered a co-worker&#8217;s printout of one of these. &#8220;What is this?&#8221; I asked myself. 1 min on google &amp; there I was&#8230;. reading over ruby goodness &amp; chuckling over &#8220;Chunky Bacon&#8221; comics&#8230;. They grow on you &#8211; trust me.</div>
<p>I could only get to chapter 4 today (F.Y.I. A.D.D.4-I) &#8212; but it was a nice fresh take on ruby &amp; programming in general. Rather basic &amp; elementary so far, but recommended nonetheless.I never thought of an array as a caterpillar&#8230;  <a href="http://poignantguide.net/ruby/" target="_blank"></a></p>
<p><a href="http://poignantguide.net/ruby/" target="_blank">Check it out if you have not already</a>!</p><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mcphersonz.wordpress.com/25/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mcphersonz.wordpress.com/25/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mcphersonz.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mcphersonz.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mcphersonz.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mcphersonz.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mcphersonz.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mcphersonz.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mcphersonz.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mcphersonz.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mcphersonz.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mcphersonz.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mcphersonz.wordpress.com&blog=1079187&post=25&subd=mcphersonz&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://mcphersonz.wordpress.com/2008/07/26/whats-poignant-chunky-bacon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/021b171a2eca6472ee63699c3abeafbb?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96" medium="image">
			<media:title type="html">mcphersonz</media:title>
		</media:content>

		<media:content url="http://photos3.meetupstatic.com/photos/event/e/1/9/4/global_2097748.jpeg" medium="image">
			<media:title type="html">Chunky Bacon</media:title>
		</media:content>
	</item>
	</channel>
</rss>