<?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>Christ follower, developer, curator, Milo &amp; coffee connoisseur.levi@levimccallum.com</description><title>Levi McCallum</title><generator>Tumblr (3.0; @levi)</generator><link>http://levimccallum.com/</link><item><title>Very nice set by Débruit.</title><description>&lt;embed type="application/x-shockwave-flash" src="http://assets.tumblr.com/swf/audio_player_black.swf?audio_file=http://www.tumblr.com/audio_file/23690222856/tumblr_m4jpm4NXqv1qz6ahc&amp;color=FFFFFF&amp;logo=soundcloud" height="27" width="207" quality="best" wmode="opaque"&gt;&lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Very nice set by Débruit.&lt;/p&gt;</description><link>http://levimccallum.com/post/23690222856</link><guid>http://levimccallum.com/post/23690222856</guid><pubDate>Thu, 24 May 2012 17:13:16 -0400</pubDate></item><item><title>Chloe is the coolest dog. (Taken with instagram)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m44sbdTkVq1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Chloe is the coolest dog. (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/23178196627</link><guid>http://levimccallum.com/post/23178196627</guid><pubDate>Wed, 16 May 2012 15:47:37 -0400</pubDate></item><item><title>$400 Water bottles. (Taken with Instagram at The Box Jelly)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m3hbxsMHE81qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;$400 Water bottles. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at The Box Jelly)&lt;/p&gt;</description><link>http://levimccallum.com/post/22366540878</link><guid>http://levimccallum.com/post/22366540878</guid><pubDate>Thu, 03 May 2012 23:49:04 -0400</pubDate></item><item><title>This guy inspires me to never give up! (Taken with instagram)</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m28dihjwh51qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;This guy inspires me to never give up! (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/20798451956</link><guid>http://levimccallum.com/post/20798451956</guid><pubDate>Mon, 09 Apr 2012 17:11:05 -0400</pubDate></item><item><title>Using CanCan in a Rails Engine</title><description>&lt;p&gt;I&amp;#8217;m in the process of converting an existing Rails app into an Engine. It&amp;#8217;s turned out to be a trying task. One thing that stumped me today was properly implementing CanCan in the engine&amp;#8217;s newly namespaced environment. My controllers that implement CanCan&amp;#8217;s &lt;code&gt;load_and_authorize_resource&lt;/code&gt; method were namespaced in an &lt;code&gt;Admin &lt;/code&gt;module.&lt;/p&gt;
&lt;script src="https://gist.github.com/2258817.js?file=users_controller.rb" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Initially, I continued to receive this pretty useless error:&lt;/p&gt;
&lt;script src="https://gist.github.com/2258871.js?file=gistfile1.txt" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Apparently, CanCan builds its reference to the resource model object by singularizing the controller&amp;#8217;s namespace and referencing it as a constant. Instead of a reference to my MyEngine::User model, CanCan references by default MyEngine::Admin::User. To fix this, CanCan provides a :class option to predefine the resource class name (more about this &lt;a href="https://github.com/ryanb/cancan/pull/424"&gt;here&lt;/a&gt;). I simply modified my method call to this:&lt;/p&gt;
&lt;script src="https://gist.github.com/2258876.js?file=gistfile1.rb" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;Unfortunately, this was only half the problem. Although CanCan now knew about the correct resource model, it did not know where to find the correct Ability class:&lt;/p&gt;
&lt;script src="https://gist.github.com/2258877.js?file=gistfile1.txt" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;CanCan &lt;a href="https://github.com/ryanb/cancan/blob/master/lib/cancan/controller_additions.rb#L348"&gt;has a method called current_ability&lt;/a&gt; that &amp;#8220;creates and returns the current users&amp;#8217;s ability and caches it.&amp;#8221; The problem is, the Ability that the method instantiates is not correctly referencing the namespaced Ability class. My Ability class lives in &lt;code&gt;app/models/my_engine/ability.rb&lt;/code&gt; and I needed to notify CanCan that it exists there. I did this by re-defining the current_ability method in my &lt;code&gt;Admin::ApplicationController&lt;/code&gt;:&lt;/p&gt;
&lt;script src="https://gist.github.com/2258883.js?file=gistfile1.rb" type="text/javascript"&gt;&lt;/script&gt;&lt;p&gt;That was a journey of dependency hell I hope no one else has to go through. I hope this helps some other thirsty traveler.&lt;/p&gt;</description><link>http://levimccallum.com/post/20205511380</link><guid>http://levimccallum.com/post/20205511380</guid><pubDate>Fri, 30 Mar 2012 22:58:00 -0400</pubDate></item><item><title>Big in Japan. (Taken with instagram)</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m19sdjyeo81qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Big in Japan. (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/19720588775</link><guid>http://levimccallum.com/post/19720588775</guid><pubDate>Thu, 22 Mar 2012 00:56:07 -0400</pubDate></item><item><title>Reverse engineering Draw Something. (Taken with instagram)</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0yvecUEdn1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Reverse engineering Draw Something. (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/19389711537</link><guid>http://levimccallum.com/post/19389711537</guid><pubDate>Fri, 16 Mar 2012 03:27:47 -0400</pubDate></item><item><title>Really digging @jeremysnell’s Stairway to Heaven cover ...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0nqvkVg601qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Really digging @jeremysnell’s Stairway to Heaven cover  shot on innov8. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Fresh Cafe)&lt;/p&gt;</description><link>http://levimccallum.com/post/19047678304</link><guid>http://levimccallum.com/post/19047678304</guid><pubDate>Sat, 10 Mar 2012 02:16:32 -0500</pubDate></item><item><title>Ka’a @simplesessions playing with Kai’s Power Tools...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0jq6ryU3Z1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Ka’a @simplesessions playing with Kai’s Power Tools 2012 (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Wall-to-Wall Studios)&lt;/p&gt;</description><link>http://levimccallum.com/post/18930172655</link><guid>http://levimccallum.com/post/18930172655</guid><pubDate>Wed, 07 Mar 2012 22:11:15 -0500</pubDate></item><item><title>Coolest ice cream cake ever. (Taken with instagram)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m0colpSIqB1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Coolest ice cream cake ever. (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/18716573328</link><guid>http://levimccallum.com/post/18716573328</guid><pubDate>Sun, 04 Mar 2012 02:53:49 -0500</pubDate></item><item><title>Prima (Taken with Instagram at Prima Kailua)</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0co9gZ9lF1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Prima (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Prima Kailua)&lt;/p&gt;</description><link>http://levimccallum.com/post/18716361242</link><guid>http://levimccallum.com/post/18716361242</guid><pubDate>Sun, 04 Mar 2012 02:46:28 -0500</pubDate></item><item><title>JJ Dolan’s, let’s do this. (Taken with Instagram at...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_m0an2pDmDm1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;JJ Dolan’s, let’s do this. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Wall-to-Wall Studios)&lt;/p&gt;</description><link>http://levimccallum.com/post/18648577282</link><guid>http://levimccallum.com/post/18648577282</guid><pubDate>Sat, 03 Mar 2012 00:25:36 -0500</pubDate></item><item><title>Little Village, let’s do this. (Taken with Instagram at...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m0akwriGTd1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Little Village, let’s do this. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Wall-to-Wall Studios)&lt;/p&gt;</description><link>http://levimccallum.com/post/18646287669</link><guid>http://levimccallum.com/post/18646287669</guid><pubDate>Fri, 02 Mar 2012 23:38:51 -0500</pubDate></item><item><title>The other 15% of animals interviewed expressed disapproval at...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m068gsdU1N1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;The other 15% of animals interviewed expressed disapproval at the sale of this coffee. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Wall-to-Wall Studios)&lt;/p&gt;</description><link>http://levimccallum.com/post/18506440681</link><guid>http://levimccallum.com/post/18506440681</guid><pubDate>Wed, 29 Feb 2012 15:19:39 -0500</pubDate></item><item><title>When you’re out of coffee, there’s always...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m02v44obO41qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;When you’re out of coffee, there’s always @TheManifest. (Taken with &lt;a href="http://instagr.am"&gt;Instagram&lt;/a&gt; at Wall-to-Wall Studios)&lt;/p&gt;</description><link>http://levimccallum.com/post/18407558365</link><guid>http://levimccallum.com/post/18407558365</guid><pubDate>Mon, 27 Feb 2012 19:38:28 -0500</pubDate></item><item><title>Now THIS is how you make Milo. (Taken with instagram)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lzwtyrU2971qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Now THIS is how you make Milo. (Taken with &lt;a href="http://instagr.am"&gt;instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://levimccallum.com/post/18197140165</link><guid>http://levimccallum.com/post/18197140165</guid><pubDate>Fri, 24 Feb 2012 13:28:02 -0500</pubDate></item><item><title>"The students who were initially praised for their effort worked hard at figuring out the puzzles...."</title><description>“The students who were initially praised for their effort worked hard at figuring out the puzzles. Kids praised for their smarts, on the other hand, were easily discouraged.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.wired.com/wiredscience/2011/10/why-do-some-people-learn-faster-2/"&gt;Why Do Some People Learn Faster?&lt;/a&gt;&lt;/em&gt;</description><link>http://levimccallum.com/post/18140330607</link><guid>http://levimccallum.com/post/18140330607</guid><pubDate>Thu, 23 Feb 2012 14:20:39 -0500</pubDate></item><item><title>"So the consultants, now having lost their primary customer, were at a bar one day, and one of them..."</title><description>“So the consultants, now having lost their primary customer, were at a bar one day, and one of them (named L. Ron Hubbard) said: “This nickel-a-line-of-code gig is lame. You know where the real money is at? You start your own religion.” And that’s how both Extreme Programming and Scientology were born.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://steve-yegge.blogspot.com/2006/09/good-agile-bad-agile_27.html"&gt;Stevey’s Blog Rants: Good Agile, Bad Agile&lt;/a&gt;&lt;/em&gt;</description><link>http://levimccallum.com/post/18029716744</link><guid>http://levimccallum.com/post/18029716744</guid><pubDate>Tue, 21 Feb 2012 16:58:33 -0500</pubDate></item><item><title>Boris Smus compares and breaks down Backbone and Ember Javascript frameworks</title><description>&lt;a href="http://smus.com/backbone-and-ember"&gt;Boris Smus compares and breaks down Backbone and Ember Javascript frameworks&lt;/a&gt;: &lt;p&gt;&lt;blockquote&gt;In practice, it’s very difficult to remain productive if you’re writing both an app and a framework at the same time. Unfortunately this was my tendency when using Backbone. I hate reinventing the wheel. Especially if it’s kind of lopsided.&lt;/blockquote&gt;

I spent the majority of 2010 working with SproutCore. On reflection of the experience, the problem Boris describes was evident. The project presented itself as an application development platform, but with constant shifts in architecture and virtually no useful documentation, I found myself focusing on the tools rather than the product I was building.

As an application developer, there is a constant battle over my time when it comes to developing frameworks and actually shipping consumer applications. While I would like to mature my tools to ensure development productivity, I can’t help but see the ultimate value in shipping. I completely agree with Boris—unless you’re John Carmack, tools that hone focus onto what is important is key.&lt;/p&gt;</description><link>http://levimccallum.com/post/17703192427</link><guid>http://levimccallum.com/post/17703192427</guid><pubDate>Thu, 16 Feb 2012 02:17:40 -0500</pubDate></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lzd52pOztU1qz6ahco1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://levimccallum.com/post/17589352467</link><guid>http://levimccallum.com/post/17589352467</guid><pubDate>Mon, 13 Feb 2012 22:16:01 -0500</pubDate></item></channel></rss>

