<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Please, never say “widgets” in my presence again.</description><title>Awkward and Proud</title><generator>Tumblr (3.0; @joshuadavey)</generator><link>http://joshuadavey.com/</link><item><title>Top 10 things GitHub will do with VC Funding</title><description>&lt;p&gt;GitHub is getting &lt;a href="http://pandodaily.com/2012/05/21/bootstrapped-github-now-raising-a-round-from-andreessen-horowitz/"&gt;a round of VC funding&lt;/a&gt;. Here are the top 10 things they plan on using the money for.&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Genetically engineer an actual octocat. &lt;/li&gt;
&lt;li&gt;Pay off the anonymous Italian who&amp;#8217;s been squatting on &amp;#8220;code.it&amp;#8221;&lt;/li&gt;
&lt;li&gt;Upgrade Rick Olsen to &amp;#8220;technosausage&amp;#8221;&lt;/li&gt;
&lt;li&gt;Mojombo will finally buy back the username &amp;#8220;tom&amp;#8221; from the MySpace guy. &lt;/li&gt;
&lt;li&gt;Build a room just for holding their giant piles of cash. &lt;/li&gt;
&lt;li&gt;Get the lunar datacenter they&amp;#8217;ve been eying for months.&lt;/li&gt;
&lt;li&gt;Develop a post-receive hook that actually kills a kitten when someone force pushes. &lt;/li&gt;
&lt;li&gt;Buy Linus.&lt;/li&gt;
&lt;li&gt;Fund the covert operation to eliminate the out-of-control self-aware Hubot. &lt;/li&gt;
&lt;li&gt;Have a drinkup.&lt;/li&gt;
&lt;/ol&gt;</description><link>http://joshuadavey.com/post/23541988899</link><guid>http://joshuadavey.com/post/23541988899</guid><pubDate>Tue, 22 May 2012 08:01:00 -0500</pubDate></item><item><title>Simulate network latency for application testing</title><description>&lt;p&gt;Sometimes it&amp;#8217;s useful to test your web application for situations where internet connections are less than stellar. It turns out that Mac OS X has a builtin utility called &lt;code&gt;ipfw&lt;/code&gt; than, among other things, can do just this.&lt;/p&gt;

&lt;p&gt;I first saw this technique from &lt;a href="http://joemiller.me/2010/08/31/simulate-network-latency-packet-loss-and-bandwidth-on-mac-osx/"&gt;Joe Miller&amp;#8217;s post&lt;/a&gt; on the subject. I packaged up the settings he mentioned into a little shell script:&lt;/p&gt;

&lt;script src="https://gist.github.com/2696974.js?file=hinder.sh"&gt;&lt;/script&gt;&lt;p&gt;You can drop that somewhere in your &lt;code&gt;$PATH&lt;/code&gt; and &lt;code&gt;chmod +x&lt;/code&gt; to make it executable. You can call it whatever you want, but I called mine &amp;#8220;hinder&amp;#8221;. After that, it&amp;#8217;s simply a matter of using it:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ hinder &lt;a href="http://www.google.com"&gt;www.google.com&lt;/a&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now when you visit google.com, you should see some marked slowness. To reset, just run:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ hinder reset
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Google is now fast again.&lt;/p&gt;

&lt;p&gt;The script works by adding 250ms delay to both directions of network traffic. It also adds a packet-loss percentage of 10%. You can play with these numbers to get even more latency simulation. Enjoy!&lt;/p&gt;</description><link>http://joshuadavey.com/post/23058622994</link><guid>http://joshuadavey.com/post/23058622994</guid><pubDate>Mon, 14 May 2012 16:27:43 -0500</pubDate></item><item><title>Add untracked files in git</title><description>&lt;p&gt;I&amp;#8217;ve often been annoyed that there&amp;#8217;s no way to non-interactively add untracked files in git. Well, I finally whipped an alias to speed that process up:&lt;/p&gt;

