<?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>Hey there. I’m a full stack web developer for FCP Groton. Currently in  CT. I am generally an arrogant freethinker and a frequent linestepper. These are my notes, ProTips (R) and LULz.



  var _gaq = _gaq || [];
  _gaq.push([‘_setAccount’, ‘UA-2844090-8’]);
  _gaq.push([‘_trackPageview’]);

  (function() {
    var ga = document.createElement(‘script’); ga.type = ‘text/javascript’; ga.async = true;
    ga.src = (‘https:’ == document.location.protocol ? ‘https://ssl’ : ‘http://www’) + ‘.google-analytics.com/ga.js’;
    var s = document.getElementsByTagName(‘script’)[0]; s.parentNode.insertBefore(ga, s);
  })();</description><title>Denis 'jumph4x' Ivanov</title><generator>Tumblr (3.0; @jumph4x)</generator><link>http://jumph4x.net/</link><item><title>This is why we can't have nice things.</title><description>&lt;p&gt;&lt;a href="http://programmersbeingdicks.tumblr.com/post/24191956009/this-is-why-we-cant-have-nice-things" class="tumblr_blog"&gt;programmersbeingdicks&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;At &lt;a href="http://www.euruko2012.org"&gt;this year’s European Ruby Conference&lt;/a&gt; (EuRuKo), Eloy Durán gave a delightfully silly talk, involving an a capella singing ‘&lt;a href="http://vimeo.com/43249457"&gt;intervention&lt;/a&gt;’ by Dutch group &lt;a href="http://www.muziektheater-teer.nl/"&gt;Muziektheater TEER&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately, Muziektheater TEER’s singers being all female, and this being a tech conference, &lt;a href="https://twitter.com/sparrovv_/status/208527031447719936"&gt;the inevitable ensued&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m4xvbrI24X1r79f6v.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update: &lt;/strong&gt;A quick &lt;a href="https://twitter.com/sparrovv_/statuses/208546014125236224"&gt;retraction&lt;/a&gt; from Michał.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m4xxazL2nx1r79f6v.png"/&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, there’s this, to balance it ou:&lt;/p&gt;
&lt;h1 class="fullname"&gt;&lt;img src="http://media.tumblr.com/tumblr_m4xxcbRwQw1r79f6v.png"/&gt;&lt;/h1&gt;&lt;/blockquote&gt;</description><link>http://jumph4x.net/post/24194116948</link><guid>http://jumph4x.net/post/24194116948</guid><pubDate>Fri, 01 Jun 2012 09:55:41 -0400</pubDate></item><item><title>"I’m going to give you a piece of advice when you’re trying to learn something new: Never listen to..."</title><description>“I’m going to give you a piece of advice when you’re trying to learn something new: Never listen to people who try to make beginners feel like losers. For whatever reason, some people get off on making beginners feel like they’re worthless for attempting something. Maybe it’s because they feel threatened by new entrants, or maybe they were picked on as kids and this makes them feel powerful. Who knows, but generally if they’re trying to make you feel like a loser because right now you’re not that good at something, then just ignore them. They suck.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Zed Shaw in &lt;a href="http://learncodethehardway.org/blog/MAY_15_2012.html"&gt;&lt;strong&gt;Please Don’t Become Anything, Especially Not A Programmer&lt;/strong&gt;&lt;/a&gt; (via &lt;a href="http://skillcrush.tumblr.com/" class="tumblr_blog"&gt;skillcrush&lt;/a&gt;)&lt;/em&gt;</description><link>http://jumph4x.net/post/23148248016</link><guid>http://jumph4x.net/post/23148248016</guid><pubDate>Tue, 15 May 2012 23:40:29 -0400</pubDate></item><item><title>BatchFactory - A Ruby Gem for Parsing Hashes from Excel Spreadsheets</title><description>&lt;p&gt;Heyyo,
Find the respository at &lt;a href="https://github.com/jumph4x/batch-factory"&gt;https://github.com/jumph4x/batch-factory&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Scenario&lt;/h2&gt;

&lt;ul&gt;&lt;li&gt;You maintain a large catalog of products and need to keep prices current or&lt;/li&gt;
&lt;li&gt;You create records from a spreadsheet your boss hands you or&lt;/li&gt;
&lt;li&gt;You have an external service that identifies spammers and you need to get rid of many at a time&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Solution&lt;/h2&gt;

&lt;p&gt;Use tabular input. I chose to support Excel 97-2000 format since there&amp;#8217;s a wonderful gem canonically  and appropriately called &amp;#8216;spreadsheet&amp;#8217;. Also because the whole world uses MS Office.&lt;/p&gt;

&lt;p&gt;Anyways, check out the project README for some quick copypasta for your IRB.&lt;/p&gt;

&lt;p&gt;Basically we use the first row as indexed headings\keys and iterate over the consecutive rows, forming a hash from each one. Columns with empty headings are ignored. Basic guard conditions are in place to make sure no empty keys are used and not garbage data is used.&lt;/p&gt;

&lt;p&gt;Enjoy :)&lt;/p&gt;</description><link>http://jumph4x.net/post/23055198373</link><guid>http://jumph4x.net/post/23055198373</guid><pubDate>Mon, 14 May 2012 16:37:00 -0400</pubDate></item><item><title>Testing Spree 1.0.x Extensions W/ Other Extension Dependencies</title><description>&lt;p&gt;With a store of any kind of serious size and functionality, one will indubitably find him\herself pulling in a lot of extension dependencies. At 50K products, we have a dozen or so extensions and there have occurred multiple points of overlap.&lt;/p&gt;

