<?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>Code || Story telling || Philosophy || Tech Chamanism</description><title>Code Walhalla ...</title><generator>Tumblr (3.0; @vzmind)</generator><link>http://vzmind.tumblr.com/</link><item><title>Table of content</title><description>&lt;blockquote&gt;&lt;p&gt;The Early Release of &lt;em&gt;Heroku Salesforce Playbook&lt;/em&gt; will only contain the first section of the book. However, as we are already writing next sections we can give you an overview of what the book will look like in few months.&lt;/p&gt;
&lt;p&gt;TABLE OF CONTENT&lt;/p&gt;
&lt;p&gt;SECTION 1:…&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;a href="http://herokusalesforceplaybook.com/2012/12/10/table-of-content/"&gt;View Post&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;small&gt;shared via &lt;a href="http://wordpress.com"&gt;WordPress.com&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/37634688273</link><guid>http://vzmind.tumblr.com/post/37634688273</guid><pubDate>Mon, 10 Dec 2012 08:06:36 -0500</pubDate></item><item><title>Sencha App with Salesforce API using a Sinatra Proxy</title><description>&lt;p&gt;In my last article, I have presented &lt;a href="http://vzmind.tumblr.com/post/33713305140/sencha-touch-more-than-a-trendy-mobile-js-framework" target="_blank"&gt;Sencha Framework&lt;/a&gt; and some advantages this product got over other Mobile solutions. Convinced that I had a wonderful tool into my hands I have decided to create a simple app. The aim is to have two tabs. First one with an intro page, second one with a list of Leads retrieved through the Salesforce REST API. The list must be sorted and provide basic interaction by displaying additional details of a selected Lead.&lt;/p&gt;
&lt;p&gt;As soon as you start playing with mobile application and a remote API you have to face a common javascript limitation: the Same Origin Policy. I invite you to read the &lt;a href="http://en.wikipedia.org/wiki/Same_origin_policy" target="_blank"&gt;Wikipedia article&lt;/a&gt; if you want to know more about that rule. Briefly, &lt;em&gt;&amp;#8220;The policy permits scripts running on pages originating from the same site to access each other&amp;#8217;s methods and properties with no specific restrictions, but prevents access to most methods and properties across pages on different sites&amp;#8221;&lt;/em&gt;. Said differently, you&amp;#8217;re cute javascript mobile application hosted under xyz.com domain _can not_ request any data from salesforce.com domain. Such a shame but so imperative to keep the web safer.&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If you browse the web you&amp;#8217;ll find a couple of way to load nevertheless remote Data. Here is a quick options list to introduce you to possible solutions or &lt;/span&gt;to refresh your mind&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Proxy your request:&lt;/strong&gt; a common pattern to mimic same origin requests is to proxy calls from your javascript application using a service hosted on your initial domain. Pat Patterson &lt;a href="http://blogs.developerforce.com/developer-relations/2011/04/calling-the-rest-api-from-javascript-from-anywhere.html" target="_blank"&gt;released a modified version of Simple proxy &lt;/a&gt;for Force.com. Really useful but so PHP for me :)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Host your Sencha app on Force.com:&lt;/strong&gt; right before Dreamforce 12, the Sencha Team published a &lt;a href="http://www.sencha.com/blog/developing-mobile-applications-with-force-com-and-sencha-touch-part-1/" target="_blank"&gt;really detailled 2-parts blog post&lt;/a&gt; explaining how to create a Sencha App direclty on Force.com. As a direct consequence, your application is generated from Force.com, is hosted on a Force.com site and can provide Salesforce data straight into the Sencha App. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implement CORS:&lt;/strong&gt; CORS (Cross-Origin Resource Sharing) is a recent solution to allow cross domain requests. That solution is robust and standardized but unfortunately requires you got the ability to white list you originating domain on the target server. That&amp;#8217;s not the case with Salesforce. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Implement JSONP&lt;/strong&gt;: JsonP is a way to perform requests on a remote server. That option is limited to GET and implies that you implement a simple &amp;#8220;service&amp;#8221; (a js function wrapping your call) on the remote server.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;You understood that in a Salesforce context you can either use a Proxy or implement your Sencha app on a Force.com site. No other choice. Not really :)&lt;/p&gt;
&lt;p&gt;As a Ruby developer, I finally came with an Hybrid solution: build an endpoints service with Sinatra. Sinatra is a perfect companion to build simple web services. Mixed with databasedotcom gem to easily access Salesforce REST API, you can write in less than 50 lines a service able to proxy your requests. &lt;/p&gt;
&lt;p&gt;The main advantage of that solution is that, before sending results back to your Sencha App, you can&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;preprocess data in Ruby: computed fields, grouping, sorting data&lt;/li&gt;
&lt;li&gt;perform caching: include a redis cache or a standard caching solution&lt;/li&gt;
&lt;li&gt;mix data from various sources&lt;/li&gt;
&lt;li&gt;reduce payload size reducing json to its strict minimum&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Furthemore, the Sencha App is served by Sinatra App which embed it. To clarify that here is the structure of the App folder:&lt;/p&gt;
&lt;p&gt;&lt;img height="422" src="http://media.tumblr.com/tumblr_mchyd5uEW11qccri2.png" width="640"/&gt;&lt;/p&gt;
&lt;p&gt;You can see that the Sencha app is under the asset/ folder of the sinatra app. The Sinatra app 3 main actions are:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;serve an index page for Salesforce Oauth session opening and manage sessions&lt;/li&gt;
&lt;li&gt;after a successful authentication, redirect the user to the sencha app&lt;/li&gt;
&lt;li&gt;serve data from Salesforce REST API through the /leads.json URL &lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;Bellow you can see the Sinatra app code. It&amp;#8217;s divided into 5 sections:&lt;/div&gt;
&lt;div&gt;&lt;ol&gt;&lt;li&gt;Load libs and gems&lt;/li&gt;
&lt;li&gt;Config the app. We use Rack session cookies to store the token and connection to Salesforce ORG , path to assets (where the sencha app code stands) is defined and we setup the configuration for oauth based on a salesforce.yml file&lt;/li&gt;
&lt;li&gt;Basic routing to respond to / and /home. /home view load the Sencha app&lt;/li&gt;
&lt;li&gt;OAuth callback Management&lt;/li&gt;
&lt;li&gt;Json Data Store, the homemade proxy collecting Leads from Salesforce REST API and formatting the output json&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;pre class="colorthis"&gt;#!/usr/bin/env ruby -I ../lib -I lib
  # SECTION 1 : load libs and gems
  require 'sinatra'
  require "sinatra/content_for"
  require 'sinatra/json'
  require 'haml'
  require 'databasedotcom'
  require 'yaml'
  require 'omniauth'
  require 'omniauth-salesforce'

  # SECTION 2: config the app
  use Rack::Session::Cookie
  set :public_folder, File.dirname(__FILE__) + '/assets'
  config = YAML.load_file("config/salesforce.yml") rescue {}
  use OmniAuth::Builder do
    provider :salesforce, config["client_id"], config["client_secret"]
  end

  # SECTION 3: basic routing for / and /home 
  get '/' do
    haml :intro
  end
  get '/home' do
    haml :home
  end

  # SECTION 4: OAuth Callback management
  get '/auth/salesforce/callback' do
     session[:token] = request.env['omniauth.auth']['credentials']['token']
    config = YAML.load_file("config/salesforce.yml") rescue {}
    dbdc = Databasedotcom::Client.new(:client_id =&amp;gt; config["client_id"], :client_secret =&amp;gt; config["client_secret"])
   dbdc.authenticate :token =&amp;gt; session[:token], :instance_url =&amp;gt; "http://na14.salesforce.com"
    session['client'] = dbdc
    redirect '/home'
  end

  # SECTION 5: Json Data store for the Sencha app
  get '/leads.json' do
    content_type :json
    session['client'].materialize('Lead')
    leads = Lead.all
    leads.collect! { |obj| {
                        :id    =&amp;gt; obj.Id,
                        :name  =&amp;gt; obj.LastName,
                        :email =&amp;gt; obj.Email}
                      }.to_json
  end
