<?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>London based developer specialising in all things Ruby.

Felix on Github</description><title>felix clack</title><generator>Tumblr (3.0; @felixclack)</generator><link>http://felixclack.com/</link><item><title>Timelines with Redis</title><description>&lt;p&gt;Another new rails project and another request for an activity feed/timeline of user activity.&lt;/p&gt;

&lt;p&gt;So I go looking on &lt;a href="http://github.com"&gt;github&lt;/a&gt; for a gem to make this quicker and wonder if anything new has been published&amp;#8230; &lt;a href="https://github.com/jamesgolick/timeline_fu"&gt;timeline_fu&lt;/a&gt; - check, &lt;a href="https://github.com/christospappas/streama"&gt;streama&lt;/a&gt; (for mongoid) - check, is that it?&lt;/p&gt;

&lt;p&gt;Time to roll my own&amp;#8230; Introducing &lt;a href="https://github.com/felixclack/redis-timeline"&gt;redis-timeline&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A redis backed timeline for the next totally unnecessary inclusion of a timeline feature in your next project. ;)&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gem install redis-timeline
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;or in your Gemfile&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gem 'redis-timeline'
&lt;/code&gt;&lt;/pre&gt;</description><link>http://felixclack.com/post/18897259324</link><guid>http://felixclack.com/post/18897259324</guid><pubDate>Wed, 07 Mar 2012 10:58:47 +0000</pubDate></item><item><title>MVC for Titanium</title><description>&lt;a href="https://github.com/dawsontoth/TiAir"&gt;MVC for Titanium&lt;/a&gt;: &lt;p&gt;I’ve dabbled with Titanium before, and it seems a handy platform for building mobile apps with. This may be a useful tool to use with it.&lt;/p&gt;</description><link>http://felixclack.com/post/16109763215</link><guid>http://felixclack.com/post/16109763215</guid><pubDate>Thu, 19 Jan 2012 09:37:21 +0000</pubDate><category>titanium</category><category>ios</category><category>android</category><category>mobile</category><category>develop</category></item><item><title>Youth Lagoon are making magic in my speakers</title><description>&lt;a href="http://open.spotify.com/album/4oGbmR7dENuqtRyvX8MShq"&gt;Youth Lagoon are making magic in my speakers&lt;/a&gt;</description><link>http://felixclack.com/post/15615057574</link><guid>http://felixclack.com/post/15615057574</guid><pubDate>Tue, 10 Jan 2012 11:06:00 +0000</pubDate><category>music</category><category>recommendation</category><category>spotify</category></item><item><title>Giant jenga</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_lpzpim1aK11qz4mimo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Giant jenga&lt;/p&gt;</description><link>http://felixclack.com/post/8968082242</link><guid>http://felixclack.com/post/8968082242</guid><pubDate>Mon, 15 Aug 2011 23:08:46 +0100</pubDate></item><item><title>VibeDeck: Direct to fan music sales. 0% commission</title><description>&lt;a href="http://vibedeck.com"&gt;VibeDeck: Direct to fan music sales. 0% commission&lt;/a&gt;</description><link>http://felixclack.com/post/5417545529</link><guid>http://felixclack.com/post/5417545529</guid><pubDate>Thu, 12 May 2011 10:54:00 +0100</pubDate></item><item><title>Appcelerator Titanium + Coffeescript + MVC</title><description>&lt;p&gt;So I&amp;#8217;ve been using Appcelerator&amp;#8217;s mobile development framework, &lt;a href="http://www.appcelerator.com/products/titanium-mobile-application-development/"&gt;Titanium&lt;/a&gt;, lately, and overall the experience has been good.&lt;/p&gt;

&lt;p&gt;The benefits of being able to make use of my Javascript knowledge to build a multi platform mobile app that runs natively are huge.&lt;/p&gt;