&lt;p&gt;This means that &lt;strong&gt;Extension A&lt;/strong&gt; decorated some part of Spree and then &lt;strong&gt;Extension B&lt;/strong&gt; came along and further made things more complex. Much like a git conflict, but will not resolve itself though any kind of clever recursion.&lt;/p&gt;

&lt;p&gt;This is where one usually finds him\herself creating internal decorators to combine the functionality of the two decorators.&lt;/p&gt;

&lt;p&gt;Technically, the semantics of expected behavior of extensions might change depending on what&amp;#8217;s been decorated so far, even if there is no codebase decoration overlap.&lt;/p&gt;

&lt;h2&gt;Consider: Google Base XML Generation&lt;/h2&gt;

&lt;p&gt;Very simply, when generating the XML feed for Google Base it is a straightforward process in store with a single externally facing entity. However, once we throw in multiple domains that lead to the same backend, we not might want to generate multiple feeds, each one only including the relevant products.&lt;/p&gt;

&lt;p&gt;This is exactly the case when you add &lt;a href="https://github.com/jumph4x/spree-google-base"&gt;spree-google-base&lt;/a&gt; to a store running on &lt;a href="https://github.com/spree/spree-multi-domain"&gt;spree-multi-domain&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Approach&lt;/h2&gt;

&lt;p&gt;I was tasked with updating both of these extensions to the new Spree 1.0.x patterns. I wanted maximum amount of test coverage within the actual extensions, so I chose to &lt;strong&gt;account for this behaviour expectation by writing conditional specs right within spree-google-base itself&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jumph4x/spree-google-base/blob/master/spec/lib/spree_google_base/feed_builder_spec.rb"&gt;example from master&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quick ProTip: conditional testing like this dictates that the dummy application actually bundle and bootstrap the said dependency extension, in our case spree-multi-store. The recipe is as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jumph4x/spree-google-base/blob/master/Gemfile"&gt;Gemfile&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[...]
gemspec
gem 'spree', '1.0.3'
gem 'spree_multi_domain', :git =&amp;gt; 'git://github.com/spree/spree-multi-domain.git'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Also, we now need to copy over the relevant migrations into the dummy app, before it gets migrated:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jumph4x/spree-google-base/blob/master/Rakefile#L30"&gt;Rakefile&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;puts 'Installing spree-multi-domain migrations [required for testing]'
dep_path = `bundle show spree_multi_domain`.chomp
migration_path = File.join(dep_path,'db','migrate')
dummy_path = File.join(FileUtils.pwd, 'spec', 'dummy', 'db')

