<?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>Edgar Gonzalez
Father, husband, and software developer. I’m building web applications since 1994 for a living and I love it.
Rubyist, Rails developer since 2006, believer of Agile Development and Lean startups, NoSQL enthusiast.
Born in Caracas - Venezuela, living in New York.</description><title>Edgar Gonzalez</title><generator>Tumblr (3.0; @edgar)</generator><link>http://edgar.tumblr.com/</link><item><title>Migrating FasterCSV from ruby 1.8 to CSV in 1.9+</title><description>&lt;p&gt;Currently in &lt;a href="http://streeteasy.com"&gt;StreetEasy&lt;/a&gt; we&amp;#8217;re moving a Rails app from Ruby 1.8 to 1.9&lt;/p&gt;
&lt;p&gt;In Ruby 1.9 FasterCSV is already included as standard library&amp;#8217;s CSV. And in Ruby 1.9 you can&amp;#8217;t continue using FasterCSV, if you do, you&amp;#8217;ll get an error message like this:&lt;/p&gt;

&lt;pre&gt;Please switch to Ruby 1.9's standard CSV library.
It's FasterCSV plus support for Ruby 1.9's m17n encoding engine.&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;The workaround for this is, instruct bundler to include fastercsv only if I&amp;#8217;m running ruby 1.8:&lt;/p&gt;

&lt;pre&gt;gem 'fastercsv', :platforms =&amp;gt; :ruby_18&lt;/pre&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And change references in the application from FasterCSV to CSV, and add this (in a Rails app usually in the config/environment.rb):&lt;/p&gt;

&lt;pre class="brush: ruby"&gt;require 'csv'
if CSV.const_defined? :Reader
  # Ruby 1.8 compatible
  require 'fastercsv'
  Object.send(:remove_const, :CSV)
  CSV = FasterCSV
else
  # CSV is now FasterCSV in ruby 1.9