&lt;p&gt;There are a few problems with it though when you&amp;#8217;re coming from Ruby.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;getting a testing framework to work with it is a pain.&lt;/li&gt;
&lt;li&gt;a small community of developers using it, so often when you hit a problem, there&amp;#8217;s nowhere else to turn, you&amp;#8217;re either the only one with this problem or no-one else has found a solution. Either way, you&amp;#8217;ve just got to figure it out yourself.&lt;/li&gt;
&lt;li&gt;Ugly code. Let&amp;#8217;s face it, Javascript doesn&amp;#8217;t look good.&lt;/li&gt;
&lt;li&gt;Where&amp;#8217;s the MVC? The example app provided by Appcelerator is a masterclass in how to avoid separating concerns and jam everything into 1 file. Unfortunately, it&amp;#8217;s a pattern that I often come across in Javascript.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is where &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;coffeescript&lt;/a&gt; comes in. Suddenly javascript starts looking good and you feel better about using it. Combine this with a sensible folder structure and separate your code into a more MVC-y way of doing things and Titanium looks like a contender for doing some serious app building.&lt;/p&gt;</description><link>http://felixclack.com/post/3918508364</link><guid>http://felixclack.com/post/3918508364</guid><pubDate>Thu, 17 Mar 2011 10:50:00 +0000</pubDate><category>appcelerator</category><category>ios</category><category>development</category><category>coffeescript</category><category>mvc</category></item><item><title>Coming soon</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lfa3p8Ik7k1qz4mimo1_400.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://cowritehq.com"&gt;Coming soon&lt;/a&gt;&lt;/p&gt;</description><link>http://felixclack.com/post/2827795227</link><guid>http://felixclack.com/post/2827795227</guid><pubDate>Wed, 19 Jan 2011 16:41:00 +0000</pubDate></item><item><title>Apache and Snow Leopard 10.6.5 upgrade glitch</title><description>&lt;p&gt;I upgraded to 10.6.5 today and promptly discovered that I couldn&amp;#8217;t restart Apache. I kept getting this error:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid argument
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;A quick search and I found &lt;a href="http://notfornoone.com/2010/11/snow-leopard-10-6-5-and-apachectl/"&gt;this post&lt;/a&gt; and it worked for me.&lt;/p&gt;</description><link>http://felixclack.com/post/1543183441</link><guid>http://felixclack.com/post/1543183441</guid><pubDate>Thu, 11 Nov 2010 14:57:34 +0000</pubDate><category>apache</category><category>snow leopard</category><category>os x</category><category>10.6.5</category></item><item><title>Passenger Error: The application spawner server exited unexpectedly: Unexpected end-of-file detected</title><description>&lt;p&gt;I got this error this morning after I thought it&amp;#8217;d be a good idea to migrate my new Rails 3 app to Ruby 1.9.2.&lt;/p&gt;

&lt;p&gt;Kind of a weird error because it doesn&amp;#8217;t seem that helpful on the surface.&lt;/p&gt;

&lt;p&gt;Digging into the Apache error logs revealed this error mesage:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;[BUG] cross-thread violation on rb_gc()
(null) 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ok, now we&amp;#8217;re getting somewhere. This is an error due to gems being compiled in a different version of Ruby. Ah, now it makes sense. I was using bundler with the path set to /my/app/gems and they were all compiled against REE 1.8.7.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;rm -rf gems
bundle install --path gems
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Fixed that problem. I then ran into another error message:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;git://github.com/binarylogic/authlogic.git not checked out
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I&amp;#8217;m running the edge version of Authlogic and for some reason Passenger was having a hard time with it. Right, could be to do with me running preview 4 of Passenger 3. A quick&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gem install passenger
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and an update to httpd.conf later and my app was back.&lt;/p&gt;</description><link>http://felixclack.com/post/1486413618</link><guid>http://felixclack.com/post/1486413618</guid><pubDate>Fri, 05 Nov 2010 07:50:53 +0000</pubDate><category>rails</category><category>passenger</category><category>ruby</category><category>server</category><category>os x</category></item><item><title>Override a rake task</title><description>&lt;p&gt;Today I ran into a problem where we have a company gem that includes a bunch of helpful rake tasks, one of which imports a production database into your dev db.&lt;/p&gt;

&lt;p&gt;I wanted to do some stuff after this rake import task that was specific to the application I&amp;#8217;m working on.&lt;/p&gt;