FileUtils.mkdir_p(dummy_path)
FileUtils.cp_r(migration_path, dummy_path)

Rake::Task['common:test_app'].invoke
&lt;/code&gt;&lt;/pre&gt;</description><link>http://jumph4x.net/post/20067515804</link><guid>http://jumph4x.net/post/20067515804</guid><pubDate>Wed, 28 Mar 2012 13:13:13 -0400</pubDate></item><item><title>Jay Robinson: Quick note on why you should always use Progressive JPEGs if larger than 10KB</title><description>&lt;a href="http://notes.jayrobinson.org/post/19777516761/quick-note-on-why-you-should-always-use-progressive"&gt;Jay Robinson: Quick note on why you should always use Progressive JPEGs if larger than 10KB&lt;/a&gt;: &lt;p&gt;&lt;a href="http://notes.jayrobinson.org/post/19777516761/quick-note-on-why-you-should-always-use-progressive" class="tumblr_blog"&gt;jayrobinson&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Lately I’ve been doing a ton of reading on decreasing website load time, image optimization techniques, responsive loading for different devices, and every detail I can find in between. One quick takeaway is that I will always &lt;strong&gt;tick the “progressive” checkbox in Photoshop’s Save for Web&lt;/strong&gt; dialog…&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://jumph4x.net/post/19789603581</link><guid>http://jumph4x.net/post/19789603581</guid><pubDate>Fri, 23 Mar 2012 14:20:52 -0400</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m0f3gtQu3O1rpfiy4o1_400.gif"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://jumph4x.net/post/18906054410</link><guid>http://jumph4x.net/post/18906054410</guid><pubDate>Wed, 07 Mar 2012 12:23:35 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0iyflbApV1qdxrryo1_500.jpg"/&gt;&lt;br/&gt; Profile&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/tumblr_m0iyflbApV1qdxrryo2_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_m0iyflbApV1qdxrryo3_500.jpg"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_m0iyflbApV1qdxrryo4_500.jpg"/&gt;&lt;br/&gt; Stand next to&lt;br/&gt;&lt;br/&gt; </description><link>http://jumph4x.net/post/18905668865</link><guid>http://jumph4x.net/post/18905668865</guid><pubDate>Wed, 07 Mar 2012 12:11:00 -0500</pubDate></item><item><title>Rails Site w/ Old Google Index, Wrong Response Headers: application/rss+xml; charset=utf-8</title><description>&lt;p&gt;So we polished up our latest Rails 3 release. It has awesome sitemaps, radical canonicalization, awesome internal link distribution, proper REST. Everything is shiny.&lt;/p&gt;