&lt;script src="https://gist.github.com/2256047.js?file=.gitconfig"&gt;&lt;/script&gt;&lt;p&gt;Just add it to your global git config file at &lt;code&gt;~/.gitconfig&lt;/code&gt; and enjoy.&lt;/p&gt;</description><link>http://joshuadavey.com/post/20189937090</link><guid>http://joshuadavey.com/post/20189937090</guid><pubDate>Fri, 30 Mar 2012 17:18:00 -0500</pubDate></item><item><title>Faster TDD feedback with tmux, tslime.vim, and turbux.vim</title><description>&lt;p&gt;&lt;strong&gt;tl;dr&lt;/strong&gt; Developing in a tmux session has sped up my TDD cycle
considerably, especially with the help of tslime.vim and turbux.vim. I
get immediate feedback in one pane, but never have to leave vim or lose
context of what I&amp;#8217;m working on to see the test result.&lt;/p&gt;

&lt;p&gt;Taking a cue from &lt;a href="http://rhnh.net/2011/08/20/vim-and-tmux-on-osx" title="Robot Has No Heart - Vim and tmux on OSX"&gt;Xavier Shay&amp;#8217;s excellent intro to tmux&lt;/a&gt;, I&amp;#8217;ve
been using tmux lately as my primary workspace. There are excellent
&lt;a href="http://peterc.org/blog/2010/216-tmux.html" title="Peter Cooper's introduction to tmux"&gt;introductions to&lt;/a&gt; &lt;a href="http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/" title="Hawkhost's introduction to tmux"&gt;tmux elsewhere&lt;/a&gt;, but I&amp;#8217;ve really
enjoyed the switch from MacVim/Terminal to a single tmux session for
development. But rather than sing tmux&amp;#8217;s praises, I&amp;#8217;d like to talk about
how tmux and a vim plugin have changed my testing feedback loop for the
better.&lt;/p&gt;

&lt;h2&gt;Other test-running solutions&lt;/h2&gt;

&lt;p&gt;Autotesting gives you immediate feedback, but runs everytime
you save a file. Even though this often is desired behavior, I can&amp;#8217;t
tell you how many times I&amp;#8217;ve saved a feature file, only to immediately notice a typo. Especially with Rails project, this can be an expensive
amount of time. I end up feeling punished for saving my work.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve also tried more editor-embedding techniques of running tests. Both
&lt;a href="https://github.com/tpope/vim-rails" title="Rails.vim: Ruby on Rails power tools"&gt;rails.vim&lt;/a&gt; and rake.vim provide facilities for running &lt;code&gt;:Rake&lt;/code&gt;. When
combined with a keyboard shortcut, this gets closer to the kind of
control I like to have, running my tests exactly when I want them. The
downside, though, is that I lose control of my editor and have to wait
for the command to finish before I can type, or even navigate again. And
I can&amp;#8217;t look at a failure message and my code at the same time.&lt;/p&gt;

&lt;h2&gt;A faster feedback loop&lt;/h2&gt;

&lt;p&gt;A practice that is quickly gaining popularity in the Ruby community is
isolating your business logic from your persistance logic and framework.
Rather than load Rails (or some other large library or framework),
you sequester all business logic in its own class or module, and then
test that class or module in isolation. This has a ton of benefits for
the longevity of your code, but one of the side benefits is the speed
increase for running individual specs or tests. This technique is being
championed by Gary Bernhardt and Corey Haines, among others.&lt;/p&gt;

&lt;p&gt;Because tmux is so scriptable, it isn&amp;#8217;t hard to send commands to other
panes in a tmux session programmatically. Leveraging the power of
&lt;a href="https://github.com/tpope/vim-rails" title="Rails.vim: Ruby on Rails power tools"&gt;rails.vim&lt;/a&gt; and &lt;a href="https://github.com/jgdavey/tslime.vim" title="Joshua Davey's tslime.vim fork"&gt;tslime.vim&lt;/a&gt;, I&amp;#8217;ve created a vim plugin that shortens
the feedback loop when practicing TDD in a tmux session. It&amp;#8217;s called
&lt;a href="https://github.com/jgdavey/vim-turbux" title="Turbux: turbo Ruby testing with tmux"&gt;turbux.vim&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Using tslime.vim&lt;/h2&gt;

&lt;p&gt;My typical workflow now involves setting up a tmux session for my
project, splitting vertically (&lt;code&gt;&amp;lt;C-b&amp;gt; %&lt;/code&gt;), and using layout 4 (&lt;code&gt;&amp;lt;C-b&amp;gt;
&amp;lt;Alt-4&amp;gt;&lt;/code&gt;). In fullscreen, the result is about 30% for my shell on the
left, and 70% for vim on the right.&lt;/p&gt;