&lt;p&gt;I first tried to overwrite the task, like you would do with any Ruby method. No dice though, this had the effect of running my lib/import.rake task before the gem task that I was trying to override.&lt;/p&gt;

&lt;p&gt;I saw &lt;a href="http://playtype.net/past/2008/3/27/multiple_databases_in_rails_without/"&gt;a&lt;/a&gt; &lt;a href="http://http://www.taknado.com/2007/7/30/overriding-rake-tasks/"&gt;few&lt;/a&gt; &lt;a href="http://foliosus.com/blog/howto-monkeypatch-rake-overriding-a-rake-task"&gt;posts&lt;/a&gt; about this but they all seem to be overkill for what I wanted. I didn&amp;#8217;t want to monkey patch Rake unless I really had to.&lt;/p&gt;

&lt;p&gt;Then I struck gold&amp;#8230;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Rake::Task['some:task:name'].clear`
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;One line to stop the original task and then I could crack on and do whatever I wanted.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;namespace :db do
  task :import =&amp;gt; :environment do
    Rake::Task["db:import"].clear
    ...
    Rake::Task["my_post_import_task"].invoke
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Simple.&lt;/p&gt;</description><link>http://felixclack.com/post/1470674900</link><guid>http://felixclack.com/post/1470674900</guid><pubDate>Wed, 03 Nov 2010 13:56:30 +0000</pubDate></item><item><title>Sparrow</title><description>&lt;p&gt;&lt;a href="http://paulyoung.tv/post/1379290920" class="tumblr_blog"&gt;paulyoung&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://sparrowmailapp.com" title=""&gt;&lt;img src="http://media.tumblr.com/tumblr_laqnm42PZW1qznqrs.png" alt=""/&gt;&lt;/a&gt;
&lt;br/&gt;&lt;a href="http://sparrowmailapp.com" title=""&gt;Sparrow&lt;/a&gt; is like &lt;a href="http://www.atebits.com/tweetie-mac"&gt;Tweetie&lt;/a&gt; for Gmail.&lt;/p&gt;&lt;/blockquote&gt;</description><link>http://felixclack.com/post/1453360342</link><guid>http://felixclack.com/post/1453360342</guid><pubDate>Mon, 01 Nov 2010 13:59:52 +0000</pubDate></item><item><title>Bruce Williams: Rails IE Conditional Tag Plugin</title><description>&lt;a href="http://codefluency.com/post/1100393830/ie-conditional-tag-plugin"&gt;Bruce Williams: Rails IE Conditional Tag Plugin&lt;/a&gt;: &lt;p&gt;&lt;a href="http://codefluency.com/post/1100393830/ie-conditional-tag-plugin" class="tumblr_blog"&gt;codefluency&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;There are a number of ways to support defining different CSS styles for specific versions of Internet Explorer:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Known CSS Hacks (ie, tricking the parser’s tiny brain with strange incantations)&lt;/li&gt;
&lt;li&gt;Using IE-specific &lt;a href="http://www.quirksmode.org/css/condcom.html" title="QuirksMode: Conditional Comments"&gt;conditional comments&lt;/a&gt; around link tags to additional stylesheets&lt;/li&gt;
&lt;li&gt;Applying…&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;</description><link>http://felixclack.com/post/1203627810</link><guid>http://felixclack.com/post/1203627810</guid><pubDate>Tue, 28 Sep 2010 09:11:32 +0100</pubDate></item><item><title>Scraping your own API</title><description>&lt;p&gt;Ever wished that &lt;a href="http://myspace.com"&gt;MySpace&lt;/a&gt; had an API for adding gigs to your band&amp;#8217;s profile? If you view source on the add an event page on MySpace you might notice the url is prefixed with /API. Hmm, is this a sign of an impending release? Hopefully.&lt;/p&gt;

&lt;p&gt;In the meantime you&amp;#8217;ll need to roll your own.&lt;/p&gt;