&lt;p&gt;Pulled the trigger, but Google is slow to reindex our content. Hmm, wait 1 week, 2 weeks, 3 weeks. What the hell: indexes all pages but the most important ones - the product browsing pages (Products#index).&lt;/p&gt;

&lt;p&gt;What gives?! Boss is getting antsy, pressure is on! Spent all day reading about indexation issues, to no avail. Finally boss calls me over. He has Screaming Frog spider crawler on his screen. The rest of the site responds correctly with &amp;#8216;text/html; charset=utf-8&amp;#8217;, these fuckers however coming up as &amp;#8216;application/rss+xml; charset=utf-8&amp;#8217;.&lt;/p&gt;

&lt;p&gt;Bullshit. Open up rails console:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;uri = URI('http://www.fcpeuro.com/Volvo-parts/')

request,response = nil

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri
  response = http.request request # Net::HTTPResponse object
end

response.to_hash['content-type'] =&amp;gt; 'application/rss+xml; charset=utf-8' # &amp;lt;&amp;lt;&amp;lt; OMFG
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Someone is going to fire me. Opening up app/controllers/products_controller.rb#index&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;respond_to do |format|
  format.rss{ render :action =&amp;gt; 'feed', :layout =&amp;gt; false}
  format.html
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;See that? First one gets priority. Swap the two lines. Fire up rails console:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;uri = URI('http://localhost:3000/Volvo-parts/')

request,response = nil

Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri
  response = http.request request # Net::HTTPResponse object
end

response.to_hash['content-type'] =&amp;gt; 'text/html; charset=utf-8' # WHEW
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Also keep in mind, you can specify a catch-all mime-type responder to prevent rails from firing off blanks with:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;respond_to do |format|
  format.all
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good luck! And check out the full documentation here, don&amp;#8217;t take my word on it: &lt;a href="http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to"&gt;http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CEO basically saved the day. Not only did he identify the wrong response headers but also had to figure out how to analyze the HTML for invalid format. He ended up showing me a screen where he took two HTML outputs (one correct, one presumably incorrect) and had them broken up in excel and had diff formulas going to identify HTML differences.&lt;/p&gt;

&lt;p&gt;TLDR: my boss re-invents diff and finds out about wrong response header. Fix is to order formats within respond_to in descending priority (and have your mimetypes straight to begin with). Issue can be easily confirm through Google Webmaster Tools. Go to &amp;#8216;Fetch as Googlebot&amp;#8217; and later click on the &amp;#8216;success&amp;#8217; link.&lt;/p&gt;

&lt;p&gt;You will see response headers as well as body as seen by Googlebot.&lt;/p&gt;</description><link>http://jumph4x.net/post/18861469764</link><guid>http://jumph4x.net/post/18861469764</guid><pubDate>Tue, 06 Mar 2012 16:13:00 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m0b8z4QTcQ1r28f9oo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://jumph4x.net/post/18778459667</link><guid>http://jumph4x.net/post/18778459667</guid><pubDate>Mon, 05 Mar 2012 00:21:05 -0500</pubDate></item><item><title>Ensuring a Trailing Slash in Rails W/Out Dependencies</title><description>&lt;p&gt;For some reason this is more difficult in rails than it should be.&lt;/p&gt;

&lt;p&gt;The semantic value of the concept of having a trailing slash in the URL is basically one of representing a folder, a virtual directory. In RESTful terms, this represents a collection route, or an &lt;em&gt;:index&lt;/em&gt; action. Exhibit A:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;GET /products/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This page will list many products as links. In restful terms, this will lead to the &lt;em&gt;:show&lt;/em&gt; action. In this instance, we are representing a final destination, a member route. This dictates no trailing slash, semantically speaking:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;GET /products/some-permalink
GET /products/some--ther-permalink
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;So how to deal with this in Rails? Rails will naturally favor slash-less versions of all URLs, unless specified otherwise. Step one is to generate all internal links the correct way, to do this, simply pass the &lt;em&gt;:trailing_slash =&amp;gt; true&lt;/em&gt; key-value pair to your named route. You &lt;em&gt;ARE&lt;/em&gt; using named routes like you should be, right? Good.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;member_path(object, :trailing_slash =&amp;gt; true) or
collection_path(:trailing_slash =&amp;gt; true)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This will generate the correct link. Excellent. However, when you write your routing or functional tests, like you should be, testing the extreme input, you will notice that the slash-less routes work just fine and Rails acts as if everything is normal.&lt;/p&gt;

&lt;p&gt;I expected to be able to find a way to deal with this cleanly, by accessing a hash of sorts in the Rails&amp;#8217; &lt;em&gt;request&lt;/em&gt; object, but nothing came up. the &lt;em&gt;params&lt;/em&gt; hash omits this. As does &lt;em&gt;request.request_uri&lt;/em&gt;, &lt;em&gt;request.path&lt;/em&gt; and even &lt;em&gt;request.fullpath&lt;/em&gt;. Well, shiet, what&amp;#8217;s a bro to do?&lt;/p&gt;

&lt;p&gt;Well, take a look at my solution in the form of a pair of private methods in ApplicationController:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class ApplicationController &amp;lt; ActionController::Base

private
  def ensure_trailing_slash
    redirect_to url_for(params.merge(:trailing_slash =&amp;gt; true)), :status =&amp;gt; 301 unless trailing_slash?
  end

  def trailing_slash?
    request.env['REQUEST_URI'].match(/[^\?]+/).to_s.last == '/'
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then, when we need to use this in any actual controller, we simple declare the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;class ObjectController &amp;lt; ApplicationController
  before_filter :ensure_trailing_slash, :only =&amp;gt; :index
  [...]
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Notice I am using 301 redirects here, as a sound SEO measure.&lt;/p&gt;

&lt;p&gt;Hope this helped, until next time.&lt;/p&gt;</description><link>http://jumph4x.net/post/16395866916</link><guid>http://jumph4x.net/post/16395866916</guid><pubDate>Tue, 24 Jan 2012 00:30:23 -0500</pubDate></item><item><title>superamit:

Many of you have asked, so here’s what’s going on...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ly0hgdPYpF1qz72dio1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://tumblr.amitgupta.com/post/16079119166/many-of-you-have-asked-so-heres-whats-going-on" class="tumblr_blog"&gt;superamit&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Many of you have asked, so here’s what’s going on with me.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WHAT HAPPENED BEFORE&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;8/1979: &lt;strong&gt;Born.&lt;/strong&gt; Grew up in CT, built a killer eraser collection, fell in love with computers.&lt;/li&gt;
&lt;li&gt;Left college to start a company. &lt;strong&gt;Fell hard&lt;/strong&gt;. Fled to India for 3 months.&lt;/li&gt;
&lt;li&gt;Started 2nd company. Learned to be an adult. Fell in love with NYC.&lt;/li&gt;
&lt;li&gt;Moved to SF, discovered burritos &amp; some of my &lt;a href="http://photojojo.com/"&gt;fave people&lt;/a&gt; on Earth.&lt;/li&gt;
&lt;li&gt;9/2011: Got &lt;strong&gt;diagnosed with Leukemia!&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cried.&lt;/strong&gt; Went through 3 cycles of chemo. Hurt. Thought hard about what I want out of life. Grew up a second time.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;TODAY&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;… After over 100 drives organized by friends, family, and strangers, celebrity call-outs, a bazillion reblogs (&lt;a href="http://tumblr.amitgupta.com/post/11102689089/update-for-the-latest-on-how-to-help-amit-join"&gt;7000+&lt;/a&gt;!), tweets, and Facebook posts, press, fundraising and international drives organized by tireless friends, and a couple painful false starts, &lt;strong&gt;I’ve got a 10/10 matched donor&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;You all literally helped save my life. (And the lives of many others.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WHAT HAPPENS NEXT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tomorrow, I’ll be admitted to Dana Farber in Boston for 4-5 weeks.&lt;/p&gt;
&lt;p&gt;First I’ll get a second &lt;a href="http://en.wikipedia.org/wiki/Hickman_line"&gt;Hickman line&lt;/a&gt; to allow direct access to my heart (for meds and for nutrients if I’m not able to eat). Over the next week, the docs blast my body with a stiff chemo cocktail to try and eradicate all traces of cancer cells. In the process, &lt;strong&gt;the immune system I was born with, and my body’s ability to make blood, are destroyed.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next Friday, I get my donor’s stem cells by IV. I start on immunosuppressants to prevent my body from rejecting them (I’ll be on them for 12-18 months). For these weeks I’ve no immune system, so I’m severely vulnerable to viruses and bacteria. My hospital room and hallway become my world.&lt;/p&gt;
&lt;p&gt;Meanwhile, the stem cells make their way to my bone marrow and, with some luck, start producing platelets, red blood cells, and white blood cells. At this point, my blood type changes to the blood type of my donor. And &lt;strong&gt;my blood will now have my donor’s DNA, not my own.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is science fiction stuff.&lt;/em&gt; I can hardly believe it’s even possible, and there’s lots of chances for things to go wrong. It’s frightening.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AFTER THE TRANSPLANT&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Recovery to a new state of “normal” takes about a year, but there’s a few storm clouds hovering:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;My immune system is new, like a baby’s. I’m prone to getting sick.&lt;/li&gt;
&lt;li&gt;Just as with any organ transplant, there’s a chance of rejection. Except in this case, it’s my blood that’s the foreign body, and it touches every organ. They call it graft-vs-host-disease and it can cause health issues and organ complications for the rest of my life.&lt;/li&gt;
&lt;li&gt;Successful transplant or not, Leukemia can relapse. Stubborn mofo.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Overall, 75% of &lt;a href="http://en.wikipedia.org/wiki/Acute_myeloid_leukemia"&gt;AML&lt;/a&gt; transplant patients survive year one, 50% make it through year five. My odds are a little better since I’m young.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THE GREAT NEWS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I’ve got a long road ahead. But I’ve got a donor &amp; amazing family &amp; friends. A few months ago I didn’t have many options. Today I have a plan.&lt;/p&gt;
&lt;p&gt;I am alive. I start tomorrow. Wish me luck!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thank you.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://jumph4x.net/post/16087574442</link><guid>http://jumph4x.net/post/16087574442</guid><pubDate>Wed, 18 Jan 2012 19:34:35 -0500</pubDate></item><item><title>False Positive Tests in Rails, ProTip</title><description>&lt;p&gt;False positive tests are a special kind of evil. This is the kind of stuff that will cost you your annual raise.&lt;/p&gt;

&lt;p&gt;One of the ways this has recently crept up and done me wrong is very intuitive, yet so hard to find if you look in all the wrong places: caching.&lt;/p&gt;

&lt;p&gt;Specifically:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# app/controllers/your_controller.rb

Rails.cache.fetch(you_key) do
  # testable code
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;At this point, make sure your environment is set up to do what you want:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# environments/test.rb

config.action_controller.perform_caching = false
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Also take a look at my new and improved test helper. I use TestUnit with Shoulda:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# test/test_helper.rb
class ActiveSupport::TestCase
  setup do      
    Rails.cache.clear
  end
end

class ActionController::TestCase
  setup do      
    Rails.cache.clear
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Good luck, hope you never trick yourself into false confidence inspiring tests.&lt;/p&gt;</description><link>http://jumph4x.net/post/15621320280</link><guid>http://jumph4x.net/post/15621320280</guid><pubDate>Tue, 10 Jan 2012 10:59:23 -0500</pubDate></item><item><title>How are you doing?</title><description>&lt;p&gt;Better than most, thank you!&lt;/p&gt;</description><link>http://jumph4x.net/post/14170310264</link><guid>http://jumph4x.net/post/14170310264</guid><pubDate>Tue, 13 Dec 2011 11:52:23 -0500</pubDate></item><item><title>Checking for Select.h... Rake Aborted! AKA Wrong Number of Arguments (3 for 2)</title><description>&lt;p&gt;Was trying to build Webroar on our virtualized box for internal deployments and ran into this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Required directories created successfully. Building executables...
checking for select.h... rake aborted!
wrong number of arguments (3 for 2)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src="http://i.qkme.me/35hhi8.jpg" alt="First World Problem"/&gt;&lt;/p&gt;

&lt;p&gt;An hour later&amp;#8230;&lt;/p&gt;

&lt;p&gt;This is a rake version mismatch. The stuff expects 0.8.7, I had it installed along with 0.9.2 which was where the executable symlink was pointing to.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gem remove rake -v=0.9.2
gem install rake -v=0.8.7
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Doneski.&lt;/p&gt;</description><link>http://jumph4x.net/post/14170117988</link><guid>http://jumph4x.net/post/14170117988</guid><pubDate>Tue, 13 Dec 2011 11:46:00 -0500</pubDate></item><item><title>Current status: 3yr girlfriend anniversary. Hung up the piece...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lv3ov5ztE51qdxrryo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Current status: 3yr girlfriend anniversary. Hung up the piece above bed.&lt;/p&gt;</description><link>http://jumph4x.net/post/13195549883</link><guid>http://jumph4x.net/post/13195549883</guid><pubDate>Wed, 23 Nov 2011 01:33:05 -0500</pubDate></item><item><title>Testing Rails 3.0.9 w/ Spork and Spork-TestUnit: no such file to load -- test/unit/testresult (LoadError)</title><description>&lt;p&gt;Heyyo all,&lt;/p&gt;

&lt;p&gt;Quick one. Has this happened to you recently?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/home/denis/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load --     test/unit/testresult (LoadError)
from /home/denis/.rvm/rubies/ruby-1.9.2-    p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /home/denis/.rvm/gems/ruby-1.9.2-p290/gems/spork-testunit-0.0.6/bin/testdrb:7:in `&amp;lt;top     (required)&amp;gt;'
from /home/denis/.rvm/gems/ruby-1.9.2-p290/bin/testdrb:19:in `load'
from /home/denis/.rvm/gems/ruby-1.9.2-p290/bin/testdrb:19:in `&amp;lt;main&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Lock your spork-testunit at 0.0.5 and use:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;bundle exec spork T
bundle exec testdrb -I test/ [...]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternatively you can remove wrong version of testdrb executable:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; gem uninstall spork-testunit


Select gem to uninstall:
 1. spork-testunit-0.0.5
 2. spork-testunit-0.0.6
 3. All versions 
 &amp;gt; 2
&lt;/code&gt;&lt;/pre&gt;</description><link>http://jumph4x.net/post/12542286490</link><guid>http://jumph4x.net/post/12542286490</guid><pubDate>Tue, 08 Nov 2011 22:08:25 -0500</pubDate></item><item><title>minusmanhattan:

Exploring Abandoned Teufelsberg by Eddie Codel.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lubjx3zB3t1qzs3xio1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://www.minusmanhattan.com/post/12514792204/exploring-abandoned-teufelsberg-by-eddie-codel" class="tumblr_blog"&gt;minusmanhattan&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Exploring Abandoned Teufelsberg by Eddie Codel.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://jumph4x.net/post/12542119731</link><guid>http://jumph4x.net/post/12542119731</guid><pubDate>Tue, 08 Nov 2011 22:04:43 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_luda489F5j1qbk3p7o1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://jumph4x.net/post/12536299536</link><guid>http://jumph4x.net/post/12536299536</guid><pubDate>Tue, 08 Nov 2011 20:06:23 -0500</pubDate></item><item><title>Me. In salem</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ltxw7bCkPr1qdxrryo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Me. In salem&lt;/p&gt;</description><link>http://jumph4x.net/post/12164150442</link><guid>http://jumph4x.net/post/12164150442</guid><pubDate>Mon, 31 Oct 2011 12:52:23 -0400</pubDate></item><item><title>Me.</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_ltmmwtCNmx1qc4ih8o1_500.gif"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Me.&lt;/p&gt;</description><link>http://jumph4x.net/post/11937792791</link><guid>http://jumph4x.net/post/11937792791</guid><pubDate>Tue, 25 Oct 2011 23:44:02 -0400</pubDate></item></channel></rss>