&lt;/pre&gt;
&lt;p&gt;You can access that sample application on Github: &lt;a href="https://github.com/vzmind/sencha-salesforce" target="_blank"&gt;&lt;a href="https://github.com/vzmind/sencha-salesforce"&gt;https://github.com/vzmind/sencha-salesforce&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next article part of that Sencha serie will be about the Sencha code itself and how to generate a standalone iphone app with offline capabilities out of that example.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;</description><link>http://vzmind.tumblr.com/post/34556303021</link><guid>http://vzmind.tumblr.com/post/34556303021</guid><pubDate>Mon, 29 Oct 2012 05:40:56 -0400</pubDate><category>salesforce</category><category>ruby</category><category>sinatra</category><category>Database.com</category><category>sencha</category></item><item><title>Sencha Touch, more than a trendy Mobile JS Framework</title><description>&lt;p&gt;&lt;img align="left" height="231" src="http://www.netactive.co.nz/sites/default/files/phones.png" width="260"/&gt;Few weeks ago, I started to think about my next project, a mobile dashboard app for Salesforce. As I am not an IOS dev but rather a Ruby/Javascript one, I investigated a bit wondering what framework could fit the best my expectations:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;ability to generate IOS/Android app to remains device agnostic&lt;/li&gt;
&lt;li&gt;using a language I know and improve my skills rather than diluting them&lt;/li&gt;
&lt;li&gt;not requiring to install an heavy env cause otherwise it&amp;#8217;s never as simple than they pretend&lt;/li&gt;
&lt;li&gt;well documented to avoid hitting my head against the wall to often looking into a raw source code of thousand of lines&lt;/li&gt;
&lt;li&gt;promising future cause I don&amp;#8217;t like to waste my time learning already obsolete technologies &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Other candidates were RubyMotion, PhoneGap - Cordova, JqueryMobile, Titanium, RhoMobile. My final conclusions are not based on intensive trials but more on web investigations and personal intuitions. Here are the pros and cons of those different solutions.&lt;!-- more --&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.rubymotion.com/" target="_blank"&gt;RubyMotion&lt;/a&gt;: promising and really trendy. RubyMotion creator was one of our invited speakers during last &lt;a href="http://rulu.eu/" target="_blank"&gt;Ruby Lugdunum conference&lt;/a&gt; but the product is still too young, expensive (not free) and only generate IOS apps&lt;/li&gt;
&lt;li&gt;&lt;a href="http://phonegap.com/" target="_blank"&gt;PhoneGap - Cordova&lt;/a&gt;: complete framework now part of the Apache foundation. Able to generate apps for all devices but I still dont know why looks complicated (too much evolutions recently with Adobe then Apache, heavy IDE with XCode, Eclipse, plugins &amp;#8230;)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jquerymobile.com/" target="_blank"&gt;JqueryMobile&lt;/a&gt; everybody love that framework but it is a little bit aged now. Furthermore JqueryMobile apps are known to be slow and are obviously not even fake native apps but pure web apps designed for Mobile.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.appcelerator.com/" target="_blank"&gt;Titanium&lt;/a&gt;, I have no real explanation why I dropped that option. Maybe because they have changed their business model, presentation, name, documentation too much last years. May be because I have tried it years ago and I have been really disappointed. &lt;/li&gt;
&lt;li&gt;&lt;a href="http://docs.rhomobile.com/" target="_blank"&gt;RhoMobile&lt;/a&gt; an other actor using Ruby, an old player, which are really positive points but an other actor bought back by a big company (Motorola) with furthermore performances known to be less than average.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;img align="left" height="167" src="http://www.blog-nouvelles-technologies.fr/wp-content/uploads/2011/07/prise-en-main-de-sencha-touch-1.png" width="400"/&gt;At the end, a last candidate kept my attention, &lt;a href="http://www.sencha.com/" target="_blank"&gt;Sencha&lt;/a&gt;. If you are gravitating in the Salesforce ecosystem you might have heard about it. Sencha has been blogged about a lot and there presence at DreamForce 2012 was impressive.&lt;/p&gt;
&lt;p&gt;My first contact with Sencha has been hesitating. As for Phonegap - Cordova there is a lot of documentation available. Furthermore Sencha offer is split into multiple components (ExtJS 4, Sencha Touch 1, Sencha Touch 2, Sencha Architect&amp;#8230;). Hard to figure out initially which one to use, are they working together, do they have different destinations.&lt;/p&gt;
&lt;p&gt;Even if I am not a huge fan of Integrated Environment I thought that maybe, in 2012, Sencha achieved something phenomenal with their Architect. Using the free trial of 30 days I started to create my first mobile app to display Yelp! point of interests. Was cool, the tutorial easy to follow, but at the end, even if my app was working, I didn&amp;#8217;t understood anything of the generated JS code: a bunch of hashes with a lot of obscure configuration options.&lt;/p&gt;
&lt;p&gt;Few days later, I started a new app with Sencha Touch 2. Sencha Touch 2 is the last version of Sencha Touch, it&amp;#8217;s the component to use if you want to build Mobile apps. It is Open Source and free to use even for commercial purpose. Sencha Touch 2 has the ability to compile your code into fast native Android, Blackberry and IOS apps. Obscure configuration options generated by the architect became way more easy to understand as Sencha Touch 2 is in fact a classic MVC framework. I recommend you to watch the following videos to discover what is inside Sencha Touch and how to create your first applications wisely:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://Discover%20Sencha%20Class%20System" target="_blank"&gt;Discover Sencha Class System&lt;/a&gt;. Understand how structurally different are Sencha Touch 1 and 2 and why the new version is so pleasant to use with a much more robust and compact syntax.&lt;/li&gt;
&lt;li&gt;The Sencha MVC framework architecture &lt;a href="http://docs.sencha.com/touch/2-0/#!/video/mvc-part-1" target="_blank"&gt;part 1&lt;/a&gt; and &lt;a href="http://docs.sencha.com/touch/2-0/#!/video/mvc-part-2" target="_blank"&gt;part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Lot of people complains about Sencha Touch documentation. I agree that the main documentation site is a rudimentary API description and that tutorials are usually not detailed enough. However, Sencha released a &lt;a href="http://www.sencha.com/learn/touch/" target="_blank"&gt;Learning platform for Touch&lt;/a&gt; with access to great content. You can also find interesting Blog Posts on their websites.&lt;/p&gt;
&lt;p&gt;In my next blog post, I will explain you how I create a simple app able to display records from Salesforce using Heroku, Sinatra and Databasedotcom.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/33713305140</link><guid>http://vzmind.tumblr.com/post/33713305140</guid><pubDate>Tue, 16 Oct 2012 12:47:00 -0400</pubDate><category>sencha</category><category>mobile</category><category>heroku</category><category>sinatra</category><category>ruby</category><category>javascript</category></item><item><title>Ruby External CRON manager for Salesforce on Heroku</title><description>&lt;p&gt;In todays post we&amp;#8217;ll have look at task scheduling using Heroku and the famous Resque gem. I have presented it at last London Skillsmatter Salesforce Dev Meetup. Watch the video: &lt;a href="http://skillsmatter.com/podcast/home/sfdc-jewels"&gt;&lt;img alt="" class="alignleft size-medium wp-image-493" height="222" src="http://tquilamockingbird.files.wordpress.com/2012/03/video.png?w=300" title="video" width="300"/&gt;&lt;/a&gt;Delayed tasks on Salesforce have some well known weaknesses. For example: &amp;#8220;Use extreme care if you are planning to schedule a class from a trigger. You must be able to guarantee that the trigger will not add more scheduled classes than the 25 that are allowed&amp;#8221;. With the help of Heroku, most of your background tasks might be externalized and delegated to a dedicated app on Heroku. To build that solution we&amp;#8217;ll be using 4 different gems. The objective is to create a simple web app that is able to create, handle and monitor tasks build by registered users. To be really functional, that web app should be reachable through an API (coming in a future post).&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Sinatra to build a basic web app&lt;/li&gt;
&lt;li&gt;Databasedotcom: to get the secure connection to Salesforce API&lt;/li&gt;
&lt;li&gt;Omniauth to get the authorization token from your ORG&lt;/li&gt;
&lt;li&gt;Resque to handle Job Queues and monitor them&lt;/li&gt;
&lt;/ol&gt;&lt;div&gt;&lt;!-- more --&gt;&lt;/div&gt;
&lt;h2&gt;&lt;strong&gt;&lt;a href="http://sinatrarb.com"&gt;Sinatra&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Sinatra is the trendy DSL to build Web App in Ruby maintained by the brilliant &lt;a href="https://twitter.com/#!/konstantinhaase"&gt;RKH&lt;/a&gt; aka the cool kid. If you are bored by the heaviness of Rails, just pick Sinatra and as they say: &lt;strong&gt;&amp;#8220;Put this in your pipe and smoke it&amp;#8221;&lt;/strong&gt;. In few words, Sinatra is a simple framework looking like rails, usually written in single file. It looks like Rails because you&amp;#8217;ll find some MVC sprinkles and multiple typical Rails features all around Sinatra (redirect, helper, before filter, routing, asset management etc.). In our app, we&amp;#8217;ll use the basic Sinatra abilities to define the initial URL, the callback and the URL to create a new task. As everything is handled in a single file, you&amp;#8217;ll see at the end all the code packed into a sinatra app.rb file. Just for your pleasure, that&amp;#8217;s how to build the simplest web server in Sinatra in 4 lines.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;require 'sinatra' &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  get '/hi' do "Hello World!" &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;end &lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;&lt;a href="https://github.com/heroku/databasedotcom"&gt;Databasedotcom&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Database.com has been presented a couple of times on the web. The most recent and appealing posts and apps have been written by &lt;a href="http://fractastical.com/2011/11/21/my-first-ruby-on-rails-app-with-the-databasedotcom-gem/"&gt;Fractastical&lt;/a&gt;, &lt;a href="http://blogs.developerforce.com/developer-relations/2012/02/sinatra-force-com-and-heroku-in-perfect-harmony.html" title="Pat Patterson"&gt;Metadaddy&lt;/a&gt; and &lt;a href="https://github.com/dburkes"&gt;Dburkes&lt;/a&gt;. They explain in a really readable way how to install, configure and use that magic library. In a few words, databasedotcom is a Ruby wrapper on top of SFDC REST API. Said differently - after having opened a secure connection to your ORG, you can CRUD any standard or custom object in an ActiveRecord-like way. Here is how to install and use it in our app&lt;/p&gt;
&lt;p&gt;&lt;code&gt; require 'databasedotcom' &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config = YAML.load_file("config/salesforce.yml") &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rescue {} &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@client_id = config["client_id"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@client_secret = config["client_secret"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@username = config["username"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@password = config["password"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dbdc = Databasedotcom::Client.new(:client_id =&amp;gt; @client_id, :client_secret =&amp;gt; @client_secret) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dbdc.authenticate :username =&amp;gt; @username, :password =&amp;gt; @password. dbdc.materialize('Lead') &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;leads = Lead.all leads.each{ |lead| lead.update_attribute('LeadSource',leadsource) } &lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;&lt;a href="https://github.com/intridea/omniauth"&gt;Omniauth&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;To get the authorization token, we&amp;#8217;ll use omniauth. Many people keep using the standard OAuth and OAuth2 gems. However, Intridea built a really practical gem to simplify your OAuth handshake. After 19 months of dev V1.0 was released. Omniauth comes with a lot of provider strategy. A strategy is a basically an end-point description. The list of existing providers is increasing regularly and you can easily add a new strategy and bundle it as a new gem in few lines. To use omniauth you need to store the session. We&amp;#8217;ll use Rack::Session::Cookie. We require the Salesforce strategy usage in these lines:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; require 'omniauth' &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;require 'omniauth-salesforce'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt; use Rack::Session::Cookie &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;use OmniAuth::Builder do &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;provider :salesforce, config["client_id"], config["client_secret"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;end &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t forget to add a callback URL matching the one described on the &amp;#8220;Remote Access&amp;#8221; record created on your ORG. Also please note that as your callback must be over HTTPS, you must enforce SSL on your app. This is automatically done on Heroku as of a few weeks ago, but must be handled on your local machine (check &lt;a href="https://github.com/josh/rack-ssl"&gt;Rack::SSL&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;&lt;a href="https://github.com/defunkt/resque"&gt;Resque&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;We&amp;#8217;ve kept the best for the end. Resque was written a few years ago by Defunkt from Github after multiple failures using background.rb and Delayed job. Read the interesting history of Resque on &lt;a href="https://github.com/blog/542-introducing-resque"&gt;Github Blog&lt;/a&gt;. In Resque, jobs queues are usually stored on a Redis DB. Any other storage solution might nevertheless be used. Resque workers (you can use multiple and dedicate to specific tasks/queues) handle them. On Heroku, a worker is a resource just like Dynos are and need to be added to your app using either a Procfile or the heroku CLI&lt;/p&gt;
&lt;p&gt;&lt;code&gt;heroku scale worker=1. &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Other worker providers like &lt;a href="https://addons.heroku.com/iron_worker"&gt;IronWorker&lt;/a&gt; are also available. Locally, workers are running rake tasks. &lt;a href="http://tquilamockingbird.files.wordpress.com/2012/03/resqueui.png"&gt;&lt;img alt="" class="alignleft size-medium wp-image-490" height="154" src="http://tquilamockingbird.files.wordpress.com/2012/03/resqueui.png?w=300" title="resqueUI" width="300"/&gt;&lt;/a&gt;Additional to its proved robustness and overall quality, one of the strength of Resque is to come with a monitoring web UI. You&amp;#8217;ll see there you&amp;#8217;re running workers, working and failed jobs in real time. To load Resque Monitoring app with our sinatra app, here&amp;#8217;s the trick:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;require './song' &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;require 'resque/server' &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;run Rack::URLMap.new \ "/" =&amp;gt; Sinatra::Application, "/resque" =&amp;gt; Resque::Server.new &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A job is defined as a module/class which declare the associated queue and define a perform method. &lt;code&gt; module JobName @queue = :queue_name def self.perform(params) puts "the job does this and that" # YOUR LOGIC WILL GO HERE end end &lt;/code&gt; As we want to trigger actions on Salesforce.com to bulk update lead source, our job code is as follows:&lt;/p&gt;
&lt;p&gt;&lt;code&gt; module Updatelead &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@queue = :lead &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;config = YAML.load_file("config/salesforce.yml") &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rescue {} &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@client_id = config["client_id"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@client_secret = config["client_secret"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@username = config["username"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@password = config["password"] &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;def self.perform(leadsource) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  puts "update all Leads" &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  dbdc = Databasedotcom::Client.new(:client_id =&amp;gt; @client_id, :client_secret =&amp;gt; @client_secret) &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  dbdc.authenticate :username =&amp;gt; @username, :password =&amp;gt; @password &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  dbdc.materialize('Lead') &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  leads = Lead.all leads.each{ |lead| &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;    lead.update_attribute('LeadSource',leadsource) } &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  puts "updated all Leads" &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;  end &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;end &lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Ok, we now have all the parts of our app. Lets glue them together and deploy it on Heroku. You can find the final source code on &lt;a href="https://github.com/vzmind/salesforce-resque"&gt;GITHUB&lt;/a&gt;, fork it and deploy it with your credentials on Heroku.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/24121130348</link><guid>http://vzmind.tumblr.com/post/24121130348</guid><pubDate>Thu, 31 May 2012 05:11:00 -0400</pubDate><category>Database.com</category><category>rails</category><category>resque</category><category>sinatra</category><category>salesforce</category></item><item><title>So you want to play with Ruby?</title><description>&lt;p&gt;I heard last week two people complaining about the difficulty to install ruby on a mac and start coding with all our precious gems. They deserve explanations.&lt;/p&gt;
&lt;p&gt;Alright let&amp;#8217;s have a quick look at that and let&amp;#8217;s install our Ruby env with all tools required to code and deploy on heroku.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Being able to compile:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First of all you need GCC aka the compiler. It was previously coming along with XCode but it&amp;#8217;s not the case anymore. You can get GCC from &lt;a href="https://github.com/kennethreitz/osx-gcc-installer" target="_blank"&gt;github&lt;/a&gt;. Download it and just unpack it as usual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;New packaging system:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;#8217;re bored by macport or if you dont know it already try homebrew. Homebrew is a package installer based on recipes. To install it:&lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/usr/bin/ruby -e "$(curl -fsSL &lt;a href="https://raw.github.com/gist/323731"&gt;https://raw.github.com/gist/323731&lt;/a&gt;)"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The script installs Homebrew to &lt;code&gt;/usr/local&lt;/code&gt; so that &lt;span class="internal present"&gt;you don’t need sudo&lt;/span&gt; when you &lt;code&gt;brew install&lt;/code&gt;. It is a careful script, it can be run even if you have stuff installed to &lt;code&gt;/usr/local&lt;/code&gt; already. It tells you exactly what it will do before it does it too. And you have to confirm everything it will do before it starts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Ruby env:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I suggest you to install rbenv, a ruby version manager. RVM was the first and awesome one but heavy to maintain and weirdly plugged into the system. To install rbenv and ruby-install (the rubies installer):&lt;/p&gt;
&lt;p&gt;&lt;code&gt;brew update&lt;br/&gt; brew install rbenv&lt;br/&gt; brew install ruby-build&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Then to install the last ruby version and update your system:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rbenv install 1.9.3-p125&lt;br/&gt; rbenv rehash&lt;br/&gt; rbenv global 1.9.3-p125&lt;br/&gt; gem update --system&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Quickly this will install ruby 1.9.3 patch 125 (the last one today), define it as the default ruby version and update your gems. Now add the following lines to your .bash_profile:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;export PATH="$HOME/.rbenv/bin:/usr/local/bin:/usr/local/sbin:$PATH"&lt;br/&gt; eval "$(rbenv init -)"&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I know that was a lot of manipulation just to install ruby but now you&amp;#8217;ll be able to add any ruby version you want for a specific project or just for the sake of trying it&amp;#160;!! Restart your terminal then check your ruby version:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ruby -v&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GIT, THE Version control tool: &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have tried CVS, SVN and Git. GIT is  definitely the best Version Control management tool. That&amp;#8217;s said. Simple. To install it we&amp;#8217;ll use brew:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;brew install git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You&amp;#8217;re DONE&amp;#160;!!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now you have a working env with as much ruby version as you want, a new (efficient) package manager and git command. To start hacking just git clone an OpenSource project from github like:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;git clone git@github.com:vzmind/salesforce-padrino.git&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;That will create a salesforce-padrino folder and pull into the project code from github. When your modification are done on that project and you&amp;#8217;ll want to deploy that code to heroku, you&amp;#8217;ll have to launch:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;heroku create&lt;br/&gt; git push heroku master&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The last step clearly deserves more explanations but it&amp;#8217;s clearly a different topic (choosing your IDE, creating an Heroku app, using Git).&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/18840857564</link><guid>http://vzmind.tumblr.com/post/18840857564</guid><pubDate>Tue, 06 Mar 2012 03:34:00 -0500</pubDate><category>rails</category><category>ruby</category><category>git</category><category>tutorial</category></item><item><title>Create geek slideshows</title><description>&lt;p&gt;&lt;img height="166" src="http://media.tumblr.com/tumblr_lztcwtHvxV1qccri2.png" width="279"/&gt;I heard one day that consultant finish to see the world into bullet points. Abusing of ppt everyday, their brain slowly mutate and they finish them self to behve as a continuous slideshow of concepts. Funny or scarring. It depends.&lt;/p&gt;

&lt;p&gt;However, since 1 or 2 years, we observe people making js presentation, homemade or not. This might be a continuation of Google doc presentation growth or simply a consequence of people getting bored by ppt. To build them, you&amp;#8217;ll find on internet libraries like impress.js, deck,js or scrollorama. Some website like prezi.com even offer now a real alternative to ppt based on js. To have an overview of available libraries check &lt;a href="http://favbulous.com/post/768/6-plugin-for-impressive-html-slideshow-and-presentation" target="_blank"&gt;favbulous website&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, as this might sound unnecessarily complicated to create a slideshow, share it and publish it using js compared to ppt, I built a small mashup of Sinatra, deck.js and haml hosted on Heroku.&lt;/p&gt;
&lt;p&gt;The principle is SIMPLICITY.&lt;/p&gt;
&lt;p&gt;Sinatra let me publish and organize my slideshows on Heroku. A new slideshow is just a file with multiple sections. Each section is a slide. As I have extracted all the surrounding css/js call in a layout and added haml syntax, a visually impacting slide might be as simple than:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;%section&lt;/p&gt;
&lt;p&gt;  %h1 you wont believe it&amp;#160;!!!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Neat, isnt it&amp;#160;?&lt;/p&gt;
&lt;p&gt;To try the go on &lt;a href="http://vz-slides.heroku.com" target="_blank"&gt;Geek slideshow&lt;/a&gt;, fork it on Github and start using it.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/18188967062</link><guid>http://vzmind.tumblr.com/post/18188967062</guid><pubDate>Fri, 24 Feb 2012 10:00:05 -0500</pubDate><category>geek</category><category>js</category><category>sinatra</category></item><item><title>Monolithic Databases are dead</title><description>&lt;p&gt;&lt;img height="172" src="http://media.tumblr.com/tumblr_lztbil9Mrm1qccri2.png" width="172"/&gt;It&amp;#8217;s today a common statement to affirm that hegemony of monolithic relational database system is ending. &lt;br/&gt;&lt;br/&gt;ORM, Object Relation Model, were the last trial to perpetuate that pattern born in the 70&amp;#8217;s. ORM bring to software development specialist the sweet feeling of directly interacting with objects. In Ruby on Rails world, Active Record was a wonderful implementation imposing its conventional relational approach on all web developer. In &amp;#8220;Java world&amp;#8221;, Hibernate has still a massive user base but controversy about its performance and ability to handle some complex situation are numerous.&lt;/p&gt;
&lt;p&gt;Long story made short, Relational Databases persist data. That&amp;#8217;s a fact as for all storage systems but they also structure the way we represent and organize our data model. They oblige us to think them through principles such as cardinality, relation entity, foreign keys and all those typical normalized form concept Entity Relationship Model. Furthermore, well know performance might quickly be an issue when mixing ORM and relational Databases. You want to make a query with 15 joins to display a deeply structured data set with few conditions and limit? You should rethink it.&lt;br/&gt;&lt;!-- more --&gt;Since 3 years and the emergence of NoSQL as a new paradigm, people started to rethink the said relational database hegemony. Keep in mind that NoSQL stand for &amp;#8220;Not Only SQL&amp;#8221; and not &amp;#8220;NO SQL&amp;#8221;. In day to day business deliveries, we observe more and more  people introducing key-value store options into their architecture like Redis or Memcached. Some go further and replaced the usual Oracle, SQL Server, MySQL, PostgreSQL with a document oriented DB like MongoDB or CouchDB. &lt;br/&gt;&lt;br/&gt;With Cassandra DB and the trend of Hadoop and Big Data, the database choice was extended with column oriented DB for massive data manipulation. That phenomenon is not finished. New approaches keep emerging. We have for example on-demand social database Salesforce Database.com. or the trendy graph oriented Neo4j.&lt;br/&gt;&lt;br/&gt;With all those possibilities offered, all coming with their own advantages, we should re-evaluate the way we decide how to persist data. Each DB solve a specific problem. There is not one better than the other. But an intelligent mix of them could be a trade-off. That the idea behind polyglot persistence principle.&lt;/p&gt;
&lt;p&gt;Consequently, a problem will often face in near future will be &amp;#8220;how to integrate polyglot databases, ensure communication between them, consolidate access to them&amp;#160;?&amp;#8221;. ORM have blurred boundaries previously existing between the Business Logic layer and the Persistence Layer, coding languages and query languages. What will replace ORM when we&amp;#8217;ll have to use 3 or 4 protocols to request and store data?&lt;/p&gt;
&lt;p&gt;To extend that introduction to Polyglot Database, and have a quick overview of the various data model I have mentionned, I recommend reading the summarized comparison  by Kristof Kovacs. If you want to go deeper, buy the new book from &lt;a href="http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks" target="_blank"&gt;&amp;#8220;Seven Databases in 7 weeks&amp;#8221;&lt;/a&gt; by E. Redmond and J. R. Wilson (still in Beta). &lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/18086314833</link><guid>http://vzmind.tumblr.com/post/18086314833</guid><pubDate>Wed, 22 Feb 2012 15:57:00 -0500</pubDate><category>rails</category><category>database.com</category><category>salesforce</category><category>nosql</category></item><item><title>_Why Travis?</title><description>&lt;p&gt;&lt;strong&gt;&lt;img src="http://media.tumblr.com/tumblr_lqixb5ikQn1qccri2.png"/&gt;_Why?&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;August 19th 2007, &lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff"&gt;_Why the lucky stiff&lt;/a&gt;, anonymous author of &amp;#8220;Why&amp;#8217;s poignant guide to Ruby&amp;#8221; book and various OpenSource project such as Camping, Shoes or hpricot disappear from web radar. Since then August 19th is commemorated every year, all over the world and developers offer their strength, knowledge and will to help building Free content and applications. &lt;br/&gt;&lt;br/&gt;This year, in France, Jérémy Lecour offered to host a hacking WE in his place, a charming house on Marseilles&amp;#8217;s hills. We met there, during 2 days, with Thibault Barrère and Gregory Colpart, well decided to bring also our small contribution to the OpenSource world.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Travis&amp;#160;?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I started to look into Travis project after RuLu 2011 conference. Sven Fuchs and Josh Kalderimis came to present their idea and invite the french community to use, speak, love or hate &lt;a href="http://travis-ci.org/"&gt;Travis-CI&lt;/a&gt; application.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;Travis-CI is an online testing platform. Easy to plug for any project versionned on Github, Travis-CI automatically triggers a build on a remote server at each commit. Results are returned to you by email, webhook or directly on Travis-CI UI . &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;So Why Travis?&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;For all of us, using Rails and building multilingual apps, Sven Fuchs is a Guide. He gave years of its energy and talent to build and maintain I18n&amp;#8217;s Ruby Implementation. Today it&amp;#8217;s a Rails standard part of the core gems. Starting Travis, Sven jumped on a more ambitious project that might revolutionize our testing approach.&lt;/p&gt;
&lt;p&gt;For a mid-size startup or an Opensource team, having a CI server has a coast. Benefices are obvious as it&amp;#8217;s a basic step for continuous delivery. You have to install it, tune it, maintain it. Travis-CI, as an easy to implement CI standard, will consequently help our community to increase it&amp;#8217;s delivery pace and quality.&lt;br/&gt;&lt;br/&gt;So that&amp;#8217;s Why, we choose to work during our first Why Day on Travis-CI to deliver a &lt;a href="https://github.com/travis-ci/travis-ci/issues/217"&gt;feature&lt;/a&gt; requested by Sven and Josh.&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;strong&gt;Travis internals overview&lt;/strong&gt;:&lt;br/&gt;&lt;br/&gt;Well documented, Travis-CI architecture is nevertheless not trivial. Build to run on the cloud, using multiple third Party apps/api like Pusher App, Redis to Go, Heroku and using Edge technologies like Backbone.js, God, Resque or Vagrant, even if well coded, it&amp;#8217;s not the kind of app you fully deploy locally just running &lt;em&gt;bundle install&lt;/em&gt; &amp;amp;&lt;em&gt; thin start. &lt;/em&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://media.tumblr.com/tumblr_lqixhhybNe1qccri2.png" height="380" width="573"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;As a matter of fact, entry ticket is expensive. &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Installing Travis-CI locally&lt;/strong&gt;:&lt;br/&gt;&lt;br/&gt;Pre-requisites:&lt;br/&gt;- RVM&lt;br/&gt;- Postgres&lt;br/&gt;- VirtualBox 4.0.6&lt;br/&gt;- Vagrant 0.7.7&lt;br/&gt;- Redis server&lt;br/&gt;&lt;br/&gt;When all those components are installed, you&amp;#8217;ll have to clone 3 repos: &lt;a href="https://github.com/travis-ci/travis-ci"&gt;travis-ci&lt;/a&gt; and &lt;a href="https://github.com/travis-ci/travis-worker"&gt;travis-worker&lt;/a&gt; and &lt;a href="https://github.com/travis-ci/travis-cookbooks"&gt;travis-cookbook&lt;/a&gt;. &lt;br/&gt;&lt;br/&gt;Travis-worker is the lib running in your testing box able to communicate with the Job Queue and launch builds.  &lt;br/&gt;&lt;br/&gt;The second repo contains Vagrant recipes to build your boxes with a full ruby stack (from mysql to reeds including risk, sphinx and much much more).&lt;br/&gt;&lt;br/&gt;Load travis-worker submodule (Vagrant Chef recipes) with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;git submodule update &amp;#8212;init&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br/&gt;Then get a basic Lucid box, configure your worker and build your Vagrant boxes and workers with:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;wget &lt;a href="http://files.vagrantup.com/lucid32.box"&gt;http://files.vagrantup.com/lucid32.box&lt;/a&gt;&lt;br/&gt;cp ./config/worker.example.yml ./config/worker.development.yml&lt;br/&gt;thor travis:worker:vagrant:rebuild&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;br/&gt;Travis-ci is the central rails app, receiving Github webhooks, adding job to Redis Queue, displaying build results. Before installing, gather following infos to update your travis.yml config file:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;local redis URL (http://localhost:6379)&lt;/li&gt;
&lt;li&gt;pusher App credential (not mandatory in fact)&lt;/li&gt;
&lt;li&gt;github OAuth credential (create an app on &lt;a href="https://github.com/account/applications"&gt;github application page&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Install travis-ci as an usual Rails app:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;gem install bundler thin&lt;br/&gt;cp ./config/travis.example.yml ./config/travis.yml&lt;br/&gt;bundle install&lt;br/&gt;rake db:create db:migrate db:seed&lt;br/&gt;thin start&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Here you are. You have your own local travis-ci app running on http://localhost:3000.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Playing with Travis Build:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The ticket we were working on was related to Build automatic tagging. However build cannot be triggered as long as your travis-ci app is on local IP. This can be done manually using webhooks. For this you&amp;#8217;ll have to POST a payload.json file to http://localhost:3000/builds.&lt;/p&gt;
&lt;p&gt;Here is a payload.json example and the associated ruby script to launch it written by @jlecour and based on a simple ruby forked project &amp;#8220;Boolean&amp;#8221;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;{&lt;br/&gt;    &amp;#8220;before&amp;#8221;: &amp;#8220;&amp;#8221;,&lt;br/&gt;    &amp;#8220;after&amp;#8221;: &amp;#8220;&amp;#8221;,&lt;br/&gt;    &amp;#8220;ref&amp;#8221;: &amp;#8220;refs/heads/master&amp;#8221;,&lt;br/&gt;    &amp;#8220;repository&amp;#8221;: {&lt;br/&gt;        &amp;#8220;url&amp;#8221;: &amp;#8220;https://github.com/hakanensari/boolean&amp;#8221;,&lt;br/&gt;        &amp;#8220;name&amp;#8221;: &amp;#8220;boolean&amp;#8221;,&lt;br/&gt;        &amp;#8220;description&amp;#8221;: &amp;#8220;An object that represents truth&amp;#8221;,&lt;br/&gt;        &amp;#8220;watchers&amp;#8221;: 5,&lt;br/&gt;        &amp;#8220;forks&amp;#8221;: 2,&lt;br/&gt;        &amp;#8220;private&amp;#8221;: false,&lt;br/&gt;        &amp;#8220;owner&amp;#8221;: {&lt;br/&gt;            &amp;#8220;email&amp;#8221;: &amp;#8220;hakan.ensari@papercavalier.com&amp;#8221;,&lt;br/&gt;            &amp;#8220;name&amp;#8221;: &amp;#8220;hakanensari&amp;#8221;&lt;br/&gt;        }&lt;br/&gt;    },&lt;br/&gt;    &amp;#8220;commits&amp;#8221;: [&lt;br/&gt;        {&lt;br/&gt;            &amp;#8220;id&amp;#8221;: &amp;#8220;45026941e67fb9392f9d28c3685d5f47ac454f86&amp;#8221;,&lt;br/&gt;            &amp;#8220;url&amp;#8221;: &amp;#8220;https://github.com/hakanensari/boolean/commit/45026941e67fb9392f9d28c3685d5f47ac454f86&amp;#8221;,&lt;br/&gt;            &amp;#8220;author&amp;#8221;: {&lt;br/&gt;                &amp;#8220;email&amp;#8221;: &amp;#8220;hakan.ensari@papercavalier.com&amp;#8221;,&lt;br/&gt;                &amp;#8220;name&amp;#8221;: &amp;#8220;Hakan Ensari&amp;#8221;&lt;br/&gt;            },&lt;br/&gt;            &amp;#8220;message&amp;#8221;: &amp;#8220;first commit &amp;#8220;,&lt;br/&gt;            &amp;#8220;timestamp&amp;#8221;: &amp;#8220;2011-08-19T05:39:05-07:00&amp;#8221;,&lt;br/&gt;            &amp;#8220;added&amp;#8221;: [&lt;br/&gt;                &amp;#8220;.gitignore&amp;#8221;,&lt;br/&gt;                &amp;#8220;.travis.yml&amp;#8221;,&lt;br/&gt;                &amp;#8220;Gemfile&amp;#8221;,&lt;br/&gt;                &amp;#8220;README.md&amp;#8221;,&lt;br/&gt;                &amp;#8220;Rakefile&amp;#8221;,&lt;br/&gt;                &amp;#8220;boolean.gemspec&amp;#8221;,&lt;br/&gt;                &amp;#8220;lib/boolean.rb&amp;#8221;,&lt;br/&gt;                &amp;#8220;lib/boolean/version.rb&amp;#8221;,&lt;br/&gt;                &amp;#8220;test/boolean_test.rb&amp;#8221;&lt;br/&gt;            ]&lt;br/&gt;        }&lt;br/&gt;    ]&lt;br/&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To trigger it you can use the following ruby script:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;require &amp;#8216;net/http&amp;#8217;&lt;br/&gt;require &amp;#8216;uri&amp;#8217;&lt;br/&gt;payload = File.read(&amp;#8216;~/rails/apps/travis-worker/payload.json&amp;#8217;)&lt;br/&gt;&lt;br/&gt;url = URI.parse(&amp;#8216;http://localhost:3000/builds&amp;#8217;)&lt;br/&gt;req = Net::HTTP::Post.new(url.path)&lt;br/&gt;&lt;br/&gt;req.basic_auth &amp;#8216;jack&amp;#8217;, &amp;#8216;pass&amp;#8217;&lt;br/&gt;req.set_form_data({&amp;#8216;payload&amp;#8217;=&amp;gt; payload}, &amp;#8216;;&amp;#8217;)&lt;br/&gt;res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) }&lt;br/&gt;case res&lt;br/&gt;when Net::HTTPSuccess, Net::HTTPRedirection&lt;br/&gt;  puts &amp;#8216;OK&amp;#8217;&lt;br/&gt;else&lt;br/&gt;  res.error!&lt;br/&gt;end&lt;/p&gt;
&lt;/blockquote&gt;</description><link>http://vzmind.tumblr.com/post/9412611799</link><guid>http://vzmind.tumblr.com/post/9412611799</guid><pubDate>Fri, 26 Aug 2011 08:20:00 -0400</pubDate><category>opensource</category><category>rails</category><category>ruby</category></item><item><title>The Netocrats</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lo40ttSQrW1qccri2.jpg"/&gt;&lt;span&gt;&lt;strong&gt;Title: &lt;/strong&gt;&lt;em&gt;“Les nétocrates” (in french)&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Alexander Bard, Jan Söderqvist&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edition:&lt;/strong&gt; Léo Scheer&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract:&lt;/strong&gt;&lt;span&gt;&lt;span&gt;Feudal lords, capitalist bourgeoisie then knowledge netocrats. Three historical eras, three ways to structure the society. In netocraty, the last paradigm, netocrats architect their power on contacts and knowledge sharing. No more fields and castles or industries and funds. Only matter relevant informations, spread cautiously with the righ people. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; As barbars, netocrats are coming with new rules, objectives, ambitions. Conservative positions are swept without. In that society secret management is more important than money. Real and virtual networks are invisible kingdoms where power links are redefined.&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Curators, nexialists and eternalists are the three nodes typologies authors introduce to describe the netocrats network. &lt;!-- more --&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;Curators are those tireless human filters able to find the relevant information parts and sources into the chaotic data world. They are the myeline of the neural network. They preserve, promote and, reinforce arcs between nodes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Nexialists are the real nodes. They are entrepreneurs and real actors of the network.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;Eternalist bring an overall vision and explain patterns happening inside the network. &lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The society evolution seen by authors could be summarized as in this table (courtesy to &lt;a target="_blank" href="http://www.nooranch.com/synaesmedia/wiki/wiki.cgi?NetoCracy"&gt;nooranch&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lpcb2fJ6cH1qccri2.png"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Written in 2000, after the internet bubble explosion but before the official capitalist paradigm &lt;/span&gt;collapse&lt;span&gt; and Web 2.0 raise, authors reveal, in an incredible premonitory book what gone be the next socio-politico-economic paradigm. It perfectly describes those &amp;#8220;Connectors&amp;#8221; presented in a previous reading &amp;#8220;Le peuple des connecteurs&amp;#8221; from Thierry Crouzet.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Futurist and fascinating reading.&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/8419995297</link><guid>http://vzmind.tumblr.com/post/8419995297</guid><pubDate>Wed, 03 Aug 2011 02:54:00 -0400</pubDate><category>read</category><category>reading</category></item><item><title>When Salesforce meets awesome Ruby gems</title><description>&lt;a href="https://github.com/quintonwall/omniauth-rails3-forcedotcom/wiki/Build-Mobile-Apps-in-the-Cloud-with-Omniauth,-Httparty-and-Force.com"&gt;When Salesforce meets awesome Ruby gems&lt;/a&gt;: &lt;p&gt;There are multiple ways to connect your app to a SalesForce account but this one is pretty elegant and modern as it uses the new Winter ‘11 release with support of OAuth2 authorization standard through Omniauth. This article also describe the built of a REST API using HTTParty awesome gem.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/7505229139</link><guid>http://vzmind.tumblr.com/post/7505229139</guid><pubDate>Mon, 11 Jul 2011 16:54:27 -0400</pubDate><category>rails</category><category>opensource</category><category>salesforce</category></item><item><title>RuLu 2011: "Yes we did it, now it's your turn !!"</title><description>&lt;p&gt;&lt;p class="p1"&gt;Or &lt;em&gt;“How to organize an international Ruby Conf in 4 months&amp;#160;?”&lt;/em&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;img width="200px" src="http://media.tumblr.com/tumblr_lo3wwv0tez1qccri2.png"/&gt;4 months ago, in february, so impressed by the massive coming success of Euruko Berlin, we decided with few friends of &lt;a href="http://lyonrb.fr/"&gt;&lt;span class="s1"&gt;Lyon.rb&lt;/span&gt;&lt;/a&gt; to organize an other international Ruby event in Lyon. The idea behind was to gather french community on a classic international event in France and prepare the french application for Euruko 2013. Simple.&lt;/p&gt;
&lt;p class="p1"&gt;&lt;strong&gt;13 best practices to organize a Ruby Conf:&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p1"&gt;Here are some lessons I learnt from RuLu 2011 organization that can help you when you&amp;#8217;ll plan one:&lt;/p&gt;
&lt;ul class="ul1"&gt;&lt;li class="li2"&gt;&lt;strong&gt;Build a solid team&lt;/strong&gt;: Your team-mates are usually working during the week and have all a private and selfish life. Planning a Conf is a long road project and it’s sometime a real pain in the ass to stick to a weekly planned meeting. Some people might forget their responsibilities, miss too much meetings or not deliver what they should . You need people you can trust 100%.  &lt;!-- more --&gt;&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Be agile&lt;/strong&gt;; we did during 4 months two 15’ standup and one 1h debrief per week. Handling a distributed team (only half of them is leaving in Lyon) is a bet. So you need to coordinate them tightly and use lot of online tools.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Use online tools&lt;/strong&gt;: To synchronize, store, share easily use online tools. We used &lt;a href="http://www.pivotaltracker.com"&gt;Pivotal Tracker&lt;/a&gt; for project management, Google Doc for main docs writing, Google wiki to centralized all links. &lt;a href="http://getdropbox.com"&gt;Dropbox&lt;/a&gt; for files, a dedicated google email,&lt;a href="http://www.weezevent.com"&gt;Weezevent&lt;/a&gt; for event and ticket selling, Skype for daily chat and weekly meeting calls… That’s a lot. That’s too much. May be an idea for a SaaS project here? #pj&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Split responsibilities&lt;/strong&gt;: building a living website, event logistic, project management, sponsor and speakers hunt, goodies ordering, accountancy are all long-term topics. You cant have team members jumping from one to one. They have to be informed and responsible of them and stick to them for months.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Communicate dates ASAP&lt;/strong&gt;&amp;#160;: The RuLu con idea has been launched in february. One month later we decided and published the final date. It’s important to communicate soon the final date. Gathering 110 people for a week-end tech Conf imply much more inertia than for a single working day. You don&amp;#8217;t need a confirmed location so far (eg: Euruko 2011 in Berlin).&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Network, network, network&lt;/strong&gt;: don&amp;#8217;t be afraid to contact rockstars. They are rockstars because they love their public, they are passionated and deserve to be known. Contact them and expose your vision of your event. If your selection match the spirit of your event they will accept.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Find cheap venue&lt;/strong&gt;: Schools and Universities are always happy to welcome technical Conf in their empty amphitheaters. That’s always a big saving on your budget. For example a 200 places amphitheater in Lyon for 2 days cost around 4000€.  Alternative location must also be considered and could be really attractive (boat, castle, barn etc … ).&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Take special care of the Conf content&lt;/strong&gt;: attendees will have to buy a ticket, find a place to stay, buy plane tickets. The only initial reason for them to do so is they trust you to teach them something, help them meet interesting people and have a really good time. If the speakers crew is well known and has already delivered well rated talks, you cant worry too much about content. Then don&amp;#8217;t forget details. A party for example cant be forgotten.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;There is no little details&lt;/strong&gt;: Help all attendees to find a place to stay, provide them some information about the city, places to be. Think about toilet, accessibility of the venue. ( &lt;a href="http://blog.josephwilk.net/personal/conferences-and-accessibility-please-try-harder.html"&gt;&lt;span class="s1"&gt;Joseph Wilk was really &lt;/span&gt;&lt;/a&gt;disappointed and we are deeply sorry for that mistake). Think about water, tea and milk for those not drinking coffee. Think about attendees feedback, speaker reputation, twitter animation… no limit for details coverage. &lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Backup everything&lt;/strong&gt;: In case of dead mic, if a speaker cancel at the last minute or if the food can&amp;#8217;t be delivered you need a B plan. Nothing can be forgotten when 100 people are waiting for a smooth happening. &lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Look around for help&lt;/strong&gt;: we have contacted other experienced local groups from the Agile or Java community to help us. They have done that many times and gave us logistical support, advises, provider references.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Journalists are busy people&lt;/strong&gt;: you cant contact them 2 weeks before and hope they will cover your event. As soon as the event date is defined, contact them. Simple.&lt;/li&gt;
&lt;li class="li2"&gt;&lt;strong&gt;Party must be awesome&lt;/strong&gt;: A Conf is a social event. Better is the socialization and social spaces (coffee break, food, party … ) better is the Conf. I would have loved to make a BBQ and invite a DJ for a private outside party. But you know, a team is a small democracy :) &lt;/li&gt;
&lt;/ul&gt;&lt;p class="p1"&gt;&lt;strong&gt;&lt;strong&gt;How much cost RuLu Ruby Conf:&lt;/strong&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p class="p1"&gt;Now you might need real figures. For a 2 days Conf in Lyon with 10 speakers and a total of 110 attendees we had a budget of 10500€ with the following incomes:&lt;/p&gt;
&lt;ul class="ul1"&gt;&lt;li class="li2"&gt;3 Gold sponsors: 4500€&lt;/li&gt;
&lt;li class="li2"&gt;7 Silver sponsors: 3500€&lt;/li&gt;
&lt;li class="li2"&gt;50 sold tickets: 2500€&lt;/li&gt;
&lt;/ul&gt;&lt;p class="p1"&gt;And the following expenses:&lt;/p&gt;
&lt;ul class="ul1"&gt;&lt;li class="li2"&gt;Food: 3500€ including breakfast and coffee break&lt;/li&gt;
&lt;li class="li2"&gt;Speakers accommodation: 1700€ in a standard 3 stars hotel&lt;/li&gt;
&lt;li class="li2"&gt;Speakers transportation: 1800€ for train and plane tickets&lt;/li&gt;
&lt;li class="li2"&gt;Goodies: 900€&lt;/li&gt;
&lt;li class="li2"&gt;Printing: 120€&lt;/li&gt;
&lt;li class="li2"&gt;Welcome diner: 830€&lt;/li&gt;
&lt;li class="li2"&gt;Video making: 500€&lt;/li&gt;
&lt;li class="li2"&gt;Domain name and hosting: 28€&lt;/li&gt;
&lt;li class="li2"&gt;Misc expenses: 80€&lt;/li&gt;
&lt;/ul&gt;&lt;p class="p2"&gt;You can see that we made a profit of 1050€. Be sure we&amp;#8217;ll use them for the next event planned in coming months. What about an Open Source Hacking Camp on Sinatra or Travis CI&amp;#160;?&lt;/p&gt;&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/7050019229</link><guid>http://vzmind.tumblr.com/post/7050019229</guid><pubDate>Wed, 29 Jun 2011 13:57:00 -0400</pubDate><category>rails</category><category>conf</category><category>ruby</category><category>euruko</category><category>opensource</category></item><item><title>Why we, Rubyists, care about Salesforce-Heroku?</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lmz0hjWEkj1qccri2.png"/&gt;Everybody might have heard in our Ruby/Rails technosphere that recently, the successful company Salesforce.com, famous for his platform, his growth and his position as the first huge Cloud business oriented app, has bought the tiny and innovative Heroku Platform.&lt;/p&gt;
&lt;p&gt;I am not going to give an introduction about what those two key cloud actors do. You have to know that already. I am here to explain why the CRM market leader decided to buy our underground Ruby on-demand hosting platform and why that matter for us. &lt;!-- more --&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ruby is trendy:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since years now, the web ecosystem is driven by the Rails community. Creative, active and efficient, Rails approach has been spread as a major epidemic and has inoculated Ruby OO flexibility and Rails efficiency to well-settled language like PHP or Java. Ruby community is amazingly active. Coders are passionated and produce a living and elegant code base making Ruby/Rails and all Ruby librairies a relevant option in most of the situation.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Heroku is trendy:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bored by deploying complicated to manage Web app, the Ruby community has quickly adopted the Heroku Cloud solution. As simple as a adding gem, hosting an app with Heroku let you create a Virtual Slice of cloud using an Heroku command. Your application is up and running in 3mn and ready to scale on-demand. Thousands of applications have been launched in few months and today they are close to 100.000 applications hosted on their platform.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Salesforce.com want to stay trendy and need our Love:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;After years of succes and growth, Salesforce turned from a simple online web app into a sophisticated corporate platform. With two languages, Apex and VisualForce, a PaaS (Platform as a Service), Force.com and thousand of app in it&amp;#8217;s eco-system, Salesforce proved years after years its ability to innovate. Last evolution concern for example the launch of Chatter to address social and mobile usages. Now that 3 millions users are connected daily to Salesforce and used to manage their lead pipe with it, an obvious and growing need of interaction with external apps appeared. Of course, Salesforce API provide almost all informations about your leads,account, contacts etc but the SF Data consumers, marketing people, want to create, almost on the fly, Data visualization and analytic tools. Sales pipeline optimization, Lead generation, or Lead nurturing, progressive and automated qualification are some of the hot topics for external Salesforce Application. Of course, Cloud app like Eloqua bring really innovatives and well SF integrated solutions for those points. Nevertheless small and fast businesses require some specific integration of Salesforce to their own product that can only be accomplished using external developments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here we go, Rubyists!!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Check that:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Salesforce Data model is Object Oriented as our daily ActiveRecord ORM is in Rails. &lt;em&gt;Lead.first.address&lt;/em&gt; is a valid Salesforce command. &lt;/li&gt;
&lt;li&gt;Salesforces Data Model is totally exposed on its API and can be consumed easily using ActiveRessource. &lt;/li&gt;
&lt;li&gt;Salesforce will be soon more integrated with Heroku (I guess)&lt;/li&gt;
&lt;li&gt;Salesforce market is customer centric and think as we do &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Based on that, we can put to good use our demonstrated skills to build Web/Mobile apps. We have a new playground to express our ideas and conquer new market.&lt;/p&gt;
&lt;p&gt;Nice to read about Salesforce and Heroku:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.forbes.com/ciocentral/2011/01/10/is-salesforce-com-wrong-to-love-ruby/"&gt;http://blogs.forbes.com/ciocentral/2011/01/10/is-salesforce-com-wrong-to-love-ruby/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.citoresearch.com/content/direct-salesforcecom-why-we-bought-heroku"&gt;http://www.citoresearch.com/content/direct-salesforcecom-why-we-bought-heroku&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://vzmind.tumblr.com/post/6720427803</link><guid>http://vzmind.tumblr.com/post/6720427803</guid><pubDate>Mon, 20 Jun 2011 07:48:38 -0400</pubDate><category>rails</category><category>ruby</category><category>heroku</category><category>opensource</category><category>salesforce</category></item><item><title>Ruby Lugdunum Conference 2011</title><description>&lt;a href="http://www.rulu.eu"&gt;Ruby Lugdunum Conference 2011&lt;/a&gt;: &lt;p&gt;&lt;em&gt;“The ruby ecosystem is thrilling in &lt;a href="http://rubyists.eu/"&gt;Europe&lt;/a&gt; with major events happening &lt;a href="http://lanyrd.com/topics/ruby/"&gt;everywhere.&lt;/a&gt; Barricaded in the last free village in Gaul, we will treat you with talks (in English), some hacking and good food.”&lt;/em&gt; What a program :) Hopefully, for those ticketless for Euruko Berlin, most of RuLu speaker are international one and where speaking in Germany last week. An underground and smart conf for sure.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/6013674108</link><guid>http://vzmind.tumblr.com/post/6013674108</guid><pubDate>Mon, 30 May 2011 17:38:55 -0400</pubDate><category>opensource</category></item><item><title>From Mint to P2P currency</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lm10zl6qTO1qccri2.png" height="232" width="232"/&gt;Few months ago, in my 19 floors tower of Santiago I met in the lift an american neighbor, Ken. Who know why we decided to discuss and drink beers together? Anyway. Ken, was CFO of a classic mid-size company in US till 200x. After 2008&amp;#8217;s crisis, he has been gently pushed out as so many other American citizens. Ken was in his sixties and it&amp;#8217;s a more than a reason for a CEO to offer you the freedom of looking for a new job by yourself especially when everybody is sliming down. But Ken is that kind of american activist, fascinated by knowledge and its sharing. During 30 years, he tried to teach youngster (like me) and introduce them to micro and macro economy secrets. As a hobby and a proof of concept, he also developed a mint business to wedge it&amp;#8217;s own currency. Ken believe in simple things like&amp;#160;: &amp;#8220;The only value of a coin is it&amp;#8217;s own value.&amp;#8221; So his coins are available all over the world now.&lt;/p&gt;
&lt;p&gt;If I write that post about Ken it&amp;#8217;s because I believe the Digital Generation have the duty to rethink the basis of its political and economical world. We have to re-invent the basis of the economy if they dont want to have to fly away from their own country in 30 years.&lt;/p&gt;
&lt;p&gt;&lt;!-- more --&gt;I am a digital freedom fighter. I have no Land, no Boss and no God. I am not going to work 50 years to get a miserable pension, sit and watch the world changing. As Ken, I will fight till the end, with pleasure and enthusiasm. I am smart enough to understand gears of power and use them.&lt;/p&gt;
&lt;p&gt;The digital generation got that power into its hands. My hacking brothers are used to hunt on internet since 15 years and more and get paid very-well for that. They build software from no-where for gathering, mining, processing and spreading data. That&amp;#8217;s their expertise. They make shit of money from that. They travel all over the globe, get used to customs/habits from Dubai investors, Maharashtra IT manager or South american business men. As they know how deep and multiple are internet ramifications and well-furnished and easily reachable today&amp;#8217;s DB, they know they can easily spread any idea/concept/meme and/or build any new function/service/process. They aim to change the way itself world turns. They are ambitious, self-confidents and arrogants.&lt;/p&gt;
&lt;p&gt;Note: I impatient to start that Book &amp;#8220;Netocrats&amp;#8221; from A Bard and J Söderqvist. Of course, you&amp;#8217;ll find some notes here.&lt;/p&gt;
&lt;p&gt;Back to Currency, Money, Mint. I recently heard about a &lt;span&gt;professor at the London School of Economics talk, here paraphrased by&lt;/span&gt; &lt;span&gt;&lt;a target="_blank" href="http://www.birdsbeforethestorm.net/2009/02/mythmakers-lawbreakers-alan-moore-on-anarchism/"&gt;Alan Moore&lt;/a&gt;&amp;#160;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;
&lt;blockquote&gt;
&lt;p&gt;“[The lecturer] was saying that the only reason that governments are governments is that they control the currency; they don’t actually do anything for us that we don’t pay for, other than expose us to the threat of foreign wars by their reckless actions. They don’t actually really even govern us; all they do is control the currency and rake off the proceeds.”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a bit rough but, you got the point.&lt;/p&gt;
&lt;p&gt;Now I bring few references you might know. Look at the history from &lt;a target="_blank" href="http://www.napster.com"&gt;Napster&lt;/a&gt; to &lt;a target="_blank" href="http://wikileaks.ch/"&gt;Wikileak.&lt;/a&gt; Both are P2P success stories. They have transformed the way we share data and informations. Since few years, without too much noise so far, a new player is rising, &lt;a target="_blank" href="http://www.bitcoin.org"&gt;Bitcoin&lt;/a&gt;. BitCoin, is about sharing a currency using P2P. It&amp;#8217;s free, distributed and impossible to control. There are already few market places were you can trade bitcoins against Euros, Dollars or GBP. Some website start to accept them as a currency. More and more people are interested by them and consequently the exchange rate is growing furiously.&lt;/p&gt;
&lt;p&gt;Think about that. Read about that. Be part of it.&lt;/p&gt;
&lt;p&gt;Personally, I am convinced we found here a major revolution leverage.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/6012301388</link><guid>http://vzmind.tumblr.com/post/6012301388</guid><pubDate>Mon, 30 May 2011 16:57:00 -0400</pubDate><category>neoanarchism</category><category>societies building</category><category>utopia</category><category>currency</category><category>opensource</category></item><item><title>Book: Design Patterns in Ruby</title><description>&lt;p&gt;&lt;img alt="Design Patterns in RUby" src="http://www.rubyinside.com/wp-content/uploads/2008/01/51NG5mF-SAL._SS500_1.jpg" height="310" width="234"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title: &lt;/strong&gt;&lt;em&gt;&amp;#8220;Design Patterns in Ruby&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Russ Olsen&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edition:&lt;/strong&gt; Addison Wesley&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract: &lt;/strong&gt;Getting better in Ruby using the Gang Of Four holy knowledge. From today I will read a chapter once a while and put my comments here. Reading such traditional sciences is a must-done for any hacker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pattern I: Template Pattern&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Template Pattern aim to re-organize your code when a part of it only has to be flexible. Templates offer though an Abstract Class a kind of Interface. Using Hooks, available methods are easily over-ridden inside sub-classes. Main and central methods remains in the Abstract base Class and specializations are implemented inside children classes. Nothing complicated here but a pattern that allow us to easily modify of an Object by subclassing it.&lt;/p&gt;
&lt;p&gt;Example: Change the behavior of WEBrick by adding a new template.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Pattern II: Strategy Pattern&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A modern rule is &amp;#8220;you can always delegate more&amp;#8221;. Strategy Pattern extract the algorithm out into a separate object. Based on a Strategy all sub-classes (strategies) provide a different approach of the same action. The user, called the context, is implemented in a distinct Class and consequently there is a nice and strong separation between him and strategies.&lt;/p&gt;
&lt;p&gt;The most direct connection with Ruby are Procs. A Proc is a chunck of code embeded in an Object. Doesnt that sound like a Strategy?&lt;/p&gt;
&lt;p&gt;Example: Rdoc parsers can be extended using a new strategy&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/5555318319</link><guid>http://vzmind.tumblr.com/post/5555318319</guid><pubDate>Mon, 16 May 2011 17:52:00 -0400</pubDate><category>reading</category><category>rails</category><category>opensource</category></item><item><title>Book: Les Eclaireurs d'Antoine Bello</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lbxx7mdQq51qccri2.gif"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Title: &lt;/strong&gt;&lt;em&gt;&amp;#8220;Les éclaireurs&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Antoine Bello&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edition:&lt;/strong&gt; Gallimard&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Abstract: &lt;/strong&gt;The Reality Falsification Comity is back. Sliv will try to get more explanation about the final and real aim of the organization. Not a great suite just a typical one. The universe described in the first volume &amp;#8220;Les falsificateurs&amp;#8221; was terribly inspiring. Nothing really new come in this one. &lt;strong&gt;&lt;br/&gt;&lt;/strong&gt;&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/5069313326</link><guid>http://vzmind.tumblr.com/post/5069313326</guid><pubDate>Sat, 30 Apr 2011 10:00:06 -0400</pubDate><category>reading</category></item><item><title>Start Up Week End - Lyon 2011</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lh3jko2ref1qccri2.gif" height="142" width="559"/&gt;&lt;/p&gt;
&lt;p&gt;Last week-end after the &lt;a target="_blank" href="http://www.lyonrb.fr"&gt;Lyonrb.fr&lt;/a&gt; apéro, we have been &lt;a target="_blank" href="http://twitter.com/#!/21croissants"&gt;21croissants&lt;/a&gt; Ranksa and me to the first &lt;a target="_blank" href="http://lyon.startupweekend.org/"&gt;Lyon Start Up Week End&lt;/a&gt; (SUWE) as partners of the event. Nice place to evangelize and spread Ruby good word.&lt;/p&gt;
&lt;!-- more --&gt;
&lt;p&gt;This said, what is a Start Up a week end?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The recipe&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Take 100 people with following proportions 60% of business or management school students, 20% of IT Students or professionals and 20% of other profile&lt;/li&gt;
&lt;li&gt;Ask them to pitch freely in 60s about a project they want to realize&lt;/li&gt;
&lt;li&gt;Let the public choose the 15 best one of them using Monopoly notes&lt;/li&gt;
&lt;li&gt;Give them 54h to build their start up&lt;/li&gt;
&lt;li&gt;Let them convince you with a 10mn light talk that they are the best&lt;/li&gt;
&lt;li&gt;Choose&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The SUWE was organized in a Lyon Business School. Most of the pitcher were student and the ideas were clearly not disruptive. Here are the selected one:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Tranform your car in a camping car (the only one low tech project)&lt;/li&gt;
&lt;li&gt;Netlunch to connect employees at lunch time&lt;/li&gt;
&lt;li&gt;Facebook appli to wink before a party&lt;/li&gt;
&lt;li&gt;Kids browser&lt;/li&gt;
&lt;li&gt;E-commerce site of series cult objects&lt;/li&gt;
&lt;li&gt;Mobile game to fight inside the subway&lt;/li&gt;
&lt;li&gt;Chrismas gift list for Kids&lt;/li&gt;
&lt;li&gt;Mini travel guides written by back packers&lt;/li&gt;
&lt;li&gt;Meetic + mymajorcompany for entrepreneurs&lt;/li&gt;
&lt;li&gt;Travel agregator &lt;/li&gt;
&lt;li&gt;Dashboard for SME&lt;/li&gt;
&lt;li&gt;Montmartre Online&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Clearly nothing revolutionary. But that&amp;#8217;s not the point. A typical Startup mood was inside the building. Around the over excited student, some well called mentors (lawyers, investors, architect) were present to explain and guide the new startups.&lt;/p&gt;
&lt;p&gt;At the end of the 54h, some were already out, auto cleared from this ephemera market because of their obvious weakness. Winners are 12, 3, 4.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Opinion:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Incredible, during this two days the #swlyon hashtag was first in France!! A lot of activity and visibility for those involved. A StartUp WeekEnd is for an organisator a perfect opportunity to meet people. As a Lyonrb.fr representative, I am proud to say that I have evangelized few people and added 3 Rails companies to my list.&lt;/p&gt;
&lt;p&gt;On the technical side, almost all coders were working in php/Java. Consequently no impressive realization in 54h as in Paris were most of them were using Rails.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/3473698437</link><guid>http://vzmind.tumblr.com/post/3473698437</guid><pubDate>Wed, 23 Feb 2011 20:08:00 -0500</pubDate><category>ruby</category><category>rails</category><category>community</category><category>swlyon</category></item><item><title>Behind OpenSource … Open knowledge, Open Currency and...</title><description>&lt;iframe src="http://player.vimeo.com/video/4448209" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Behind OpenSource … Open knowledge, Open Currency and probably more ahead&lt;/p&gt;
&lt;p&gt;The revolution of our information world is far behind what we experiment  right now. Ipad is just a buzz word. That took a long time but, with  those kind of initiatives, I got the feeling that my early 90’s dreams  are getting real.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/3038112960</link><guid>http://vzmind.tumblr.com/post/3038112960</guid><pubDate>Mon, 31 Jan 2011 18:30:01 -0500</pubDate><category>utopia</category><category>metacurrency</category><category>opensource</category></item><item><title>Moutain.rb Ruby Camp 2011 - Savoie : Caching with Rails</title><description>&lt;p&gt;My last talk during the Moutain.rb Ruby Camp was about caching with rails. It&amp;#8217;s an introduction to main concept. Next one will be more dedicated to memcached configuration and usage.&lt;/p&gt;

&lt;p&gt;
&lt;object id="__sse6735549" width="425" height="355"&gt;
&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railscaching-2011-110128102453-phpapp02&amp;amp;stripped_title=rails-caching&amp;amp;userName=VzMindItSelf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse6735549" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railscaching-2011-110128102453-phpapp02&amp;amp;stripped_title=rails-caching&amp;amp;userName=VzMindItSelf" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/VzMindItSelf"&gt;VzMind ItSelf&lt;/a&gt;.&lt;/p&gt;</description><link>http://vzmind.tumblr.com/post/2976957099</link><guid>http://vzmind.tumblr.com/post/2976957099</guid><pubDate>Fri, 28 Jan 2011 11:30:18 -0500</pubDate><category>opensource</category></item><item><title>Padrino Ruby Web Micro-Framework</title><description>&lt;a href="http://www.padrinorb.com/guides"&gt;Padrino Ruby Web Micro-Framework&lt;/a&gt;</description><link>http://vzmind.tumblr.com/post/1611312970</link><guid>http://vzmind.tumblr.com/post/1611312970</guid><pubDate>Thu, 18 Nov 2010 14:26:09 -0500</pubDate><category>opensource</category></item></channel></rss>
