<?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>Hathaway</title>
	<atom:link href="http://hathaway.cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://hathaway.cc</link>
	<description>Husband, father, engineer, and entrepreneur.</description>
	<lastBuildDate>Thu, 05 Dec 2013 17:57:52 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.7.1</generator>
	<item>
		<title>Delete specific jobs from a Resque queue</title>
		<link>http://hathaway.cc/2013/12/delete-specific-jobs-from-a-resque-queue/</link>
		<comments>http://hathaway.cc/2013/12/delete-specific-jobs-from-a-resque-queue/#comments</comments>
		<pubDate>Thu, 05 Dec 2013 17:26:44 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[How To's]]></category>

		<guid isPermaLink="false">http://hathaway.cc/?p=644</guid>
		<description><![CDATA[This is a handy little piece of code in case you have jobs of a certain type that you want deleted from your Resque queues. The Resque.destroy method allows you to define the queue to clean up and the class name of the job type you want removed. The following call will remove all jobs [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>This is a handy little piece of code in case you have jobs of a certain type that you want deleted from your Resque queues. The <a href="http://rubydoc.info/github/defunkt/resque/Resque/Job#destroy-class_method" target="_blank"><code>Resque.destroy</code></a> method allows you to define the queue to clean up and the class name of the job type you want removed. </p>
<p>The following call will remove all jobs of class &#8216;UpdateGraph&#8217;:</p>
<p><code>Resque::Job.destroy(queue, 'UpdateGraph')</code></p>
<p>You can also specify arguments to filter out certain jobs of that type:</p>
<p><code>Resque::Job.destroy(queue, 'UpdateGraph', 'foo')</code></p>
<p>Keep in mind the performance of this function is not fast:</p>
<blockquote><p>This method can be potentially very slow and memory intensive, depending on the size of your queue, as it loads all jobs into a Ruby array before processing.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2013/12/delete-specific-jobs-from-a-resque-queue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Integrating batsd with graphite and statsd</title>
		<link>http://hathaway.cc/2013/01/integrating-batsd-with-graphite-and-statsd/</link>
		<comments>http://hathaway.cc/2013/01/integrating-batsd-with-graphite-and-statsd/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 23:54:37 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://hathaway.cc/?p=622</guid>
		<description><![CDATA[At Mailprotector we recently integrated batsd with our graphite statistics and metrics system. The result is a faster and native interface for querying our metrics data using ruby. This change has made it easy for us to create our own dashboards and reports in our Rails apps. Since batsd was built with compatibility for statsd, [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>At <a href="http://www.mailprotector.com">Mailprotector</a> we recently integrated <a href="https://github.com/noahhl/batsd">batsd</a> with our <a href="http://graphite.readthedocs.org">graphite</a> statistics and metrics system. The result is a faster and native interface for querying our metrics data using ruby. This change has made it easy for us to create our own dashboards and reports in our Rails apps.</p>
<p>Since batsd was built with compatibility for <a href="https://github.com/etsy/statsd/">statsd</a>, integrating was simple. Using the repeater option for statsd, we are able to continue to send the data to graphite but also repeat it to our batsd system. </p>
<p>Here is an example of the repeater configuration.</p>
<pre>
backends: [ "./backends/graphite", "./backends/repeater" ],
repeater: [ { host: '1.2.3.4', port: 8125 } ]
</pre>
<p>Now we have the data in two places. We can also optimize the retention in batsd for our needs there and keep using graphite setup the way it was.</p>
<h2>The Batsd Client Gem</h2>
<p>We needed a client to query the data from batsd for our dashboards and reports we wanted to build in our internal Rails apps. There is an example ruby client provided in the batsd repository but nothing packaged up and ready to go. So using that example as a starting point, I created a <a href="https://rubygems.org/gems/batsd">batsd ruby client</a> and bundled it up as a gem. </p>
<h2>Installation</h2>
<p>It&#8217;s a simple gem installation.</p>
<pre>gem install batsd</pre>
<p>Or you can include it in your Gemfile.</p>
<pre>gem "batsd"</pre>
<h2>Getting Started</h2>
<p>You can connect to Batsd by instantiating the Batsd class:</p>
<pre class="prettyprint lang-ruby">
client = Batsd.new
</pre>
<p>This assumes Batsd was started with a default configuration, and it listening on `localhost`, port `8127`. If you need to connect to a remote server or a different port, pass in the appropriate options:</p>
<pre class="prettyprint lang-ruby">
client = Batsd.new(:host =&gt; &#34;10.0.0.1&#34;, :port =&gt; 8127)
</pre>
<p>The options and defaults are:</p>
<pre class="prettyprint lang-ruby">
:host =&gt; &#34;127.0.0.1&#34;
:port =&gt; 8127
:timeout =&gt; 2000 #milliseconds
:max_attempts =&gt; 2
</pre>
<p>Now you can grab the list of available keys:</p>
<pre class="prettyprint lang-ruby">
keys = client.available
</pre>
<p>To pull the stats for a key:</p>
<pre class="prettyprint lang-ruby">
start_timestamp = Time.now - (60*60) # 1 hour ago
end_timestamp = Time.now
stats = client.stats(&#34;metric_name&#34;, start_timestamp, end_timestamp)
</pre>
<p>Each stat is returned as a hash with a `:timestamp` and `:value`. To pull only the timestamps or values for a range:</p>
<pre class="prettyprint lang-ruby">
start_timestamp = Time.now - (60*60) # 1 hour ago
end_timestamp = Time.now
values = client.values(&#34;metric_name&#34;, start_timestamp, end_timestamp)
timestamps = client.timestamps(&#34;metric_name&#34;, start_timestamp, end_timestamp)
</pre>
<p>Pull requests are always welcome. Just <a href="https://github.com/hathaway/batsd-client">fork the project</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2013/01/integrating-batsd-with-graphite-and-statsd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to share a list from the Reminders app</title>
		<link>http://hathaway.cc/2012/08/how-to-share-a-list-from-the-reminders-app/</link>
		<comments>http://hathaway.cc/2012/08/how-to-share-a-list-from-the-reminders-app/#comments</comments>
		<pubDate>Mon, 20 Aug 2012 17:14:09 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathaway.cc/?p=594</guid>
		<description><![CDATA[One thing that I immediately wanted to do with the Reminders app both in iOS and now on Mountain Lion is create a shared list for me and my wife for things like groceries. It seemed like such an obvious use for this app and iCloud. So I created the list in the iOS app [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>One thing that I immediately wanted to do with the Reminders app both in iOS and now on Mountain Lion is create a shared list for me and my wife for things like groceries. It seemed like such an obvious use for this app and iCloud. So I created the list in the iOS app and looked for the share option. To my surprise, there isn&#8217;t one. So I assumed this was a limitation on the iOS and opened up the Reminders app in Mountain Lion. It wasn&#8217;t a limitation, the &#8220;share&#8221; button just doesn&#8217;t exist. </p>
<p>So after being disappointed, I thought I&#8217;d give this one more try by checking the iCloud web app. There isn&#8217;t a Reminders app there but the Reminders are nothing more than task lists keep in the calendar. </p>
<p>I was pleased to see the little share icon next to the Reminders lists just like with calendars. Simply click that icon and you&#8217;ll be able to enter the email address of another iCloud user you want to share the list with. Once that user approves the invite (from the email they receive after inviting them) then the list will show up in their Reminders app on both iOS and Mountain Lion.</p>
<p>I&#8217;m guessing this process will be improved in future updates the Reminders app both on iOS and Mountain Lion. It definitely needs the addition of the share option. </p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2012/08/how-to-share-a-list-from-the-reminders-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to fix git after upgrading to Mountain Lion</title>
		<link>http://hathaway.cc/2012/07/how-to-fix-git-after-upgrading-to-mountain-lion/</link>
		<comments>http://hathaway.cc/2012/07/how-to-fix-git-after-upgrading-to-mountain-lion/#comments</comments>
		<pubDate>Wed, 25 Jul 2012 15:19:14 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathaway.cc/?p=584</guid>
		<description><![CDATA[During the process of upgrading to OS X Mountain Lion (10.8), it seems that git was removed so I was unable to run commands from Terminal. $ git -v -bash: git: command not found This was a big problem for me since I typically run a git command within the first 15 minutes of sitting [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>During the process of upgrading to OS X Mountain Lion (10.8), it seems that <a href="http://git-scm.com">git</a> was removed so I was unable to run commands from Terminal. </p>
<pre class="prettyprint lang-bash">$ git -v
-bash: git: command not found</pre>
<p>This was a big problem for me since I typically run a git command within the first 15 minutes of sitting down at my computer.</p>
<p>Fixing this wasn&#8217;t as easy as I had originally thought it would be. Previously I installed git using <a href="http://mxcl.github.com/homebrew/">Homebrew</a>. Unfortunately, simply running `brew install git` didn&#8217;t do the trick this time. First it threw a warning about having and old version of Xcode (4.3.3) and then it failed to compile. </p>
<pre class="prettyprint lang-bash">$ brew install git
Warning: You have Xcode-4.3.3, which is outdated.
Please install Xcode 4.4.
</pre>
<pre>Error: Failed executing: make prefix=/usr/local/Cellar/git/1.7.11.3 CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang CFLAGS=-Os\ -w\ -pipe\ -march=native\ -Qunused-arguments\ -mmacosx-version-min=10.8 LDFLAGS=-L/usr/local/lib install (git.rb:49)</pre>
<p>I figured that the warning and the failure to compile were probably related so I started by updating to Xcode 4.4. Since Xcode is distributed through the App Store now, this should be simple right? <del datetime="2012-07-25T16:36:36+00:00">Wrong. At the time the App Store was still showing version 4.3.3. So I had to download Xcode 4.4 directly from Apple&#8217;s developer website. If you aren&#8217;t an Apple developer you may be stuck waiting for the App Store to update with 4.4.</del> <strong>Update:</strong> It looks like the App Store has updated with <a href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">Xcode 4.4</a>. (Thanks Adam!) </p>
<p>Xcode 4.4 dosen&#8217;t install the command line tools automatically. You have open up Xcode, go to Preferences -> Downloads then click install on command line tools. (Thanks to Jon&#8217;s tip in the <a href="http://hathaway.cc/2012/07/how-to-fix-git-after-upgrading-to-mountain-lion/#comment-597630764">comments</a>)</p>
<p>Now you will be able to install git again using Homebrew:</p>
<pre class="prettyprint lang-bash">brew install git</pre>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2012/07/how-to-fix-git-after-upgrading-to-mountain-lion/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>How to get the latest ruby versions for rbenv/ruby-build</title>
		<link>http://hathaway.cc/2012/07/how-to-get-the-latest-ruby-versions-for-rbenvruby-build/</link>
		<comments>http://hathaway.cc/2012/07/how-to-get-the-latest-ruby-versions-for-rbenvruby-build/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 13:51:48 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathaway.cc/?p=579</guid>
		<description><![CDATA[If you&#8217;ve been using rbenv to manage your rubies for a while, most likely you&#8217;ve come across the situation where you need to install a newer build of a ruby version but it isn&#8217;t available when you run `rbenv install`. If try to install it and you get something like this: rbenv install 1.9.3-p125 ruby-build: [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>If you&#8217;ve been using <a href="https://github.com/sstephenson/rbenv/">rbenv</a> to manage your rubies for a while, most likely you&#8217;ve come across the situation where you need to install a newer build of a ruby version but it isn&#8217;t available when you run `rbenv install`. If try to install it and you get something like this:</p>
<pre class="prettyprint lang-bash">rbenv install 1.9.3-p125
ruby-build: definition not found: 1.9.3-p125</pre>
<p>The key to getting this list updated is updating not rbenv but <a href="https://github.com/sstephenson/ruby-build">ruby-build</a> since that is what manages the installation of the rubies. Depending on whether you installed directly by cloning from the <a href="https://github.com/sstephenson/ruby-build">github repository</a> or used a package manager like <a href="http://mxcl.github.com/homebrew/">Homebrew</a> (like I did), you&#8217;ll need to follow the correct steps for updating.</p>
<p><strong>Updating ruby-build using Homebrew</strong></p>
<p>Updating ruby-build with Homebrew is as simple as running the install command again and forcing it to link the newly built binaries.</p>
<p><code>brew install ruby-build<br />
brew link -f ruby-build</code></p>
<p><strong>Updating ruby-build using git</strong></p>
<p>To update ruby-build from the github repository, you&#8217;ll simply need to pull the newest version and run the install script.</p>
<p><code>cd ~/.rbenv/plugins/ruby-build<br />
git pull</code></p>
<p>That&#8217;s it! Now when you run the `rbenv install` command, you&#8217;ll have access to the latest builds of ruby.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2012/07/how-to-get-the-latest-ruby-versions-for-rbenvruby-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to setup Mac OS X Lion for ruby and rails development</title>
		<link>http://hathaway.cc/2012/04/how-to-setup-mac-os-x-lion-for-ruby-and-rails-development/</link>
		<comments>http://hathaway.cc/2012/04/how-to-setup-mac-os-x-lion-for-ruby-and-rails-development/#comments</comments>
		<pubDate>Thu, 12 Apr 2012 14:49:20 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>
		<category><![CDATA[How To's]]></category>

		<guid isPermaLink="false">http://hathology.com/?p=523</guid>
		<description><![CDATA[Most developers spend their first day on a new computer setting up their develoment environment. If you are a ruby developer, this article should help you get started quickly. I&#8217;m assuming you are starting with a clean install of Mac OS X Lion. A similar environment could be created off of the same or similar [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Most developers spend their first day on a new computer setting up their develoment environment. If you are a ruby developer, this article should help you get started quickly.</p>
<p>I&#8217;m assuming you are starting with a clean install of Mac OS X Lion. A similar environment could be created off of the same or similar tools for a Linux machine.</p>
<p>The pieces of this development environment are:</p>
<ul>
<li> rbenv</li>
<li> ruby-build</li>
<li> ruby</li>
<li> bundler</li>
<li> rails</li>
<li> MySQL</li>
<li> redis</li>
<li> pow</li>
</ul>
<p>This should give you a broad set of tools that will cover most development environment needs. You could easily add more tools to your environment if needed.</p>
<p><span id="more-523"></span></p>
<h2> Install Xcode</h2>
<p>Xcode provides many of the necessary compilers and libraries needed for your development environment.</p>
<p>As of Lion, this is an easy install via the Mac App Store. It is a large download so while this step is easy, it will take some time to download and install.</p>
<p>The following link will take you to the Mac App Store to install.</p>
<p><a href="http://itunes.apple.com/us/app/xcode/id497799835?mt=12">http://itunes.apple.com/us/app/xcode/id497799835?mt=12</a></p>
<h2> Install Homebrew</h2>
<p>Homebrew is the easiest and most flexible way to install the UNIX tools Apple didn&#8217;t include with OS X.</p>
<p><a href="http://mxcl.github.com/homebrew">http://mxcl.github.com/homebrew</a></p>
<p>To install run the following command:</p>
<pre><code>/usr/bin/ruby -e &quot;$(/usr/bin/curl -fksSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)&quot;</code>
</pre>
<p>You can see detailed instructions on what happens when you run this command to install here:</p>
<p><a href="https://github.com/mxcl/homebrew/wiki/installation">https://github.com/mxcl/homebrew/wiki/installation</a></p>
<h2> Remove RVM (if necessary)</h2>
<p>If you have previously used RVM in your environment, you&#8217;ll want to get rid of this so it doesn&#8217;t interfere with your new environment. This is a simple task. Just run:</p>
<pre><code>rvm implode</code>
</pre>
<h2> Install MySQL Server</h2>
<p>Now that we have homebrew installed, these installations become simple single line commands.</p>
<pre><code>brew install mysql</code>
</pre>
<h2> Install Redis (optional)</h2>
<p>Redis is an open source, advanced key-value store. It has many uses such as caching and serving as a queue for background jobs (via resque).</p>
<p>Once again, an easy to install with homebrew.</p>
<pre><code>brew install redis</code>
</pre>
<h2> Install rbenv and ruby-build</h2>
<p>The basis of this environment is rbenv which allows you to run self-contained ruby environments for each of your projects. This setup has huge advantages over a system wide install of ruby that would force you to keep all of your projects on the same version of ruby as well as gems. </p>
<p>I chose rbenv over rvm because it&#8217;s simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.</p>
<p><a href="https://github.com/sstephenson/rbenv">https://github.com/sstephenson/rbenv</a></p>
<p><a href="https://github.com/sstephenson/ruby-build">https://github.com/sstephenson/ruby-build</a></p>
<p>Use homebrew to install.</p>
<pre><code>brew install rbenv</code>
<code>brew install ruby-build</code>
</pre>
<p>Add to ~/.bash_profile:</p>
<pre><code>eval &quot;$(rbenv init -)&quot;</code>
<code>alias b=‘bundle exec’</code>
</pre>
<p><code></code><code></code>I like to alias the `bundle exec` command to just `b` to save some typing. If you prefer not to do that, just skip adding that line to the .bash_profile.</p>
<p>Restart your Terminal.</p>
<h2> Install pow</h2>
<p>Pow is a zero-config Rack server for Mac OS X. Instead of running the rails server manually for each of your projects, pow runs it for you and gives you a simple hostname to. So instead of going to http://localhost:3000 after starting your rails server, you can just go straight to http://project.dev (where &#8220;project&#8221; is replaced with the folder name of your project.</p>
<p><a href="http://pow.cx">http://pow.cx</a></p>
<p>Note: I&#8217;ve had trouble using pow before when using custom DNS servers in my Network settings. If something isn&#8217;t working right when you try to use pow, check your DNS settings and make sure you are using the defaults.</p>
<p>To install pow, simply run:</p>
<pre><code>curl get.pow.cx | sh</code>
</pre>
<p>You can view this script before running it on their website.</p>
<h2> Install ruby</h2>
<p>Now we can install our rubies. At the time of writing this I had projects running on both 1.8.7 and 1.9.3 so I&#8217;m going to show you how to setup both and set one as the global version.</p>
<p>Install ruby 1.9.3:</p>
<pre><code>rbenv install 1.9.3-p0</code>
</pre>
<p>Install ruby 1.8.7:</p>
<pre><code>rbenv install 1.8.7-p352 </code>
</pre>
<p>After installing a new ruby or a global gem, you need to run the following command.</p>
<pre><code>rbenv rehash</code>
</pre>
<p>Set the global ruby to 1.9.3:</p>
<pre><code>rbenv global 1.9.3-p0</code>
</pre>
<h2> Configure your global gem settings</h2>
<p>I typically always just use <a href="http://google.com">Google</a> and the online documentation for <a href="http://ruby-doc.org/">ruby</a>, <a href="http://guides.rubyonrails.org/" title="Rails Guides">rails</a>, and other gems. So installing the rdoc&#8217;s for all of our gems is a waste. I prefer to disable this in a .gemrc file.</p>
<p>Add this line to the ~/.gemrc file:</p>
<pre><code>gem: --no-rdoc --no-ri</code>
</pre>
<h2> Install bundler</h2>
<p>Bundler manages an application&#8217;s dependencies through its entire life across many machines systematically and repeatably.</p>
<p>Bundler has to be installed for each version of ruby you want to run it on.</p>
<pre><code>rbenv shell 1.9.3-p0</code>
<code>gem install bundler</code>
<code>rbenv shell 1.8.7-p352</code>
<code>gem install bundler</code>
<code>rbenv rehash</code>
</pre>
<p>Configure bundler in ~/.bundle/config:</p>
<pre><code>BUNDLE_PATH: vendor/bundle</code>
</pre>
<p>This line tells bundler to install my gems in a relative path specific to each project.</p>
<h2> Install Rails</h2>
<p>Similar to bundler, you want to install the rails gem for each of your ruby versions.</p>
<pre><code>rbenv shell 1.9.3-p0</code>
<code>gem install rails</code>
<code>rbenv shell 1.8.7-p352</code>
<code>gem install rails</code>
<code>rbenv rehash</code>
</pre>
<h2> Setup your first Rails project</h2>
<p>Now you&#8217;re ready to setup your first project. We are going to create a sample project called &#8220;blog&#8221;.</p>
<p>Create a projects folder if you don&#8217;t already have one.</p>
<pre><code>mkdir ~/Projects</code>
<code>cd ~/Projects</code>
</pre>
<p>Remember that we want to use MySQL as the database for the Rails project so we are going to pass that in with the rails command.</p>
<pre><code>rails new blog --database=mysql</code>
</pre>
<p>Set the project specific ruby version.</p>
<pre><code>cd ~/Projects/blog</code>
<code>rbenv local 1.9.3-p0</code>
</pre>
<p>This sets a local per-project Ruby version by writing the version name to an .rbenv-version file in the current directory.</p>
<p>Now run bundler on your new project.</p>
<pre><code>bundle install</code>
</pre>
<p>This will install all of the gems for this project into:</p>
<pre><code>~/Projects/blog/vendor/bundle</code>
</pre>
<p>If you ever get into a situation where your gems are working correctly, you can simple delete that entire bundle directory and run bundle install again to get fresh versions of everything for your project.</p>
<p>To setup pow for your new rails project, just create a symbolic link to the project folder in the ~/.pow directory.</p>
<pre><code>cd ~/.pow</code>
<code>ln -s ~/Projects/blog</code>
</pre>
<p>That&#8217;s it! Now you should be able to access your new project at:</p>
<p>http://blog.dev</p>
<h2> Other apps you might want</h2>
<h3> GitHub</h3>
<p>I highly recommend using GitHub to host your projects. They offer a free app for working with git repositories and it makes it super easy to use with their service.</p>
<p><a href="http://mac.github.com">http://mac.github.com</a></p>
<h3> Sublime Text 2</h3>
<p>This is the text editor I use and prefer. It has a lot of cool features and is very customizable.</p>
<p><a href="http://www.sublimetext.com/2">http://www.sublimetext.com/2</a></p>
<h3> MySQL Workbench</h3>
<p>MySQL offers a free app for managing your MySQL databases.</p>
<p><a href="http://www.mysql.com/products/workbench">http://www.mysql.com/products/workbench</a></p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2012/04/how-to-setup-mac-os-x-lion-for-ruby-and-rails-development/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>How to fix the cursor movement in Mac OS X Terminal</title>
		<link>http://hathaway.cc/2011/05/how-to-fix-the-cursor-movement-in-mac-os-x-terminal/</link>
		<comments>http://hathaway.cc/2011/05/how-to-fix-the-cursor-movement-in-mac-os-x-terminal/#comments</comments>
		<pubDate>Tue, 17 May 2011 23:47:04 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>
		<category><![CDATA[How To's]]></category>

		<guid isPermaLink="false">http://hathology.com/?p=473</guid>
		<description><![CDATA[I&#8217;ve been frustrated with the limited cursor movement out of the box in Mac OS X Terminal for years. Usually I&#8217;m always working in a linux server session so it never bothered me enough to figure it out. But I finally got sick enough to figure out the keyboard mappings to make Terminal better. Specifically [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve been frustrated with the limited cursor movement out of the box in Mac OS X Terminal for years. Usually I&#8217;m always working in a linux server session so it never bothered me enough to figure it out. But I finally got sick enough to figure out the keyboard mappings to make Terminal better.</p>
<p>Specifically I&#8217;m referring to control + left/right or alt + left/right as well as the home or end keys. In linux terminals, these will jump you word by word and to the beginning or end of the command line respectively. Not so much in Mac OS X Terminal.</p>
<p>So here is the list of keyboard mappings to add/modify. You can find these under Terminal -> Preferences -> Settings -> Keyboard. I&#8217;m doing this on Snow Leopard 10.6.7.</p>
<p>Hint: The best way to do these is to copy/paste the action so you don&#8217;t have to figure out the correct key strokes to get the action correct.</p>
<ul>
<li><b>Key &#8211; Action</b></li>
<li>home &#8211; \033OH</li>
<li>end &#8211; \033OF</li>
<li>control cursor left &#8211; \033b</li>
<li>control cursor right &#8211; \033f</li>
<li>option cursor left &#8211; \033b</li>
<li>option cursor right &#8211; \033f</li>
<li>forward delete &#8211; \004</li>
</ul>
<p>I&#8217;ll be sure to update this as I find more useful mappings. Feel free to leave a comment if you know of additional mappings that might be useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2011/05/how-to-fix-the-cursor-movement-in-mac-os-x-terminal/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Biz monkey</title>
		<link>http://hathaway.cc/2011/04/biz-monkey/</link>
		<comments>http://hathaway.cc/2011/04/biz-monkey/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 13:22:46 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathology.com/?p=454</guid>
		<description><![CDATA[A biz monkey is a replaceable, Powerpoint toting, suit wearing, acronym-spewing middle manager business dude drone. They are quick to comment and sneer, slow to actually ship. People who understand technology and are willing to bend it to their will, on the other hand, are scarce. They can&#8217;t be found with a classified ad on [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p> A biz monkey is a replaceable, Powerpoint toting, suit wearing, acronym-spewing middle manager business dude drone. They are quick to comment and sneer, slow to actually ship.</p>
<p>People who understand technology and are willing to bend it to their will, on the other hand, are scarce. They can&#8217;t be found with a classified ad on Craigslist or in a blind project ad on eLance.</p></blockquote>
<p>Stick to the <a href="http://amzn.com/1591844096">Linchpins</a>, lose the <a href="http://andrewchenblog.com/2011/02/05/stanford-cs-major-seeks-salesmarketing-monkey/">Monkeys</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2011/04/biz-monkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Master craftspeople</title>
		<link>http://hathaway.cc/2011/04/master-craftspeople/</link>
		<comments>http://hathaway.cc/2011/04/master-craftspeople/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 19:26:15 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathology.com/?p=443</guid>
		<description><![CDATA[At 37signals, however, we have a different position on ambition. We&#8217;re not big fans of what I consider &#8220;vertical&#8221; ambition—that is, the usual career-path trajectory, in which a newbie moves up the ladder from associate to manager to vice president over a number of years of service. On the other hand, we revere &#8220;horizontal&#8221; ambition—in [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>At 37signals, however, we have a different position on ambition. We&#8217;re not big fans of what I consider &#8220;vertical&#8221; ambition—that is, the usual career-path trajectory, in which a newbie moves up the ladder from associate to manager to vice president over a number of years of service. On the other hand, we revere &#8220;horizontal&#8221; ambition—in which employees who love what they do are encouraged to dig deeper, expand their knowledge, and become better at it. We always try to hire people who yearn to be master craftspeople, that is, designers who want to be great designers, not managers of designers; developers who want to master the art of programming, not management.</p></blockquote>
<p>I love the idea of a group of people working together that are all master craftspeople at what they do.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2011/04/master-craftspeople/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;I&#8217;ll just give you a new one&#8221;</title>
		<link>http://hathaway.cc/2011/03/ill-just-give-you-a-new-one/</link>
		<comments>http://hathaway.cc/2011/03/ill-just-give-you-a-new-one/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 14:51:22 +0000</pubDate>
		<dc:creator><![CDATA[Ben]]></dc:creator>
				<category><![CDATA[Archive]]></category>

		<guid isPermaLink="false">http://hathology.com/?p=430</guid>
		<description><![CDATA[That is what was said to me after about 30 seconds of me explaining why I was brining my 8 month old Magic Trackpad back in. It was that easy and the customer (me) was happy. I purchased the Magic Trackpad back in July 2010 when they were released and from the get go, it [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>That is what was said to me after about 30 seconds of me explaining why I was brining my 8 month old Magic Trackpad back in. It was that easy and the customer (me) was happy.</p>
<p>I purchased the Magic Trackpad back in July 2010 when they were released and from the get go, it was having weird issues where it would randomly get a mind of its own and start moving around erratically and even clicking on things. It finally reached a point where it closed windows that I was working in and I lost information. At that point I threw it aside and went back to a Magic Mouse. </p>
<p>Months later I came across it again and realized I had forgot to take it back. I figured they didn&#8217;t have any reason to help me with it now because it had been so long but since Apple has taken good care of me many times before I thought I would give it a shot.</p>
<p>I took it in its original box back to the Apple Store in Greenville, SC and explained my story. No half truths or trying to get around the fact I just waited a long time to bring it back. Sarah helped me out and gave me a new one. No questions asked. No stupid forms to fill out. The simplicity of her solution was great. &#8220;I&#8217;ll just give you a new one.&#8221; This is why I buy and recommend Apple products to others. Not just because their products are great, but because they care about their customers and making them happy.</p>
<p>By the way, the new Magic Trackpad works great. No issues at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://hathaway.cc/2011/03/ill-just-give-you-a-new-one/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
