var tumblr_api_read = {"tumblelog":{"title":"dospuntocero","description":"","name":"2puntocero","timezone":"US\/Eastern","cname":"blog.dospuntocero.com.mx","feeds":[]},"posts-start":0,"posts-total":"22","posts-type":false,"posts":[{"id":"12857069005","url":"http:\/\/blog.dospuntocero.com.mx\/post\/12857069005","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/12857069005\/model-default-values","type":"regular","date-gmt":"2011-11-16 00:12:26 GMT","date":"Tue, 15 Nov 2011 19:12:26","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1321402346,"format":"html","reblog-key":"EK2Lw76a","slug":"model-default-values","regular-title":"Model default values","regular-body":"<p>When looking for the best way to make default values, I&#8217;ve found that you shouldn&#8217;t rely on the DB for these. So in order to integrate these on your Model, I usually follow the next best practive:<\/p>\n\n<pre><div class=\"line\" id=\"LC1\">\u00a0<span class=\"k\">class<\/span> <span class=\"nc\">User<\/span><\/div><div class=\"line\" id=\"LC2\">\u00a0\u00a0\u00a0\u00a0<span class=\"n\">after_initialize<\/span> <span class=\"ss\">:init<\/span><\/div><div class=\"line\" id=\"LC3\"><br\/><\/div><div class=\"line\" id=\"LC4\">\u00a0\u00a0\u00a0\u00a0<span class=\"k\">def<\/span> <span class=\"nf\">init<\/span><\/div><div class=\"line\" id=\"LC5\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"nb\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">number<\/span>  <span class=\"o\">||=<\/span> <span class=\"mi\">0<\/span><span class=\"o\">.<\/span><span class=\"mi\">0<\/span><\/div><div class=\"line\" id=\"LC6\">\u00a0\u00a0\u00a0\u00a0<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC7\">\u00a0\u00a0<span class=\"k\">end<\/span> <\/div><\/pre>\n\n<p>This way it will initialize to 0.0 if the value is nil<\/p>"},{"id":"12000514133","url":"http:\/\/blog.dospuntocero.com.mx\/post\/12000514133","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/12000514133\/custom-validation-twitter-bootstrap-checkbox-part-2","type":"regular","date-gmt":"2011-10-27 20:06:53 GMT","date":"Thu, 27 Oct 2011 16:06:53","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1319746013,"format":"html","reblog-key":"Yz1qIcb7","slug":"custom-validation-twitter-bootstrap-checkbox-part-2","regular-title":"Custom Validation (twitter bootstrap checkbox). Part 2","regular-body":"<p>After creating the custom input on <a href=\"http:\/\/blog.dospuntocero.com.mx\/post\/11454654022\/custom-validation-twitter-bootstrap-checkbox\">Part 1<\/a>, we now needed to include a custom getter for each of these inputs. We could set up a method for each input inside our model but that wouldn&#8217;t be as cool, so we create a gem with the following behavior:\n<\/p>\n\n<pre>\nObject.instance_eval do \n   def check_for_check( *attrs )\n       attrs.each do | attr |\n           self.class_eval %Q{\n                def #{attr}\n                    #{attr}_check ? read_attribute(:#{attr}) : 0\n                end\n           }\n       end\n   end\nend\n<\/pre>\n\n<p>This will make it so that we only have to add this to our model:<\/p>\n\n<pre>\ncheck_for_check :foo, :bar\n<\/pre>"},{"id":"11570461811","url":"http:\/\/blog.dospuntocero.com.mx\/post\/11570461811","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/11570461811\/custom-input-with-twitter-bootstrap","type":"regular","date-gmt":"2011-10-17 14:00:05 GMT","date":"Mon, 17 Oct 2011 10:00:05","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1318860005,"format":"html","reblog-key":"gAVwiT5w","slug":"custom-input-with-twitter-bootstrap","regular-title":"Custom Input with Twitter Bootstrap","regular-body":"<p>Using <a href=\"http:\/\/github.com\/plataformatec\/simple_form\">simple_form<\/a> and <a href=\"http:\/\/twitter.github.com\/bootstrap\/\">Twitter&#8217;s bootstrap<\/a> we can implement a custom input for the prepend left box used in bootstrap.\n<br\/><br\/>\nFirst you create an inputs folder under your app directory and then a file named <b>left_box_input.rb<\/b> with the following code:\n\n<pre><div class=\"line\" id=\"LC1\"><span class=\"k\">class<\/span> <span class=\"nc\">LeftBoxInput<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">SimpleForm<\/span><span class=\"o\">::<\/span><span class=\"no\">Inputs<\/span><span class=\"o\">::<\/span><span class=\"no\">Base<\/span><\/div><div class=\"line\" id=\"LC2\">\u00a0\u00a0<span class=\"k\">def<\/span> <span class=\"nf\">input<\/span><\/div><div class=\"line\" id=\"LC3\">\u00a0\u00a0\u00a0\u00a0<span class=\"s2\">\"&lt;div class='input-prepend'&gt;&lt;span class='add-on'&gt;<\/span><span class=\"si\">#{<\/span><span class=\"n\">options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:symbol<\/span><span class=\"o\">]<\/span><span class=\"si\">}<\/span><span class=\"s2\">&lt;\/span&gt;<\/span><span class=\"si\">#{<\/span><span class=\"vi\">@builder<\/span><span class=\"o\">.<\/span><span class=\"n\">text_field<\/span><span class=\"p\">(<\/span><span class=\"n\">attribute_name<\/span><span class=\"p\">,<\/span> <span class=\"n\">input_html_options<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"s2\">&lt;\/div&gt;\"<\/span><span class=\"o\">.<\/span><span class=\"n\">html_safe<\/span><\/div><div class=\"line\" id=\"LC4\">\u00a0\u00a0<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC6\"><br\/><\/div><\/pre>\n\nThen in your views just call it the following way:\n<pre><div class=\"line\" id=\"LC1\"><span class=\"cp\">&lt;%=<\/span> <span class=\"n\">f<\/span><span class=\"o\">.<\/span><span class=\"n\">input<\/span> <span class=\"ss\">:foo<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:as<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:left_box<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:symbol<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"2 + 2 ?\"<\/span> <span class=\"cp\">%&gt;<\/span><\/div><\/pre>\n\nThen you will have in your views something like this:\n<br\/><img src=\"http:\/\/media.tumblr.com\/tumblr_lt30bdqJIo1qz5mew.png\"\/><\/p>"},{"id":"11454654022","url":"http:\/\/blog.dospuntocero.com.mx\/post\/11454654022","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/11454654022\/custom-validation-twitter-bootstrap-checkbox","type":"regular","date-gmt":"2011-10-14 23:42:00 GMT","date":"Fri, 14 Oct 2011 19:42:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1318635720,"format":"html","reblog-key":"RUF0vuPJ","slug":"custom-validation-twitter-bootstrap-checkbox","regular-title":"Custom Validation (twitter bootstrap checkbox)","regular-body":"<p>After jumping the wagon with <a href=\"http:\/\/twitter.github.com\/bootstrap\/\">Twitter Bootstrap<\/a> for a new client app we are working on, I found myself in to some problem trying to implement this type of input:\n<br\/><img src=\"http:\/\/media.tumblr.com\/tumblr_lt2wdtiJHZ1qz5mew.png\"\/><br\/>\nWe only have one input let&#8217;s say <b>name<\/b> and we wan&#8217;t to validate it&#8217;s presence when the check is true. The check is a virtual attribute named <b>name_check<\/b>. So using <a href=\"https:\/\/github.com\/plataformatec\/simple_form\">simple_form<\/a> gem for this form.\n<br\/>\nWe need to create the custom input element first, we do this by creating an <b>inputs<\/b> folder under the <b>app<\/b> folder. We name our file <b>prepend_checkbox_input.rb<\/b>\n\n<pre><div class=\"line\" id=\"LC1\"><span class=\"k\">class<\/span> <span class=\"nc\">PrependCheckboxInput<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">SimpleForm<\/span><span class=\"o\">::<\/span><span class=\"no\">Inputs<\/span><span class=\"o\">::<\/span><span class=\"no\">Base<\/span><\/div><div class=\"line\" id=\"LC2\">\u00a0\u00a0<span class=\"k\">def<\/span> <span class=\"nf\">input<\/span><\/div><div class=\"line\" id=\"LC3\">\u00a0\u00a0\u00a0\u00a0<span class=\"s2\">\"&lt;div class='input-prepend'&gt;<\/span><\/div><div class=\"line\" id=\"LC4\"><span class=\"s2\">      &lt;label class='add-on active' title='<\/span><span class=\"si\">#{<\/span><span class=\"n\">options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:tooltip<\/span><span class=\"o\">]<\/span><span class=\"si\">}<\/span><span class=\"s2\">' rel='tooltip' &gt;<\/span><\/div><div class=\"line\" id=\"LC5\"><span class=\"s2\">        <\/span><span class=\"si\">#{<\/span><span class=\"vi\">@builder<\/span><span class=\"o\">.<\/span><span class=\"n\">check_box<\/span><span class=\"p\">(<\/span><span class=\"n\">attribute_name<\/span><span class=\"o\">.<\/span><span class=\"n\">to_s<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">'_check'<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"s2\"><\/span><\/div><div class=\"line\" id=\"LC6\"><span class=\"s2\">      &lt;\/label&gt;<\/span><\/div><div class=\"line\" id=\"LC7\"><span class=\"s2\">      <\/span><span class=\"si\">#{<\/span><span class=\"vi\">@builder<\/span><span class=\"o\">.<\/span><span class=\"n\">text_field<\/span><span class=\"p\">(<\/span><span class=\"n\">attribute_name<\/span><span class=\"p\">,<\/span>  <span class=\"n\">input_html_options<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span><span class=\"s2\"><\/span><\/div><div class=\"line\" id=\"LC8\"><span class=\"s2\">      &lt;span class='help-inline'&gt;<\/span><\/div><div class=\"line\" id=\"LC9\"><span class=\"s2\">        <\/span><span class=\"si\">#{<\/span><span class=\"n\">options<\/span><span class=\"o\">[<\/span><span class=\"ss\">:help<\/span><span class=\"o\">]<\/span><span class=\"si\">}<\/span><span class=\"s2\"><\/span><\/div><div class=\"line\" id=\"LC10\"><span class=\"s2\">      &lt;\/span&gt;<\/span><\/div><div class=\"line\" id=\"LC11\"><span class=\"s2\">    &lt;\/div&gt;\"<\/span><span class=\"o\">.<\/span><span class=\"n\">html_safe<\/span><\/div><div class=\"line\" id=\"LC12\">\u00a0\u00a0<span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC13\"><span class=\"k\">end<\/span><\/div><div class=\"line\" id=\"LC14\"><br\/><\/div><\/pre>\n\nThe input will include an option for tooltip, it will automatically append &#8216;_check&#8217; to the name of the input to create the check box element, the text field with all the regular HTML options and a help line under it.\n<br\/>\nThis will be how we call it under our views:\n<pre><div class=\"line\" id=\"LC1\">\u00a0\u00a0<span class=\"cp\">&lt;%=<\/span> <span class=\"n\">f<\/span><span class=\"o\">.<\/span><span class=\"n\">input<\/span> <span class=\"ss\">:name<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:as<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"ss\">:prepend_checkbox<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:tooltip<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"Has name?\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:help<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"Please insert your name\"<\/span> <span class=\"cp\">%&gt;<\/span><\/div><\/pre>\n\nNow we include validations, for custom validators we need implement this one under our initializers:\n<pre>\nActiveRecord::Base.class_eval do\n  def self.validates_checkbox(*attrs)\n    attrs.each do |attr_name|\n    validates attr_name, :presence =&gt; true, :if =&gt; \"#{attr_name.to_s + '_check'} == '1'\" \n    end\n  end\nend\n<\/pre>\n<br\/>\nWe user <b>*attrs<\/b> as our input so that we can declare our validations on a single line like so:\n<br\/><pre>\n validates_checkbox :name, :phone, :number\n<\/pre><\/p>"},{"id":"9084749237","url":"http:\/\/blog.dospuntocero.com.mx\/post\/9084749237","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/9084749237\/rails-3-1-custom-serialize","type":"regular","date-gmt":"2011-08-18 17:16:47 GMT","date":"Thu, 18 Aug 2011 13:16:47","bookmarklet":1,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1313687807,"format":"html","reblog-key":"EtPc1C8W","slug":"rails-3-1-custom-serialize","regular-title":"Rails 3.1 custom serialize","regular-body":"<p>A new feature that really makes our lives easier is the custom serialize option. Let&#8217;s say that your DB requires that when you save a serializable attribute to be in a CSV form instead of the YAML default.\n<br\/><br\/>\nIf this is the case then you could use the following\n<br\/><br\/><pre>\n  class CommaSeparatedList\n    def load(text)\n      return unless text\n      text.split(\",\")\n    end\n\n    def dump(text)\n      text.join(\",\")\n    end\n  end\n<\/pre>\n<br\/><br\/>\nSo after creating this class you just call it as a parameter in your serialize call\n<br\/><br\/><pre>\n  serialize :names, CommaSeparatedList.new\n<\/pre>\n<br\/><br\/>\nIn this way the next time you save to your DB your data will be stored in CSV form.<\/p>"},{"id":"8783831487","url":"http:\/\/blog.dospuntocero.com.mx\/post\/8783831487","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/8783831487\/rails-3-1-asset-pipeline","type":"regular","date-gmt":"2011-08-11 17:33:06 GMT","date":"Thu, 11 Aug 2011 13:33:06","bookmarklet":1,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1313083986,"format":"html","reblog-key":"FxLAEVyZ","slug":"rails-3-1-asset-pipeline","regular-title":"Rails 3.1 asset pipeline","regular-body":"<p>When you&#8217;re trying out the new asset pipeline it <strike>might<\/strike> will be hard to debug any CSS\/JS since it will all be compressed in to one file.\n<br\/><br\/>\nWhen you use the link\/include tag remember to add the next parameter \n<br\/><pre>\nstylesheet_link_tag :admin, :debug =&gt; Rails.env.development?\njavascript_include_tag :admin, :debug =&gt; Rails.env.development?\n<\/pre>\n<br\/>\nThis way it will only server the files separately when in development mode.<\/p>"},{"id":"8754806024","url":"http:\/\/blog.dospuntocero.com.mx\/post\/8754806024","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/8754806024\/installing-rails-3-1-pre-on-osx-lion","type":"regular","date-gmt":"2011-08-11 00:02:50 GMT","date":"Wed, 10 Aug 2011 20:02:50","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1313020970,"format":"html","reblog-key":"vEohNziX","slug":"installing-rails-3-1-pre-on-osx-lion","regular-title":"Installing Rails 3.1 --pre on OSX Lion","regular-body":"<p>After trying several ways of doing\n<pre>\ngem install rails --pre\n<\/pre>\nand still getting errors, I found the following to do the trick\n<pre>\nrvm gemset rails --pre\n<\/pre>\nIt will save you a couple of hours.<\/p>"},{"id":"4598696136","url":"http:\/\/blog.dospuntocero.com.mx\/post\/4598696136","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/4598696136\/paperclip-scopes","type":"regular","date-gmt":"2011-04-14 03:29:00 GMT","date":"Wed, 13 Apr 2011 23:29:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1302751740,"format":"html","reblog-key":"JTdCtd7X","slug":"paperclip-scopes","regular-title":"Paperclip Scopes","regular-body":"<p>A nifty pair of scopes for when you&#8217;re working with attachments on Paperclip that are images or other type of content.<\/p>\n<p><span>\n<pre><span class=\"c1\"># For finding images as in Article.attachments.images <\/span><span class=\"c1\"><br\/><\/span><span class=\"n\">scope<\/span> <span class=\"ss\">:images<\/span><span class=\"p\">,<\/span> <span class=\"n\">where<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"file_content_type LIKE ?\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"image%\"<\/span><span class=\"p\">)<\/span><br\/><span class=\"c1\"># For finding other files Article.attachments.docs<\/span><span class=\"c1\"><br\/><\/span><span class=\"n\">scope<\/span> <span class=\"ss\">:docs<\/span><span class=\"p\">,<\/span> <span class=\"n\">where<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"file_content_type NOT LIKE ?\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"image%\"<\/span><span class=\"p\">)<\/span><\/pre>\n<\/span><\/p>"},{"id":"2833207418","url":"http:\/\/blog.dospuntocero.com.mx\/post\/2833207418","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/2833207418\/new-stickers","type":"regular","date-gmt":"2011-01-19 23:48:36 GMT","date":"Wed, 19 Jan 2011 18:48:36","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1295480916,"format":"html","reblog-key":"jeqrBMiy","slug":"new-stickers","regular-title":"New Stickers","regular-body":"<p>We are getting new stickers for our friends and clients who want to put them in the laptops\/cars\/bathroom stalls.<\/p>\n<p>Here is a preview, get them while they&#8217;re hot.<\/p>\n<p><img width=\"500\" alt=\"Sticker\" src=\"http:\/\/c0013564.cdn1.cloudfiles.rackspacecloud.com\/x2_398ba2c\"\/><\/p>"},{"id":"1665183738","url":"http:\/\/blog.dospuntocero.com.mx\/post\/1665183738","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/1665183738\/my-favorite-spec-of-the-day","type":"regular","date-gmt":"2010-11-24 02:56:00 GMT","date":"Tue, 23 Nov 2010 21:56:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1290567360,"format":"html","reblog-key":"1OI1NBHn","slug":"my-favorite-spec-of-the-day","regular-title":"My favorite Spec of the day","regular-body":"<p>Here is the controller spec!<\/p>\n<p><span> <\/span><\/p>\n<pre><span class=\"k\">def<\/span> <span class=\"nf\">notify<\/span><\/pre>\n<pre><span class=\"nf\">\u00a0<\/span><span class=\"vi\"><span>\t<\/span>@user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"o\">.<\/span><span class=\"n\">find<\/span><span class=\"p\">(<\/span><span class=\"n\">params<\/span><span class=\"o\">[<\/span><span class=\"ss\">:id<\/span><span class=\"o\">]<\/span><span class=\"p\">)<\/span><\/pre>\n<pre><span class=\"p\">\u00a0<\/span><span class=\"k\"><span><span>\t<\/span><\/span>if<\/span> <span class=\"vi\">@user<\/span><span class=\"o\">.<\/span><span class=\"n\">is_expert?<\/span><\/pre>\n<pre><span class=\"n\"><\/span><span class=\"vi\"><span>\t<span>\t<\/span><\/span>@topic<\/span><span class=\"o\">.<\/span><span class=\"n\">experts<\/span> <span class=\"o\">&lt;&lt;<\/span> <span class=\"vi\">@user<\/span><\/pre>\n<pre><span class=\"vi\"><\/span><span class=\"k\"><span><span>\t<\/span><\/span>end<\/span>\u00a0\u00a0<span class=\"vi\">@<\/span><\/pre>\n<pre><span class=\"vi\"><span>\t<\/span>user<\/span><span class=\"o\">.<\/span><span class=\"n\">notify_about_topic!<\/span><span class=\"p\">(<\/span><span class=\"vi\">@topic<\/span><span class=\"p\">)<\/span><\/pre>\n<pre><span class=\"p\"><\/span><span class=\"k\">end<\/span><br\/><\/pre>\n<!-- <mce:script _mce_src=\"https:\/\/gist.github.com\/713016.js?file=gistfile1.rb\"><\/mce:script> -->\n<p>And the implementation<\/p>\n<!-- <mce:script _mce_src=\"https:\/\/gist.github.com\/713983.js?file=gistfile1.rb\"><\/mce:script> -->\n<p><span> <\/span><\/p>\n<pre><span class=\"n\">it<\/span> <span class=\"s1\">'should notify user and add to leader board if user is an expert'<\/span> <span class=\"k\">do<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>user<\/span> <span class=\"o\">=<\/span> <span class=\"n\">mock_model<\/span><span class=\"p\">(<\/span><span class=\"no\">User<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:is_expert?<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"kp\">true<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>topic<\/span> <span class=\"o\">=<\/span> <span class=\"n\">mock_model<\/span><span class=\"p\">(<\/span><span class=\"no\">Topic<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:id<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"mi\">1<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>collection<\/span> <span class=\"o\">=<\/span> <span class=\"n\">mock<\/span><span class=\"p\">(<\/span><span class=\"s1\">'col'<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>collection<\/span><span class=\"o\">.<\/span><span class=\"n\">should_receive<\/span><span class=\"p\">(<\/span><span class=\"ss\">:&lt;&lt;<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">with<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>topic<\/span><span class=\"o\">.<\/span><span class=\"n\">should_receive<\/span><span class=\"p\">(<\/span><span class=\"ss\">:experts<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">and_return<\/span><span class=\"p\">(<\/span><span class=\"n\">collection<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>user<\/span><span class=\"o\">.<\/span><span class=\"n\">should_receive<\/span><span class=\"p\">(<\/span><span class=\"ss\">:notify_about_topic!<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">with<\/span><span class=\"p\">(<\/span><span class=\"n\">topic<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"no\"><span>\t<\/span>User<\/span><span class=\"o\">.<\/span><span class=\"n\">should_receive<\/span><span class=\"p\">(<\/span><span class=\"ss\">:find<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">with<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">and_return<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"no\"><span>\t<\/span>Topic<\/span><span class=\"o\">.<\/span><span class=\"n\">should_receive<\/span><span class=\"p\">(<\/span><span class=\"ss\">:find<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">with<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">and_return<\/span><span class=\"p\">(<\/span><span class=\"n\">topic<\/span><span class=\"p\">)<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>post<\/span> <span class=\"ss\">:notify<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:topic_id<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">topic<\/span><span class=\"o\">.<\/span><span class=\"n\">id<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:id<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:format<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s1\">'js'<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>response<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"n\">be_succes<\/span>\u00a0\u00a0<\/pre>\n<pre><span class=\"n\"><span>\t<\/span>assigns<\/span><span class=\"p\">(<\/span><span class=\"ss\">:user<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">should<\/span> <span class=\"o\">==<\/span> <span class=\"n\">user<\/span><\/pre>\n<pre><span class=\"n\"><\/span><span class=\"k\">end<\/span><\/pre>\n<p>Isn&#8217;t this nice to have completely decoupled specs from other outside logic, isn&#8217;t Rspec and TDD great?<\/p>"},{"id":"1402543366","url":"http:\/\/blog.dospuntocero.com.mx\/post\/1402543366","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/1402543366\/bullshit-jimray-the-new-37-signals-office","type":"photo","date-gmt":"2010-10-26 01:08:18 GMT","date":"Mon, 25 Oct 2010 21:08:18","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1288055298,"format":"html","reblog-key":"07SFFAve","slug":"bullshit-jimray-the-new-37-signals-office","photo-caption":"<p><a href=\"http:\/\/bullshit.tumblr.com\/post\/1296598735\/jimray-the-new-37-signals-office-looks-like-it\">bullshit<\/a>:<\/p>\n<blockquote>\n<p><a href=\"http:\/\/jimray.tumblr.com\/post\/1295601753\/the-new-37-signals-office-looks-like-it-belongs-on\">jimray<\/a>:<\/p>\n<blockquote>\n<p>The new <a href=\"http:\/\/37signals.com\/svn\/posts\/2593-official-pictures-of-our-new-office\">37 Signals office<\/a> looks like it belongs on <a href=\"http:\/\/37signals.com\/svn\/posts\/2593-official-pictures-of-our-new-office\">Unhappy Hipsters<\/a>. Eating-lunch-all-by-himself-DHH is the new <a href=\"http:\/\/knowyourmeme.com\/memes\/keanu-is-sad-sad-keanu\">Sad Keanu<\/a>.<\/p>\n<\/blockquote>\n<p>Look at all the things he\u2019s <em>not<\/em> eating. (<a href=\"http:\/\/rubyonrails.ytmnd.com\/\">reference<\/a>)<\/p>\n<\/blockquote>","photo-link-url":"http:\/\/37assets.s3.amazonaws.com\/svn\/newofficeshots\/_3144012442.jpg","width":"1000","height":"701","photo-url-1280":"http:\/\/www.tumblr.com\/photo\/1280\/2puntocero\/1402543366\/1\/tumblr_la5mcxtC8X1qz4s19","photo-url-500":"http:\/\/25.media.tumblr.com\/tumblr_la5mcxtC8X1qz4s19o1_500.jpg","photo-url-400":"http:\/\/30.media.tumblr.com\/tumblr_la5mcxtC8X1qz4s19o1_400.jpg","photo-url-250":"http:\/\/27.media.tumblr.com\/tumblr_la5mcxtC8X1qz4s19o1_250.jpg","photo-url-100":"http:\/\/24.media.tumblr.com\/tumblr_la5mcxtC8X1qz4s19o1_100.jpg","photo-url-75":"http:\/\/27.media.tumblr.com\/tumblr_la5mcxtC8X1qz4s19o1_75sq.jpg","photos":[]},{"id":"939531981","url":"http:\/\/blog.dospuntocero.com.mx\/post\/939531981","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/939531981\/mass-payment-paypal","type":"regular","date-gmt":"2010-08-12 00:33:00 GMT","date":"Wed, 11 Aug 2010 20:33:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1281573180,"format":"html","reblog-key":"1OM7Mq1J","slug":"mass-payment-paypal","regular-title":"Mass Payment - Paypal","regular-body":"<p>When trying to figure out how to send multiple payments to different Paypal users, I stumbled into the Mass Payment feature.<\/p>\n<p>This feature allows to send multiple payments in one call but more importantly is that the only charge %2 of the payment cap at $1 USD. Also you can send the payments in multiple currencies.<\/p>\n<p>After digging around the web there wasn&#8217;t any post about how to make use of this feature using Ruby&#8230; that is after diving deep into ActiveMerchant&#8217;s documentation that I found the following:<\/p>\n<p><span>\n<pre><span class=\"n\">gateway<\/span><span class=\"o\">.<\/span><span class=\"n\">transfer<\/span> <span class=\"mi\">1000<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'bob@example.com'<\/span><span class=\"p\">,<\/span>\u00a0\u00a0\u00a0\u00a0<span class=\"ss\">:subject<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"The money I owe you\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:note<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"Sorry it's so late\"<\/span><br\/>\u00a0\u00a0<span class=\"n\">gateway<\/span><span class=\"o\">.<\/span><span class=\"n\">transfer<\/span> <span class=\"o\">[<\/span><span class=\"mi\">1000<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'fred@example.com'<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span>\u00a0\u00a0\u00a0\u00a0<span class=\"o\">[<\/span><span class=\"mi\">2450<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'wilma@example.com'<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:note<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s1\">'You will receive another payment on 3\/24'<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span>\u00a0\u00a0\u00a0\u00a0<span class=\"o\">[<\/span><span class=\"mi\">2000<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'barney@example.com'<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span>\u00a0\u00a0\u00a0\u00a0<span class=\"ss\">:subject<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"Your Earnings\"<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:note<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"s2\">\"Thanks for your business.\"<\/span><\/pre>\n<\/span><\/p>\n<p>You gotta love ruby! and thanks ActiveMerchant<\/p>\n<p><span><span class=\"method-args\"><span> <\/span><\/span><\/span><\/p>\n<pre><span><br\/><\/span><span><br\/><\/span><\/pre>"},{"id":"751409956","url":"http:\/\/blog.dospuntocero.com.mx\/post\/751409956","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/751409956\/rails-3-metal","type":"regular","date-gmt":"2010-06-29 23:28:00 GMT","date":"Tue, 29 Jun 2010 19:28:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1277854080,"format":"html","reblog-key":"IcYqfmfF","slug":"rails-3-metal","regular-title":"Rails 3 + Metal","regular-body":"<p>There has been a lot of talk about the new changes being introduced into rails 3, trying to upgrade current applications I found out a recipe for upgrading your Metal code:<\/p>\n<p>The first thing is to change<\/p>\n<p><span style=\"font-family: 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 16px; font-size: 12px; white-space: pre;\"><span style=\"line-height: 1.4em; color: #0086b3; padding: 0px; margin: 0px;\" class=\"nb\">require<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">(<\/span><span style=\"line-height: 1.4em; color: #008080; padding: 0px; margin: 0px;\" class=\"no\">File<\/span><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">.<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"n\">dirname<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">(<\/span><span style=\"line-height: 1.4em; color: #999999; padding: 0px; margin: 0px;\" class=\"bp\">__FILE__<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">)<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">+<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8221;\/..\/..\/config\/environment&#8221;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">)<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"k\">unless<\/span> <span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"n\">defined?<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">(<\/span><span style=\"line-height: 1.4em; color: #008080; padding: 0px; margin: 0px;\" class=\"no\">Rails<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">)<\/span><\/span><\/p>\n<p>into<\/p>\n<p><span style=\"font-family: 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 16px; font-size: 12px; white-space: pre;\"><span style=\"line-height: 1.4em; color: #0086b3; padding: 0px; margin: 0px;\" class=\"nb\">require<\/span> <span style=\"line-height: 1.4em; color: #008080; padding: 0px; margin: 0px;\" class=\"no\">File<\/span><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">.<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"n\">expand_path<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">(<\/span><span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s1\">&#8217;..\/..\/..\/config\/environment&#8217;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">,<\/span> <span style=\"line-height: 1.4em; color: #999999; padding: 0px; margin: 0px;\" class=\"bp\">__FILE__<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">)<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"k\">unless<\/span> <span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"n\">defined?<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">(<\/span><span style=\"line-height: 1.4em; color: #008080; padding: 0px; margin: 0px;\" class=\"no\">Rails<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">)<\/span><\/span><\/p>\n<p>This way using the new system for the absolute path to your app.<\/p>\n<p>Next depending on the function of your app you should change<\/p>\n<p><span style=\"font-family: 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 16px; font-size: 12px; white-space: pre;\"><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">[<\/span><span style=\"line-height: 1.4em; color: #009999; padding: 0px; margin: 0px;\" class=\"mi\">404<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">,<\/span> <span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">{<\/span><span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;Content-Type&#8221;<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">=&gt;<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;text\/html&#8221;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">},<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">[<\/span><span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;Not Found&#8221;<\/span><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">]]<\/span><\/span><\/p>\n<p>in to<\/p>\n<p><span style=\"font-family: 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 16px; font-size: 12px; white-space: pre;\"><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">[<\/span><span style=\"line-height: 1.4em; color: #009999; padding: 0px; margin: 0px;\" class=\"mi\">404<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">,<\/span> <span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">{<\/span><span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;Content-Type&#8221;<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">=&gt;<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;text\/html&#8221;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">,<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;X-Cascade&#8221;<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">=&gt;<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;pass&#8221;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">},<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">[<\/span><span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s2\">&#8220;Not Found&#8221;<\/span><span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">]]<\/span><\/span><\/p>\n<p>This\u00a0&#8221;X-Cascade&#8221; =&gt; &#8220;pass&#8221; allows for the call to keep going through your routes and see if any other catches this call.<\/p>\n<p>Last is to declare your action on the router, this wasn&#8217;t necessary on Rails 2 since Metal would go through Rack before Rails, but now that Rails is an actual Rack app, we need to express all of our routes.<\/p>\n<p><span style=\"font-family: 'Bitstream Vera Sans Mono', Courier, monospace; line-height: 16px; font-size: 12px; white-space: pre;\"><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"n\">match<\/span> <span style=\"line-height: 1.4em; color: #dd1144; padding: 0px; margin: 0px;\" class=\"s1\">&#8216;\/metal_path&#8217;<\/span><span style=\"line-height: 1.4em; padding: 0px; margin: 0px;\" class=\"p\">,<\/span> <span style=\"line-height: 1.4em; color: #990073; padding: 0px; margin: 0px;\" class=\"ss\">:to<\/span> <span style=\"line-height: 1.4em; font-weight: bold; padding: 0px; margin: 0px;\" class=\"o\">=&gt;<\/span> <span style=\"line-height: 1.4em; color: #008080; padding: 0px; margin: 0px;\" class=\"no\">MetalClass<\/span><\/span><\/p>"},{"id":"492073238","url":"http:\/\/blog.dospuntocero.com.mx\/post\/492073238","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/492073238\/la-vitrine","type":"regular","date-gmt":"2010-04-02 23:57:50 GMT","date":"Fri, 02 Apr 2010 19:57:50","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1270252670,"format":"html","reblog-key":"nDtUHfEL","slug":"la-vitrine","regular-title":"La Vitrine","regular-body":"<p>Moment Factory developed the interactive system and designed the interactive content.<\/p>\n<p>The installation includes tracking devices and low-resolution LED displays and is capable of showing many different visualizations based on the presence and movement of people.<\/p>\n<p>\n<object width=\"640\" height=\"385\">\n<param name=\"movie\" value=\"http:\/\/www.youtube.com\/v\/6xriYUzJ9Ls&amp;hl=en_US&amp;fs=1&amp;\"><param name=\"allowFullScreen\" value=\"true\"><param name=\"allowscriptaccess\" value=\"always\"><embed src=\"http:\/\/www.youtube.com\/v\/6xriYUzJ9Ls&amp;hl=en_US&amp;fs=1&amp;\" type=\"application\/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"640\" height=\"385\"><\/embed><\/object>\n<\/p>\n<p><span>Visitors can interact with the installation every night from 7 PM to 11 PM.<br\/><strong>La Vitrine<\/strong><br\/><em>145, rue Sainte-Catherine Ouest, Montr\u00e9al.<\/em><\/span><\/p>"},{"id":"439772385","url":"http:\/\/blog.dospuntocero.com.mx\/post\/439772385","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/439772385\/go-flag","type":"link","date-gmt":"2010-03-10 22:44:59 GMT","date":"Wed, 10 Mar 2010 17:44:59","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1268261099,"format":"html","reblog-key":"zdwSNXRH","slug":"go-flag","link-text":"go: flag","link-url":"http:\/\/golang.tumblr.com\/post\/439732032\/flag","link-description":"<blockquote>\n<p>Checking out the <a href=\"http:\/\/golang.org\/pkg\/flag\/#PrintDefaults\">flag package<\/a>, Go\u2019s built in command line argument parser. Here\u2019s a simple example:<\/p>\n<pre><code>\/\/ flag.go\npackage main import ( \"flag\" \"fmt\"\n) var code *int = flag.Int(\"areacode\", 716, \"give me your codes\") func main() { fmt.Printf(\"Testing out flags!\\n\"); flag.Parse();...<\/code><\/pre>\n<\/blockquote>"},{"id":"288329544","url":"http:\/\/blog.dospuntocero.com.mx\/post\/288329544","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/288329544\/rails-tutorial","type":"link","date-gmt":"2009-12-18 03:02:07 GMT","date":"Thu, 17 Dec 2009 22:02:07","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1261105327,"format":"html","reblog-key":"YIOPKY1d","slug":"rails-tutorial","link-text":"Rails Tutorial","link-url":"http:\/\/www.railstutorial.org\/","link-description":"<p>For all new\u00a0comers\u00a0to RAILS please do check it out.<\/p>\n<p>Si eres nuevo en RAILS, este tutorial es el mejor.<\/p>"},{"id":"286818485","url":"http:\/\/blog.dospuntocero.com.mx\/post\/286818485","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/286818485\/tokio-cabinet","type":"regular","date-gmt":"2009-12-17 01:44:23 GMT","date":"Wed, 16 Dec 2009 20:44:23","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1261014263,"format":"html","reblog-key":"kwYK9WWk","slug":"tokio-cabinet","regular-title":"Tokio Cabinet","regular-body":"<p>Tokyo Cabinet resources<\/p>\n<p><a><a href=\"http:\/\/1978th.net\/tokyocabinet\/index.html\">http:\/\/1978th.net\/tokyocabinet\/index.html<\/a><\/a><\/p>\n<p>official page and presentation (really dense)<\/p>\n<p><a><a href=\"http:\/\/1978th.net\/tokyocabinet\/rubydoc\/\">http:\/\/1978th.net\/tokyocabinet\/rubydoc\/<\/a><\/a><\/p>\n<p>cabinet rdoc<\/p>\n<p><a><a href=\"http:\/\/openwferu.rubyforge.org\/tokyo.html\">http:\/\/openwferu.rubyforge.org\/tokyo.html<\/a><\/a><\/p>\n<p>install instructions, best way to learn is to play in the mud<\/p>\n<p><a><a href=\"http:\/\/www.igvita.com\/2009\/02\/13\/tokyo-cabinet-beyond-key-value-store\/\">http:\/\/www.igvita.com\/2009\/02\/13\/tokyo-cabinet-beyond-key-value-store\/<\/a><\/a><\/p>\n<p>relly good overview and performance analys of ruby Tokyo libraries<\/p>"},{"id":"240853945","url":"http:\/\/blog.dospuntocero.com.mx\/post\/240853945","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/240853945\/video-de-mi-presentacion-para-el-sitio-pio-la","type":"video","date-gmt":"2009-11-12 00:39:00 GMT","date":"Wed, 11 Nov 2009 19:39:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1257986340,"format":"html","reblog-key":"Zfa4PRP3","slug":"video-de-mi-presentacion-para-el-sitio-pio-la","video-caption":"<p>Video de mi presentaci\u00f3n para el sitio Pio.la sobre Mongo Mapper<\/p>\n<script type=\"text\/javascript\"><\/script>","video-source":"<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"320\" height=\"260\" id=\"utv358138\" name=\"utv_n_977073\"><param name=\"flashvars\" value=\"autoplay=false\" \/><param name=\"allowfullscreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" \/><embed flashvars=\"autoplay=false\" width=\"320\" height=\"260\" allowfullscreen=\"true\" allowscriptaccess=\"always\" id=\"utv358138\" name=\"utv_n_977073\" src=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" type=\"application\/x-shockwave-flash\" \/><\/object>","video-player":"<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"400\" height=\"325\" id=\"utv358138\" name=\"utv_n_977073\"><param name=\"flashvars\" value=\"autoplay=false\" \/><param name=\"allowfullscreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" \/><embed flashvars=\"autoplay=false\" width=\"400\" height=\"325\" allowfullscreen=\"true\" allowscriptaccess=\"always\" id=\"utv358138\" name=\"utv_n_977073\" src=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" type=\"application\/x-shockwave-flash\"><\/embed><\/object>","video-player-500":"<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"500\" height=\"406\" id=\"utv358138\" name=\"utv_n_977073\"><param name=\"flashvars\" value=\"autoplay=false\" \/><param name=\"allowfullscreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" \/><embed flashvars=\"autoplay=false\" width=\"500\" height=\"406\" allowfullscreen=\"true\" allowscriptaccess=\"always\" id=\"utv358138\" name=\"utv_n_977073\" src=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" type=\"application\/x-shockwave-flash\"><\/embed><\/object>","video-player-250":"<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"250\" height=\"203\" id=\"utv358138\" name=\"utv_n_977073\"><param name=\"flashvars\" value=\"autoplay=false\" \/><param name=\"allowfullscreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" \/><embed flashvars=\"autoplay=false\" width=\"250\" height=\"203\" allowfullscreen=\"true\" allowscriptaccess=\"always\" id=\"utv358138\" name=\"utv_n_977073\" src=\"http:\/\/www.ustream.tv\/flash\/video\/2536578\" type=\"application\/x-shockwave-flash\"><\/embed><\/object>"},{"id":"239551523","url":"http:\/\/blog.dospuntocero.com.mx\/post\/239551523","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/239551523\/ideas","type":"photo","date-gmt":"2009-11-10 22:57:24 GMT","date":"Tue, 10 Nov 2009 17:57:24","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1257893844,"format":"html","reblog-key":"tAhEsB8i","slug":"ideas","photo-caption":"<p>Ideas<\/p>","width":"948","height":"2654","photo-url-1280":"http:\/\/www.tumblr.com\/photo\/1280\/2puntocero\/239551523\/1\/tumblr_ksx13qqrfk1qzm8wf","photo-url-500":"http:\/\/24.media.tumblr.com\/tumblr_ksx13qqrfk1qzm8wfo1_500.jpg","photo-url-400":"http:\/\/30.media.tumblr.com\/tumblr_ksx13qqrfk1qzm8wfo1_400.jpg","photo-url-250":"http:\/\/24.media.tumblr.com\/tumblr_ksx13qqrfk1qzm8wfo1_250.jpg","photo-url-100":"http:\/\/29.media.tumblr.com\/tumblr_ksx13qqrfk1qzm8wfo1_100.jpg","photo-url-75":"http:\/\/28.media.tumblr.com\/tumblr_ksx13qqrfk1qzm8wfo1_75sq.jpg","photos":[]},{"id":"201300297","url":"http:\/\/blog.dospuntocero.com.mx\/post\/201300297","url-with-slug":"http:\/\/blog.dospuntocero.com.mx\/post\/201300297\/this-is-the-most-accurate-representation-of-what","type":"photo","date-gmt":"2009-09-30 23:54:00 GMT","date":"Wed, 30 Sep 2009 19:54:00","bookmarklet":0,"mobile":0,"feed-item":"","from-feed-id":0,"unix-timestamp":1254354840,"format":"html","reblog-key":"fgyDoL9A","slug":"this-is-the-most-accurate-representation-of-what","photo-caption":"<p>This is the most accurate representation of what we do on our business.<\/p>\n<p>Taken from\u00a0<a href=\"http:\/\/blog.slicedbreaddesign.com\/\"><a href=\"http:\/\/blog.slicedbreaddesign.com\/\">http:\/\/blog.slicedbreaddesign.com\/<\/a><\/a><\/p>","width":"400","height":"400","photo-url-1280":"http:\/\/26.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_400.png","photo-url-500":"http:\/\/26.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_400.png","photo-url-400":"http:\/\/26.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_400.png","photo-url-250":"http:\/\/27.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_250.png","photo-url-100":"http:\/\/26.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_100.png","photo-url-75":"http:\/\/29.media.tumblr.com\/tumblr_kqt6egfYAw1qzm8wfo1_r1_75sq.png","photos":[]}]};