&lt;p&gt;The first time you use it, tslime.vim will prompt you to input your tmux
session name, window number, and pane number. There is completion for
each of these prompts, so you can happily mash &lt;code&gt;&amp;lt;Tab&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The plugin exposes a general-purpose function to send arbitrary text to
the configured tmux pane. For example, you can use it in the following way:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:call Send_to_Tmux("rspec ".expand("%")."\n")
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The above command would send &lt;code&gt;rspec path/to/spec.rb&lt;/code&gt; to the configured pane. For me, this pattern of running the test file that is currently open is so common that I&amp;#8217;ve packaged up some useful defaults in &lt;a href="https://github.com/jgdavey/vim-turbux" title="Turbux: turbo Ruby testing with tmux"&gt;turbux.vim&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Using turbux.vim&lt;/h2&gt;

&lt;p&gt;Turbux.vim tries to intelligently choose the right spec, test or feature
to run when you invoke it. If you&amp;#8217;re in a spec, invoking the plugin
(by default with &lt;code&gt;&amp;lt;leader&amp;gt;t&lt;/code&gt;) will run &lt;code&gt;rspec path/to/my_spec.rb&lt;/code&gt; in
the corresponding pane. In a test-unit file, it will run &lt;code&gt;ruby -Itest
path/to/test.rb&lt;/code&gt;. In a cucumber feature file, it will run &lt;code&gt;cucumber
path/to/my.feature&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a href="https://github.com/tpope/vim-rails" title="Rails.vim: Ruby on Rails power tools"&gt;rails.vim&lt;/a&gt;&amp;#8217;s awesomeness, I&amp;#8217;ve also provided some mappings for
when the current file has a corresponding test or spec. For example,
When I&amp;#8217;m in a file that has a corresponding spec, such as a model or
controller, the command will run the that spec.&lt;/p&gt;

&lt;p&gt;Finally, if the plugin is invoked outside the context of any feature
or spec-related file, it will simply run the most recent test command
again.&lt;/p&gt;

&lt;p&gt;Also, I&amp;#8217;ve added a mapping for &lt;code&gt;&amp;lt;leader&amp;gt;T&lt;/code&gt; to run a more focused spec or
cucumber scenario. It works by adding the vim cursor&amp;#8217;s line number to
the rspec or cucumber command.&lt;/p&gt;

&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;This setup has been really rewarding so far. There&amp;#8217;s far less context
switching, as I never have to leave my editor. There are also fewer
surprises. As far as I&amp;#8217;m concerned, the faster my feedback, the better.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; You will probably want to use my fork of &lt;a href="https://github.com/jgdavey/tslime.vim" title="Joshua Davey's tslime.vim fork"&gt;tslime.vim&lt;/a&gt;, as the main
repository has some outstanding bugs, and the fixes have yet to been
merged in.&lt;/p&gt;

&lt;h2&gt;Bonus&lt;/h2&gt;

&lt;p&gt;See the plugin in action. If the video is hard to see, visit vimeo. There is a link to download at full size.&lt;/p&gt;

&lt;iframe src="http://player.vimeo.com/video/34879707?title=0&amp;amp;byline=0&amp;amp;portrait=0" width="500" height="306" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen&gt;&lt;/iframe&gt;</description><link>http://joshuadavey.com/post/15619414829</link><guid>http://joshuadavey.com/post/15619414829</guid><pubDate>Tue, 10 Jan 2012 08:48:00 -0600</pubDate></item><item><title>My Top 10 Albums of 2011</title><description>&lt;p&gt;This year, it was very hard to pick the top 10 albums, as there seemed to be a ton of good music that came out this year. As much as I listened to new albums, the ones that follow are those that rose to the top:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Bon_Iver/album/Bon_Iver/"&gt;Bon Iver - Bon Iver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/M83/album/Hurry_Up_We're_Dreaming/"&gt;M83 - Hurry Up, We&amp;#8217;re Dreaming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Cut_Copy/album/Zonoscope/"&gt;Cut Copy - Zonoscope&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Wye_Oak/album/Civilian/"&gt;Wye Oak - Civilian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/James_Blake/album/James_Blake/"&gt;James Blake - James Blake&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Real_Estate/album/Days/"&gt;Real Estate - Days&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Cults/album/Cults/"&gt;Cults - Cults&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Fleet_Foxes/album/Helplessness_Blues/"&gt;Fleet Foxes - Helplessness Blues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/Radiohead/album/The_King_Of_Limbs/"&gt;Radiohead - The King of Limbs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rdio.com/#/artist/tUnE-yArDs/album/W_H_O_K_I_L_L/"&gt;tUnE-yArDs - W H O K I L L&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Shout out: &lt;a href="http://www.rdio.com/#/artist/King_Creosote__Jon_Hopkins/album/Diamond_Mine/"&gt;King Creosote &amp;amp; Jon Hopkins - Diamond Mine&lt;/a&gt;&lt;/p&gt;</description><link>http://joshuadavey.com/post/14044978985</link><guid>http://joshuadavey.com/post/14044978985</guid><pubDate>Sat, 10 Dec 2011 20:38:50 -0600</pubDate></item><item><title>zsh completion for hitch</title><description>&lt;p&gt;At &lt;a href="http://www.hashrocket.com"&gt;hashrocket&lt;/a&gt;, we use &lt;a href="http://github.com/therubymug/hitch"&gt;hitch&lt;/a&gt; to manage our paired git authors, written by our own Rogelio Samour.&lt;/p&gt;