&lt;p&gt;You could use any of the current crop of libraries for http wizardry, &lt;a href="http://github.com/archiloque/rest-client"&gt;RestClient&lt;/a&gt; or &lt;a href="http://github.com/jnunemaker/httparty"&gt;HTTParty&lt;/a&gt; maybe, but we&amp;#8217;ve opted for &lt;a href="http://github.com/tenderlove/mechanize"&gt;Mechanize&lt;/a&gt;, which gives us the flexibility to interact with page elements as well as do the usual request/response stuff to urls.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s nothing fancy about MySpace&amp;#8217;s forms, just post a bunch of params to the url and you&amp;#8217;re golden. They&amp;#8217;re even using JSON in the response.&lt;/p&gt;

&lt;p&gt;The toughest part is that there&amp;#8217;s no documentation as to what is required for the request to work, it&amp;#8217;s pretty straightforward to view source and see what&amp;#8217;s getting submitted though, so I&amp;#8217;m sure you&amp;#8217;ll be alright.&lt;/p&gt;</description><link>http://felixclack.com/post/697148381</link><guid>http://felixclack.com/post/697148381</guid><pubDate>Mon, 14 Jun 2010 12:00:40 +0100</pubDate><category>ruby</category><category>rails</category><category>api</category><category>scraping</category><category>myspace</category></item><item><title>wycats git workflow</title><description>&lt;a href="http://yehudakatz.com/2010/05/13/common-git-workflows/"&gt;wycats git workflow&lt;/a&gt;: &lt;p&gt;Get rid of those merge commits&lt;/p&gt;</description><link>http://felixclack.com/post/679931615</link><guid>http://felixclack.com/post/679931615</guid><pubDate>Wed, 09 Jun 2010 12:53:00 +0100</pubDate></item><item><title>RT @defunkt: Wow, http://github.com/cloudhead/http-console is really cool // love it</title><description>&lt;p&gt;RT @defunkt: Wow, &lt;a href="http://github.com/cloudhead/http-console"&gt;http://github.com/cloudhead/http-console&lt;/a&gt; is really cool // love it&lt;/p&gt;</description><link>http://felixclack.com/post/656605575</link><guid>http://felixclack.com/post/656605575</guid><pubDate>Wed, 02 Jun 2010 14:16:47 +0100</pubDate></item><item><title>The last 8 months of my life&amp;#8230; http://bit.ly/aMfk4v @bandcentral launches</title><description>&lt;p&gt;The last 8 months of my life&amp;#8230; &lt;a href="http://bit.ly/aMfk4v"&gt;http://bit.ly/aMfk4v&lt;/a&gt; @bandcentral launches&lt;/p&gt;</description><link>http://felixclack.com/post/576512394</link><guid>http://felixclack.com/post/576512394</guid><pubDate>Thu, 06 May 2010 17:50:32 +0100</pubDate></item><item><title>dns problems.</title><description>&lt;p&gt;dns problems.&lt;/p&gt;</description><link>http://felixclack.com/post/555891103</link><guid>http://felixclack.com/post/555891103</guid><pubDate>Wed, 28 Apr 2010 14:36:14 +0100</pubDate></item><item><title>anyone got a dribbble invite going spare?</title><description>&lt;p&gt;anyone got a dribbble invite going spare?&lt;/p&gt;</description><link>http://felixclack.com/post/493430636</link><guid>http://felixclack.com/post/493430636</guid><pubDate>Sat, 03 Apr 2010 15:47:49 +0100</pubDate></item><item><title>got my @getcloudapp account. UI is great.</title><description>&lt;p&gt;got my @getcloudapp account. UI is great.&lt;/p&gt;</description><link>http://felixclack.com/post/489826002</link><guid>http://felixclack.com/post/489826002</guid><pubDate>Thu, 01 Apr 2010 23:05:04 +0100</pubDate></item><item><title>RT @tonysteward: This is good: OAuth access to IMAP/SMTP in Gmail http://tr.im/TTv9 #security...</title><description>&lt;p&gt;RT @tonysteward: This is good: OAuth access to IMAP/SMTP in Gmail &lt;a href="http://tr.im/TTv9"&gt;http://tr.im/TTv9&lt;/a&gt; #security #killpasswords /via @chrismessina&lt;/p&gt;</description><link>http://felixclack.com/post/486265307</link><guid>http://felixclack.com/post/486265307</guid><pubDate>Wed, 31 Mar 2010 09:32:13 +0100</pubDate></item></channel></rss>