end
&lt;/pre&gt;
&lt;p&gt;Based on a &lt;a href="http://blog.grayproductions.net/articles/getting_code_ready_for_ruby_19"&gt;James Edward Gray II post&lt;/a&gt;&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/51093838055</link><guid>http://edgar.tumblr.com/post/51093838055</guid><pubDate>Wed, 22 May 2013 16:29:03 -0430</pubDate><category>ruby</category><category>ruby1.8</category><category>ruby 1.8</category><category>ruby1.9</category><category>ruby 1.9</category><category>csv</category><category>FasterCSV</category></item><item><title>How to install RMagick (2.13.1) with latest ImageMagick (6.8.0-10)</title><description>&lt;p&gt;I need to use RMagick v2.13.1 in a current project, but RMagick v2.13.1 doesn&amp;#8217;t works with the latest ImageMagick (6.8.0-10).&lt;/p&gt;
&lt;p&gt;The workaround I found is: first install ImageMagick via Homebrew:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;brew install imagemagick&lt;/pre&gt;
&lt;p&gt;and then:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;$ ln -s /usr/local/Cellar/imagemagick/6.8.0-10/lib/libMagick++-Q16.7.dylib   libMagick++.dylib
$ ln -s /usr/local/Cellar/imagemagick/6.8.0-10/lib/libMagickCore-Q16.7.dylib libMagickCore.dylib
$ ln -s /usr/local/Cellar/imagemagick/6.8.0-10/lib/libMagickWand-Q16.7.dylib libMagickWand.dylib&lt;/pre&gt;
&lt;p&gt;Now RMagick v2.13.1 should install and works&lt;/p&gt;
&lt;p&gt;Of course another option is just upgrade RMagick to v2.13.2 which works out-of-the-box with latest ImageMagick&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/50922186158</link><guid>http://edgar.tumblr.com/post/50922186158</guid><pubDate>Mon, 20 May 2013 14:07:00 -0430</pubDate><category>RMagick</category><category>ImageMagick</category><category>rmagick-2.13.1</category><category>imagemagick-6.8.0-10</category><category>brew</category><category>homebrew</category></item><item><title>MongoDB shell inserts Float when try to insert an Integer/Long</title><description>&lt;p&gt;Because of numbers are doubles in Javascript, when yo do this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;span&gt;db.test.insert({name: &amp;#8216;foo&amp;#8217;, value: 1});&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;you get this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;&lt;span&gt;db.test.findOne({name:  &amp;#8217;foo&amp;#8217;});&lt;br/&gt;{&amp;#8216;name&amp;#8217;: &amp;#8216;foo&amp;#8217;, &amp;#8216;value&amp;#8217;: 1.0}&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;To avoid this you can use &lt;code&gt;NumberInt&lt;/code&gt; or &lt;code&gt;NumberLong:&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;gt; &lt;/code&gt;db.test.insert({name: &amp;#8216;foo&amp;#8217;, value: NumberLong(1)});&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/47802178649</link><guid>http://edgar.tumblr.com/post/47802178649</guid><pubDate>Fri, 12 Apr 2013 15:49:38 -0430</pubDate><category>mongodb</category><category>mongo</category><category>javascript</category><category>js</category></item><item><title>RubyCheckOnSave Sublime Text 2 Plugin</title><description>&lt;p&gt;More than one year ago, I created a very &lt;a href="http://edgar.tumblr.com/post/11570398179/sublimetext2-check-ruby-syntax-after-save"&gt;simple script that enable Sublime Text 2 to automatically check the syntax of ruby files when they are saved&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Three months ago I finally found the time to convert that script into my first Sublime Text 2 plugin: the &lt;a href="https://github.com/edgar/RubyCheckOnSave"&gt;RubyCheckOnSave plugin&lt;/a&gt;.&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/42624556544</link><guid>http://edgar.tumblr.com/post/42624556544</guid><pubDate>Fri, 08 Feb 2013 20:37:00 -0430</pubDate><category>ruby</category><category>SublimeText2</category><category>sublimetext</category><category>plugin</category><category>rubycheckonsave</category></item><item><title>RVM: How to remove all gems from default gemset</title><description>&lt;p&gt;To remove all gems from a gemset you use the &lt;code&gt;gemset empty&lt;/code&gt; command:&lt;/p&gt;
&lt;pre&gt;$ rvm gemset empty &amp;lt;my_gemset_name&amp;gt;&lt;/pre&gt;
&lt;p&gt;And to remove the gems from &lt;em&gt;default&lt;/em&gt; gemset, you must supply an empty string as the gemset name:&lt;/p&gt;
&lt;pre&gt;$ rvm gemset empty ""&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/41440550332</link><guid>http://edgar.tumblr.com/post/41440550332</guid><pubDate>Fri, 25 Jan 2013 10:21:28 -0430</pubDate><category>rvm</category><category>gems</category><category>gemset</category></item><item><title>How to cURL and JSON prettyprint</title><description>&lt;p&gt;&lt;a href="http://curl.haxx.se/"&gt;cUrl&lt;/a&gt; is a simple and powerful tool to test RESTful APIs, but sometimes the output could be messy, specially when the response is a long JSON.&lt;/p&gt;
&lt;p&gt;To improve the output readability, I&amp;#8217;m using cUrl with &lt;a href="https://github.com/trentm/json"&gt;jsontool&lt;/a&gt; (a node.js script).&lt;/p&gt;
&lt;p&gt;After you install it:&lt;/p&gt;
&lt;pre&gt;$ npm install -g jsontool&lt;/pre&gt;
&lt;p&gt;Then pipe the cUrl output to jsontool&lt;/p&gt;
&lt;pre&gt;$ curl -is &lt;a href="http://search.twitter.com/search.json%5C?q%5C=foo"&gt;http://search.twitter.com/search.json\?q\=foo&lt;/a&gt; | json -i&lt;/pre&gt;
&lt;p&gt;Below an example of the output&lt;/p&gt;
&lt;p&gt;&lt;a href="http://f.cl.ly/items/3J0x23301t353c3q2u0z/Screen%20Shot%202013-01-24%20at%2010.30.37%20AM.png"&gt;&lt;img alt="Sample of cUrl with JSON prettyprint" height="942" src="http://f.cl.ly/items/3J0x23301t353c3q2u0z/Screen%20Shot%202013-01-24%20at%2010.30.37%20AM.png" width="1047"/&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/41362762325</link><guid>http://edgar.tumblr.com/post/41362762325</guid><pubDate>Thu, 24 Jan 2013 11:14:00 -0430</pubDate><category>curl</category><category>json</category><category>prettyprint</category></item><item><title>How to remove a Git submodule and put the code into the main repo</title><description>&lt;p&gt;You need to remove the submodule and re-add the files into the main repo.&lt;/p&gt;
&lt;p&gt;Edit the &lt;code&gt;.gitmodules&lt;/code&gt; and &lt;code&gt;.git/config&lt;/code&gt; files and remove the lines that specify the submodule, then;&lt;/p&gt;
&lt;pre class="brush: bash"&gt;git rm --cached path/to/submodule # delete reference to submodule HEAD (no trailing slash)
rm -rf path/to/submodule/.git
git add path/to/submodule # add files instead of commit reference
git commit -m "remove submodule"
&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/39947350732</link><guid>http://edgar.tumblr.com/post/39947350732</guid><pubDate>Mon, 07 Jan 2013 15:46:37 -0430</pubDate><category>git</category><category>submodule</category></item><item><title>Permission denied (publickey) when deploying heroku code - Sometimes is the git remote ...</title><description>&lt;p&gt;Today I tried to deploy to heroku a new version of an application (that not has been deployed in several months):&lt;/p&gt;
&lt;pre class="brush: bash"&gt;git push heroku master&lt;/pre&gt;
&lt;p&gt;but I got the following error:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;Permission denied (publickey).
fatal: The remote end hung up unexpectedly&lt;/pre&gt;
&lt;p&gt;The weird part is that I can deploy other 3 apps without problem, that means that my public SSH key is properly stored on Heroku.&lt;/p&gt;
&lt;p&gt;If the Heroku api is experiencing downtime, you will get this error when you try to push. So, I checked &lt;a href="https://status.heroku.com/"&gt;&lt;a href="https://status.heroku.com/"&gt;https://status.heroku.com/&lt;/a&gt;&lt;/a&gt; and everything seemed to be fine on Heroku&amp;#8217;s end.&lt;/p&gt;
&lt;p&gt;Then I checked my git remotes, and my problem was that the remote &lt;code&gt;heroku&lt;/code&gt; repository was &lt;em&gt;corrupted&lt;/em&gt;. I refreshed it as follows:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;git remote -v&lt;/pre&gt;
&lt;p&gt;Then removed the heroku one that is wrong:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;git remote rm heroku&lt;/pre&gt;
&lt;p&gt;Then added the new one&lt;/p&gt;
&lt;pre class="brush: bash"&gt;git remote add heroku git@heroku.com:myapp.git&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/38970706062</link><guid>http://edgar.tumblr.com/post/38970706062</guid><pubDate>Thu, 27 Dec 2012 15:15:18 -0430</pubDate><category>heroku</category><category>git</category><category>remote</category></item><item><title>How to sort in ruby an enumerable by an attribute that could be nil</title><description>&lt;p&gt;I have an &lt;code&gt;Enumarable&lt;/code&gt; of tokens, and I need to sort them descending by the &lt;code&gt;last_access&lt;/code&gt; attribute, but for some objects this attribute could be &lt;code&gt;nil&lt;/code&gt;. One OOP approach to do it, is defining the &lt;code&gt;&amp;lt;=&amp;gt;&lt;/code&gt; method (&lt;code&gt;Comparable&lt;/code&gt;) in the &lt;code&gt;Token&lt;/code&gt; class:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;class Token
  include Comparable

  define &amp;lt;=&amp;gt; other
    ...
  end