&lt;p&gt;Hitch works by setting the &lt;code&gt;GIT_AUTHOR_NAME&lt;/code&gt; and &lt;code&gt;GIT_AUTHOR_EMAIL&lt;/code&gt; environment variables. For the email itself, it joins the hitched author&amp;#8217;s github usernames and a prefix with a &amp;#8220;+&amp;#8221;, creating email addresses of the form &amp;#8220;dev+jgdavey+therubymug@hashrocket.com&amp;#8221;. Using it is as simple as &lt;code&gt;hitch &amp;lt;github_username&amp;gt; &amp;lt;github_username&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Recently, I was annoyed that I had to always remember the github username of the person I was pairing with. I was at the command line typing and found myself hitting &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt; repeatedly, hoping it would complete with the authors I pair with most often.&lt;/p&gt;

&lt;p&gt;So I quickly whipped up a zsh completion script, and &lt;em&gt;boom&lt;/em&gt;, pairing nirvana.&lt;/p&gt;

&lt;p&gt;To use the completion script, save the following script as &lt;code&gt;_hitch&lt;/code&gt; and add it to your &lt;code&gt;fpath&lt;/code&gt;:&lt;/p&gt;

&lt;script src="https://gist.github.com/1257698.js?file=_hitch.sh"&gt;&lt;/script&gt;&lt;p&gt;If you see any way to improve the function, please fork the &lt;a href="https://gist.github.com/1257698"&gt;gist&lt;/a&gt; on github.&lt;/p&gt;</description><link>http://joshuadavey.com/post/10942287375</link><guid>http://joshuadavey.com/post/10942287375</guid><pubDate>Sun, 02 Oct 2011 13:04:00 -0500</pubDate></item><item><title>QR Codes in Ruby</title><description>&lt;p&gt;QR codes seem to be everywhere these days. I&amp;#8217;ve seen them in
advertisements on the train, on the back of magazines, and, most
recently, on someone&amp;#8217;s wedding invitation. A lot of folks are using
QR codes as a quick way to share URLs. But that&amp;#8217;s not all that they
are good for. We recently had a client that needed to authorize paper
tickets, and a QR-encoded token turned out to be a great solution.&lt;/p&gt;

&lt;h2&gt;QR Code Generation in Ruby&lt;/h2&gt;

&lt;p&gt;From my experience, there are two solid options for QR code generation in Ruby:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://whomwah.github.com/rqrcode/"&gt;rQRCode&lt;/a&gt; Pure ruby QR code generator&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/harrisj/qrencoder"&gt;qrencoder&lt;/a&gt; A Ruby wrapper around libqrencode&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;rQRCode&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;Pure ruby&lt;/li&gt;
&lt;li&gt;Portable: will run on many Ruby platforms&lt;/li&gt;
&lt;li&gt;Few dependencies&lt;/li&gt;
&lt;li&gt;Relatively slow&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;QREncoder&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;Very, very fast&lt;/li&gt;
&lt;li&gt;Uses a C library (libqrencode) that works wherever &lt;code&gt;make&lt;/code&gt; does&lt;/li&gt;
&lt;li&gt;Likely not to run on JRuby&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;QR Code Decoding in Ruby&lt;/h2&gt;

&lt;p&gt;The QR Decoding landscape varies even more than its QR encoding
counterpart. There are several ooptions to choose from, and the best one
for you will likely depend your environment and stack. The top three
libraries that I&amp;#8217;ve found are:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="https://github.com/rubysolo/qrio"&gt;qrio&lt;/a&gt; Pure ruby QR Code decoder&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ecin/zxing.rb"&gt;zxing.rb&lt;/a&gt; JRuby wrapper for ZXing 1D/2D barcode image processing library.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jgdavey/qrdecoder"&gt;qrdecoder&lt;/a&gt; A ruby wrapper for the C++ port of ZXing&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Qrio&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;Pure ruby&lt;/li&gt;
&lt;li&gt;Source is readable for ruby developers&lt;/li&gt;
&lt;li&gt;Has intermediate hooks for displaying pattern detection&lt;/li&gt;
&lt;li&gt;Only reads in PNG formatted images&lt;/li&gt;
&lt;li&gt;Slower than the other options&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Zxing.rb&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;Uses the well-maintained &lt;a href="http://code.google.com/p/zxing/" title="Zebra Crossing"&gt;Zxing&lt;/a&gt; (Zebra Crossing) Java barcode decoding library&lt;/li&gt;
&lt;li&gt;Works with both JRuby and MRI (via &lt;a href="https://rubygems.org/gems/jruby-jars"&gt;jruby-jars gem&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;MRI versions of ruby will notice a slow startup as a forked JRuby server is started&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;QRDecoder&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;Wrapper for libzxing, a C++ port of the ZXing Java library&lt;/li&gt;
&lt;li&gt;By far the fastest option for MRI&lt;/li&gt;
&lt;li&gt;The C++ port of ZXing is less maintained than its big brother&lt;/li&gt;
&lt;li&gt;You must build &lt;a href="https://github.com/jgdavey/zxing-cpp"&gt;libzxing&lt;/a&gt; from source (a homebrew package is pending)&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;The Bottom Line&lt;/h2&gt;

&lt;p&gt;Wherein I offer &amp;#8220;My Two Cents&amp;#8221;. If you&amp;#8217;re on a stack that can install
libraries and you&amp;#8217;re using an MRI ruby (1.8 or 1.9), use qrencoder and
qrdecoder. They are both very fast and awesome. Additionally, their
APIs complement each other. If you&amp;#8217;re on Heroku, use rQRCode and qrio.
They&amp;#8217;re both pure ruby and play nice with an environment where you can&amp;#8217;t
install you&amp;#8217;re own libraries. If you&amp;#8217;re on JRuby, use Zxing.rb for
decoding, and try both rQRCode and qrencoder. I haven&amp;#8217;t tried qrencoder
with JRuby&amp;#8212;or any compiled gems for that matter&amp;#8212;so your mileage may
vary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;N.B.&lt;/strong&gt; In the interest of full disclosure, I have contributed to both
qrencoder and zxing.rb, and maintain qrdecoder, and tend to favor them.
Nevertheless, the pure ruby options are solid and well worth a look.&lt;/p&gt;

&lt;p&gt;Regardless of what your needs are, there are lots of options. Which one
fits your needs best will largely depend on your stack.&lt;/p&gt;</description><link>http://joshuadavey.com/post/6489140862</link><guid>http://joshuadavey.com/post/6489140862</guid><pubDate>Mon, 13 Jun 2011 10:24:00 -0500</pubDate></item><item><title>My Top 10 Albums of 2010</title><description>&lt;p&gt;Listened to these a lot this year. Will definitely be listening to more of them:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;The National - High Violet&lt;/li&gt;
&lt;li&gt;Mumford &amp;amp; Sons - Sigh No More&lt;/li&gt;
&lt;li&gt;Broken Bells - Broken Bells&lt;/li&gt;
&lt;li&gt;Vampire Weekend - Contra&lt;/li&gt;
&lt;li&gt;The Tallest Man on Earth - The Wild Hunt&lt;/li&gt;
&lt;li&gt;Beach House - Teen Dream&lt;/li&gt;
&lt;li&gt;Yeasayer - Odd Blood&lt;/li&gt;
&lt;li&gt;Broken Social Scene - Forgiveness Rock Record&lt;/li&gt;
&lt;li&gt;Jonsi - Go&lt;/li&gt;
&lt;li&gt;Sharon Jones &amp;amp; The Dap Kings - I Learned the Hard Way&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Shout out: Sharon Van Etten - Epic&lt;/p&gt;</description><link>http://joshuadavey.com/post/2520199621</link><guid>http://joshuadavey.com/post/2520199621</guid><pubDate>Wed, 29 Dec 2010 19:51:28 -0600</pubDate></item><item><title>"In music, 150 beats per minute is considered “Allegro”. In a womb, it is nothing less..."</title><description>“In music, 150 beats per minute is considered “Allegro”. In a womb, it is nothing less than a miracle.”</description><link>http://joshuadavey.com/post/2065835968</link><guid>http://joshuadavey.com/post/2065835968</guid><pubDate>Wed, 01 Dec 2010 19:52:00 -0600</pubDate></item><item><title>VIM script to toggle do/end and brackets</title><description>&lt;p&gt;&lt;strike&gt;This is still rough, but I&amp;#8217;m finding it quite useful:&lt;/strike&gt;&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ve converted this to a full-blown VIM plugin: &lt;a href="http://github.com/jgdavey/vim-blockle"&gt;http://github.com/jgdavey/vim-blockle&lt;/a&gt;&lt;/p&gt;</description><link>http://joshuadavey.com/post/1597762696</link><guid>http://joshuadavey.com/post/1597762696</guid><pubDate>Tue, 16 Nov 2010 23:22:00 -0600</pubDate></item><item><title>Self-description</title><description>&lt;a href="http://xkcd.com/688/"&gt;Self-description&lt;/a&gt;</description><link>http://joshuadavey.com/post/1134061264</link><guid>http://joshuadavey.com/post/1134061264</guid><pubDate>Thu, 16 Sep 2010 17:36:53 -0500</pubDate></item><item><title>"rvm update --head &amp;&amp; rvm reload &amp;&amp; rvm install 1.9.2 &amp;&amp; echo 'FTW!'"</title><description>“&lt;code&gt;rvm update --head &amp;&amp; rvm reload &amp;&amp; rvm install 1.9.2 &amp;&amp; echo 'FTW!'&lt;/code&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;wayneeseguin&lt;/em&gt;</description><link>http://joshuadavey.com/post/974368755</link><guid>http://joshuadavey.com/post/974368755</guid><pubDate>Wed, 18 Aug 2010 19:02:00 -0500</pubDate></item><item><title>Rails migrations - Checking the existence of a table</title><description>&lt;p&gt;Recently, I had to drop a table because I no longer needed the model at all. However, working on a distributed team, there were other folks with varying levels of &amp;#8220;migration&amp;#8221; status for their databases. A first migration to drop the table would be simply the following:&lt;/p&gt;

&lt;script src="http://gist.github.com/530421.js?file=original_migration.rb"&gt;&lt;/script&gt;&lt;p&gt;However, I also wanted to get rid of the original migration file that created the file to begin with, since it was no longer meaningful. As it turns out, checking the existence of a table isn&amp;#8217;t complicated at all:&lt;/p&gt;

&lt;script src="http://gist.github.com/530421.js?file=better_migration.rb"&gt;&lt;/script&gt;&lt;p&gt;Now, folks who never had that table to begin with won&amp;#8217;t get an error when running &lt;code&gt;rake db:migrate&lt;/code&gt;, and those who did will simply drop it. This works because &lt;code&gt;connection&lt;/code&gt; is actually delegated to &lt;code&gt;ActiveRecord::Base.connection&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;As a disclaimer, I&amp;#8217;ve only used this technique in Rails 2.3, so I can&amp;#8217;t vouch for it working in other versions.&lt;/p&gt;</description><link>http://joshuadavey.com/post/967287001</link><guid>http://joshuadavey.com/post/967287001</guid><pubDate>Tue, 17 Aug 2010 10:45:00 -0500</pubDate></item><item><title>"I was told there would be cake."</title><description>“I was told there would be cake.”</description><link>http://joshuadavey.com/post/949544261</link><guid>http://joshuadavey.com/post/949544261</guid><pubDate>Fri, 13 Aug 2010 18:41:03 -0500</pubDate></item></channel></rss>