end
&lt;/pre&gt;
&lt;p&gt;Then I&amp;#8217;ll only need to call &lt;code&gt;tokens.sort&lt;/code&gt;. But I&amp;#8217;m not ready to change the behavior of the Token class in that way, instead of that I prefer to follow an approach that don&amp;#8217;t have side effects. So, an easy hack is to use an immediate-if like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;tokens.sort{|a,b| 
  (a.last_access &amp;amp;&amp;amp; b.last_access) ? 
    a.last_access &amp;lt;=&amp;gt; b.last_access : 
    (a.last_access ? 1 : -1) 
}.reverse!
&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/38385055461</link><guid>http://edgar.tumblr.com/post/38385055461</guid><pubDate>Thu, 20 Dec 2012 10:43:00 -0430</pubDate><category>ruby</category><category>sort</category><category>enumerable</category><category>array</category><category>nil</category></item><item><title>How to delete large amount of data of a MongoDB collection "quickly" </title><description>&lt;p&gt;We have a db collection that is around 30 million documents, and I need to trim it down, to only keeping the documents created on the last month. &lt;/p&gt;
&lt;p&gt;One approach would be use the &lt;code&gt;remove&lt;/code&gt; command with a condition on the &lt;code&gt;created_at&lt;/code&gt; field (the collection already have an index on this field):&lt;/p&gt;
&lt;pre class="brush: js"&gt;db.my_collection.remove({created_at: {$lte: new Date("11/01/2012")}});&lt;/pre&gt;
&lt;p&gt;But this approach will be very slow, instead of that, a better way to do it is rename the current collection (for instance to &amp;#8220;old_collection&amp;#8221;) using &lt;code&gt;renameCollection&lt;/code&gt;. Then performing a query-and-insert from the &amp;#8220;old_collection&amp;#8221; into &amp;#8220;my_collection&amp;#8221;:&lt;/p&gt;
&lt;pre class="brush: js"&gt;db.my_collection.renameCollection("old_collection");

db.createCollection("my_collection");

db.my_collection.createIndex(...); // recreate the indexes for the collection

// copy docs from old collection into the new collection
db.old_collection.find(
    {created_at: {$gte: new Date("11/01/2012")}
  ).sort({_id: -1}).forEach(
    function(row) { db.my_collection.insert(row); }
  );

// drop old collection
db.old_collection.drop();

&lt;/pre&gt;
&lt;p&gt;This approach is typically faster than running a bunch of removes on your data&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/38232292665</link><guid>http://edgar.tumblr.com/post/38232292665</guid><pubDate>Tue, 18 Dec 2012 12:17:00 -0430</pubDate><category>MongoDB</category><category>renameCollection</category><category>remove</category></item><item><title>"We live in a world where there is more and more information, and less and less meaning"</title><description>“We live in a world where there is more and more information, and less and less meaning”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Jean Baudrillard&lt;/em&gt;</description><link>http://edgar.tumblr.com/post/33387896529</link><guid>http://edgar.tumblr.com/post/33387896529</guid><pubDate>Thu, 11 Oct 2012 17:43:19 -0430</pubDate></item><item><title>Ruby on Rails :: How to add HTTP basic authentication to your staging app in Heroku</title><description>&lt;p&gt;First you set up your staging app following the Heroku&amp;#8217;s guide for &lt;a href="https://devcenter.heroku.com/articles/multiple-environments"&gt;Managing Multiple Environments for an App&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then edit the &lt;code&gt;config/environments/staging.rb&lt;/code&gt;:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;#config/environments/staging.rb
MyApp::Application.configure do

  # Basic authentication
  config.middleware.insert_after(::Rack::Lock, "::Rack::Auth::Basic", "My App") do |u, p|
    [u, p] == [ENV['HTTP_USER'], ENV['HTTP_PASSWORD']]
  end

  ...
&lt;/pre&gt;
&lt;p&gt;And finally set the config vars:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;heroku config:add HTTP_USER='foo' HTTP_PASSWORD='bar' -a myapp-staging
&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/30209472511</link><guid>http://edgar.tumblr.com/post/30209472511</guid><pubDate>Sat, 25 Aug 2012 20:59:26 -0430</pubDate><category>rails</category><category>heroku</category><category>authentication</category><category>ruby</category><category>rack</category></item><item><title>Manhattan from New Jersey (Taken with Instagram)</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_m8juq3nKb21qz4y2oo1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Manhattan from New Jersey (Taken with &lt;a href="http://instagram.com"&gt;Instagram&lt;/a&gt;)&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/29132412474</link><guid>http://edgar.tumblr.com/post/29132412474</guid><pubDate>Fri, 10 Aug 2012 12:48:03 -0430</pubDate></item><item><title>TextMate is now open-source</title><description>&lt;a href="http://blog.macromates.com/2012/textmate-2-at-github/"&gt;TextMate is now open-source&lt;/a&gt;: &lt;p&gt;Interesting move, … maybe the only possible move for Text Mate&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/29071824200</link><guid>http://edgar.tumblr.com/post/29071824200</guid><pubDate>Thu, 09 Aug 2012 15:53:44 -0430</pubDate><category>textmate</category></item><item><title>How to list all Rails 3 rake tasks</title><description>&lt;p&gt;If you run the &amp;#8220;classic&amp;#8221; &lt;code&gt;rake -T&lt;/code&gt;, only the tasks with descriptions will be appear, for instance:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;$ rake -T db
&lt;/pre&gt;
&lt;p&gt;Will display something like:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;rake db:create          # Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)
rake db:drop            # Drops the database for the current Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load   # Load fixtures into the current environment's database.
rake db:migrate         # Migrate the database (options: VERSION=x, VERBOSE=false).
rake db:migrate:status  # Display status of migrations
rake db:rollback        # Rolls the schema back to the previous version (specify steps w/ STEP=n).
rake db:schema:dump     # Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load     # Load a schema.rb file into the database
rake db:seed            # Load the seed data from db/seeds.rb
rake db:setup           # Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the db first)
rake db:structure:dump  # Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql
rake db:version         # Retrieves the current schema version number
&lt;/pre&gt;
&lt;p&gt;But the rake task &lt;code&gt;db:test:prepare &lt;/code&gt;is not listed. If you want to list &lt;em&gt;all&lt;/em&gt; the tasks, no matter if have a description or not, use this:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;$ rake -P
&lt;/pre&gt;
&lt;p&gt;And if you want to avoid the noise, use the following to show the names of all Rake tasks:&lt;/p&gt;
&lt;pre class="brush: bash"&gt;$ rake -P | grep rake
&lt;/pre&gt;</description><link>http://edgar.tumblr.com/post/29071212872</link><guid>http://edgar.tumblr.com/post/29071212872</guid><pubDate>Thu, 09 Aug 2012 15:44:01 -0430</pubDate><category>rails</category><category>rails3</category><category>rake</category></item><item><title>"look how much we’ve failed. That’s how smart we’ve become"</title><description>“look how much we’ve failed. That’s how smart we’ve become”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;Nate St. Pierre (Vooza)&lt;/em&gt;</description><link>http://edgar.tumblr.com/post/27049022053</link><guid>http://edgar.tumblr.com/post/27049022053</guid><pubDate>Thu, 12 Jul 2012 09:14:49 -0430</pubDate></item><item><title>The annoying “warning: useless use of == in void context” in RSpec</title><description>&lt;p&gt;If in your specs you have something like this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;it "should be bar" do
  foo.should == 'bar'
  something_else
end&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt; ruby -w &lt;/code&gt;command will throw the following warning:&lt;/p&gt;
&lt;pre class="brush: shell"&gt;warning: useless use of == in void context
&lt;/pre&gt;
&lt;p&gt;The way to avoid this is using this:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;foo.should eql('bar')
&lt;/pre&gt;
&lt;p&gt;Or:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;foo.should be == 'bar'
&lt;/pre&gt;
&lt;p&gt;Or move the statement&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;foo.should == 'bar'&lt;/pre&gt;
&lt;p&gt;so that it&amp;#8217;s the last line inside the &lt;strong&gt;&lt;code&gt;it&lt;/code&gt;&lt;/strong&gt; block&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/26601424045</link><guid>http://edgar.tumblr.com/post/26601424045</guid><pubDate>Thu, 05 Jul 2012 22:01:38 -0430</pubDate><category>ruby</category><category>rspec</category></item><item><title>Ruby 1.8.7 and multi_json</title><description>&lt;p&gt;I&amp;#8217;m starting to work on a &lt;a href="http://github.com/edgar/singly"&gt;gem&lt;/a&gt; for &lt;a href="http://dev.singly.com"&gt;Singly API&lt;/a&gt; that uses &lt;a href="https://github.com/intridea/multi_json"&gt;multi_json&lt;/a&gt;.  The tests for the gem worked in 1.9.2 and 1.9.3 but I got the following runtime error in 1.8.7:&lt;/p&gt;
&lt;pre class="brush: ruby"&gt;missing dependency for FaradayMiddleware::ParseJson: no such file to load -- json&lt;/pre&gt;
&lt;p&gt;I have been using 1.9.3 more and more lately and I forgot that json was added to the stdlib in 1.9.  So that&amp;#8217;s why it works in 1.9.x. while in 1.8.7 I need to require a supporting library like yajl.&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/26098807762</link><guid>http://edgar.tumblr.com/post/26098807762</guid><pubDate>Thu, 28 Jun 2012 17:55:50 -0430</pubDate><category>ruby</category><category>multi_json</category><category>json</category><category>1.8.7</category><category>1.9.2</category><category>1.9.3</category></item><item><title>Git and GitHub Secrets by @holman
Original post</title><description>&lt;iframe src="http://player.vimeo.com/video/42530011" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Git and GitHub Secrets by @holman&lt;/p&gt;
&lt;p&gt;&lt;a href="http://zachholman.com/talk/git-github-secrets"&gt;Original post&lt;/a&gt;&lt;/p&gt;</description><link>http://edgar.tumblr.com/post/25598794060</link><guid>http://edgar.tumblr.com/post/25598794060</guid><pubDate>Thu, 21 Jun 2012 16:51:03 -0430</pubDate><category>git</category><category>github</category></item><item><title>Startup Metrics for Pirates</title><description>&lt;p&gt;One of most important thing about startups is that you can collect usage metrics in real time. However, being able to make decisions with this data is not easy. It&amp;#8217;s important to understand how to collect and use these metrics, and develop a decision-making framework for startup development. The framework should be based on goals that are measured through discrete users or startup events that have either user or business value.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/davemcclure"&gt;Dave McClure&lt;/a&gt; has been talking about startup metrics since 2009. The first time I saw his talk was during &lt;a href="http://www.techstars.com/"&gt;TechStars&lt;/a&gt; &lt;a href="http://thenextweb.com/insider/2011/10/18/meet-the-12-new-techstars-companies-mayor-bloomberg-approved/"&gt;NYC&lt;/a&gt; &lt;a href="http://articles.businessinsider.com/2011-07-11/tech/30010133_1_marketplace-venezuela-companies"&gt;class of summer 2011&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;McClure define five main ways to bucket the events you&amp;#8217;re measuring: &lt;strong&gt;A&lt;/strong&gt;cquisition, &lt;strong&gt;A&lt;/strong&gt;ctivation, &lt;strong&gt;R&lt;/strong&gt;etention, &lt;strong&gt;R&lt;/strong&gt;eferral, &lt;strong&gt;R&lt;/strong&gt;evenue (AARRR =&amp;gt; the pirate reference)&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Acquisition&lt;/strong&gt;: The various ways you acquire users/customers, via the distribution channels that bring them to your product or service (social media &amp;amp; social networks, apps &amp;amp; widgets, traditional PR, affiliates, etc).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Activation&lt;/strong&gt;: The “happy” first experience where users take some kind of activation step (click on a link, provide an email address, buy something).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retention&lt;/strong&gt;: Creating repeat and regular visits from your users (weekly emails, blog posts, periodic notifications).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Referral&lt;/strong&gt;: Users tell other people about your service (viral loop, forward email to a friend, send a link).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Revenue&lt;/strong&gt;: Users conduct some monetization behavior, either direct (e-commerce, subscriptions) or indirect (advertising).&lt;/li&gt;
&lt;/ul&gt;&lt;div id="__ss_2992302"&gt;&lt;strong&gt;&lt;a href="http://www.slideshare.net/dmc500hats/startup-metrics-for-pirates-sf-jan-2010" title="Startup Metrics for Pirates (SF, Jan 2010)" target="_blank"&gt;Startup Metrics for Pirates (SF, Jan 2010)&lt;/a&gt;&lt;/strong&gt; &lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/2992302" width="425"&gt;&lt;/iframe&gt;
&lt;div&gt;View more presentations from &lt;a href="http://www.slideshare.net/dmc500hats" target="_blank"&gt;Dave McClure&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description><link>http://edgar.tumblr.com/post/23553723159</link><guid>http://edgar.tumblr.com/post/23553723159</guid><pubDate>Tue, 22 May 2012 13:58:00 -0430</pubDate><category>startups</category><category>startup</category><category>metrics</category><category>lean</category></item></channel></rss>
