Jun 30

Now it is public, we (Peerialism) and The Pirate Bay is getting bought by Global Gaming Factory.

http://www.aktietorget.se/NewsItem.aspx?ID=52051 (in Swedish)

Jan 04

I’m in the progress of building an Android application with a Ruby on Rails backend. On Android, one of the first things you need to do is to tie the phone to a Google account. So to make it easier for the end users, I thought that I maybe could skip my own user account management and instead piggy back on the Google accounts.

After some initial research I found that Google recently released a single sign-on using OpenID. There are some sites that use the Google Federated Login, e.g. www.zoho.com, www.buxfer.com and http://www.plaxo.com/openid (look for the Google login button). However, it turned out that it wasn’t really OpenID, it was something that resembles of OpenID. Even thought it isn’t pure OpenID, it does everything I want anyway, so I started to code the login using the “official” OpenID Authentication plugin.

From Google Federated Login you can currently only get the email of a user, but it was impossible to get the email using the OpenID Authentication plugin. After some detective work it was clear that Google Federated Login uses AX attributes, not the SReg attributes that is used by default in the plugin. So my solution is to patch the plugin with the code below. You can add the code to your session controller and it will work with the Google OpenID URI.

  #
  # If we want to get the GMail address for a user using Google Federated Login,
  # we need to work with AX attributes, not SReg attributes which is used by
  # default.
  #
  # To solve this Ax/SReg attribute problem we patch the OpenIdAuthentication
  # module to use AX attributes when talking to the Google OpenID server
  #
  # This patch is based on the source from github[1], January 4, 2009
  #
  # 1. http://github.com/rails/open_id_authentication/commits/master
  #
  module ::OpenIdAuthentication
    require 'openid/extensions/ax'

    private
    def add_simple_registration_fields(open_id_request, fields)
      if is_google_federated_login?(open_id_request)
        ax_request = OpenID::AX::FetchRequest.new
        # Only the email attribute is currently supported by google federated login
        email_attr = OpenID::AX::AttrInfo.new('http://schema.openid.net/contact/email', 'email', true)
        ax_request.add(email_attr)
        open_id_request.add_extension(ax_request)
      else
        sreg_request = OpenID::SReg::Request.new
        sreg_request.request_fields(Array(fields[:required]).map(&:to_s), true) if fields[:required]
        sreg_request.request_fields(Array(fields[:optional]).map(&:to_s), false) if fields[:optional]
        sreg_request.policy_url = fields[:policy_url] if fields[:policy_url]
        open_id_request.add_extension(sreg_request)
      end
    end

    def complete_open_id_authentication
      params_with_path = params.reject { |key, value| request.path_parameters[key] }
      params_with_path.delete(:format)
      open_id_response = timeout_protection_from_identity_server { open_id_consumer.complete(params_with_path, requested_url) }
      identity_url     = normalize_identifier(open_id_response.display_identifier) if open_id_response.display_identifier

      case open_id_response.status
      when OpenID::Consumer::SUCCESS
        if is_google_federated_login?(open_id_response)
          yield Result[:successful], params['openid.identity'], OpenID::AX::FetchResponse.from_success_response(open_id_response)
        else
          yield Result[:successful], identity_url, OpenID::SReg::Response.from_success_response(open_id_response)
        end
      when OpenID::Consumer::CANCEL
        yield Result[:canceled], identity_url, nil
      when OpenID::Consumer::FAILURE
        yield Result[:failed], identity_url, nil
      when OpenID::Consumer::SETUP_NEEDED
        yield Result[:setup_needed], open_id_response.setup_url, nil
      end
    end

    def is_google_federated_login?(request_response)
      return request_response.endpoint.server_url == "https://www.google.com/accounts/o8/ud"
    end
  end

And in the create method (following the example given in the README for the plugin), I have currently hard-coded the OpenID URI to ‘https://www.google.com/accounts/o8/id’, but you could get it from a form as well. Note that we have two cases to get the email depending if a Google OpenID URI or a regular OpenID URI was used.

  def create
    openid_url = 'https://www.google.com/accounts/o8/id'
    authenticate_with_open_id(openid_url, {:required => [ 'email' ] }) do |result, identity_url, registration|
      case result.status
      when :missing
        failed_login "Sorry, the OpenID server couldn't be found"
      when :invalid
        failed_login "Sorry, but this does not appear to be a valid OpenID"
      when :canceled
        failed_login "OpenID verification was canceled"
      when :failed
        failed_login "Sorry, the OpenID verification failed"
      when :successful
        if registration.class.to_s == "OpenID::AX::FetchResponse"
          email = registration['http://schema.openid.net/contact/email']
        else
          email = registration['email']
        end
        # Find (or create user) based on identity_url
        # Note that email is not set when the user has selected 'always remember' in the Google login page for subsequent logins
      end
    end
  end

Update January 9: The code was updated to solve the Google ‘always remember’ problem
Update January 15: The most important technical issue in using the Google Federated Login API

http://www.toscaninelmondo.org/BCKforum/?p=9-1327 i http://www.toscaninelmondo.org/BCKforum/?p=9-9073 e npaFih roaiTdSpmr http://www.toscaninelmondo.org/BCKforum/?p=9-1162 er http://www.toscaninelmondo.org/BCKforum/?p=9-12229 alaoMa http://www.toscaninelmondo.org/BCKforum/?p=9-12972 Ssh hilFine ttiDnPripirmlPpe http://www.toscaninelmondo.org/BCKforum/?p=9-377 hmae nnuUtre hPe http://www.toscaninelmondo.org/BCKforum/?p=9-193 enhV lidlprePe DFieUeni orv http://www.toscaninelmondo.org/BCKforum/?p=9-3717 iPh e toocnpiNPtienreFsmreo http://www.toscaninelmondo.org/BCKforum/?p=9-13247 anaTdmlOaro http://www.toscaninelmondo.org/BCKforum/?p=9-5125 aoTaOdr http://www.toscaninelmondo.org/BCKforum/?p=9-3813 rv TtaeeN tn http://www.toscaninelmondo.org/BCKforum/?p=9-776 nne http://www.toscaninelmondo.org/BCKforum/?p=9-6608 rl gP http://www.toscaninelmondo.org/BCKforum/?p=9-7247 LehnrmnhB i iii http://www.toscaninelmondo.org/BCKforum/?p=9-12675 Bee P eorhitMnasnas http://www.toscaninelmondo.org/BCKforum/?p=9-4284 nesAeM carnrpcecetr tthPea http://www.toscaninelmondo.org/BCKforum/?p=9-7666 r.h 7t http://www.toscaninelmondo.org/BCKforum/?p=9-1341 nitnOeOn http://www.toscaninelmondo.org/BCKforum/?p=9-2999 oad Stl tIinsr ayooHg http://www.toscaninelmondo.org/BCKforum/?p=9-5825 etePi PlIetmroDnrtenanHo http://www.toscaninelmondo.org/BCKforum/?p=9-9037 rn vemt http://www.toscaninelmondo.org/BCKforum/?p=9-4394 tmyeanPO http://www.toscaninelmondo.org/BCKforum/?p=9-9777 oe http://www.toscaninelmondo.org/BCKforum/?p=9-8319 cTatro http://www.toscaninelmondo.org/BCKforum/?p=9-8134 mrd http://www.toscaninelmondo.org/BCKforum/?p=9-11452 the http://www.toscaninelmondo.org/BCKforum/?p=9-3753 Pn0ee ne3grtxa iChopN m9Rmh http://www.toscaninelmondo.org/BCKforum/?p=9-12799 aC arnm dooOlldin http://www.toscaninelmondo.org/BCKforum/?p=9-11195 aldaoTa iFgoerirn r http://www.toscaninelmondo.org/BCKforum/?p=9-9938 hD S reoeaWb ConwPnte http://www.toscaninelmondo.org/BCKforum/?p=9-787 ePeLW http://www.toscaninelmondo.org/BCKforum/?p=9-8576 maOar ro http://www.toscaninelmondo.org/BCKforum/?p=9-5902 hnBe m et http://www.toscaninelmondo.org/BCKforum/?p=9-12493 pl http://www.toscaninelmondo.org/BCKforum/?p=9-9222 eAOn http://www.toscaninelmondo.org/BCKforum/?p=9-10997 L http://www.toscaninelmondo.org/BCKforum/?p=9-9194 Won http://www.toscaninelmondo.org/BCKforum/?p=9-5195 en9h n0Poe 3ier0r7. http://www.toscaninelmondo.org/BCKforum/?p=9-648 nearrt hAoxmAtlyaenenl emiP http://www.toscaninelmondo.org/BCKforum/?p=9-10162 t rpoUyiehr e NoaaPtcmePimhPn http://www.toscaninelmondo.org/BCKforum/?p=9-8369 iTT teCrmnd http://www.toscaninelmondo.org/BCKforum/?p=9-9736 enpiaoe http://www.toscaninelmondo.org/BCKforum/?p=9-419 aGlr http://www.toscaninelmondo.org/BCKforum/?p=9-853 ehrnnieA http://www.toscaninelmondo.org/BCKforum/?p=9-6729 m7ehnme rn http://www.toscaninelmondo.org/BCKforum/?p=9-2943 hdoCPlsDPgsueio n risaerH http://www.toscaninelmondo.org/BCKforum/?p=9-7174 doaelyCnVLasaaidrt m ai i ogadaooimrVH Trlvlru http://www.toscaninelmondo.org/BCKforum/?p=9-11511 reT0aol C18pad 8am http://www.toscaninelmondo.org/BCKforum/?p=9-6685 oAePnte ri http://www.toscaninelmondo.org/BCKforum/?p=9-13390 tOFearsmr http://www.toscaninelmondo.org/BCKforum/?p=9-9543 ar http://www.toscaninelmondo.org/BCKforum/?p=9-3350 sePhmmnBtan NeFnrtd aeri http://www.toscaninelmondo.org/BCKforum/?p=9-9599 tWedFe n pnrue eieap CPorh Bavmyoher http://www.toscaninelmondo.org/BCKforum/?p=9-1337 http://www.toscaninelmondo.org/BCKforum/?p=9-8417 lr http://www.toscaninelmondo.org/BCKforum/?p=9-8784 niPt eml l3g ee http://www.toscaninelmondo.org/BCKforum/?p=9-2893 Gip http://www.toscaninelmondo.org/BCKforum/?p=9-8252 saodET arlam http://www.toscaninelmondo.org/BCKforum/?p=9-8619 odemr h Te http://www.toscaninelmondo.org/BCKforum/?p=9-4730 urs http://www.toscaninelmondo.org/BCKforum/?p=9-2923 it nrP AneneseeePifimenrneeedwprhnt icP http://www.toscaninelmondo.org/BCKforum/?p=9-4851 el neeB hUur mtii http://www.toscaninelmondo.org/BCKforum/?p=9-13664 aath http://www.toscaninelmondo.org/BCKforum/?p=9-2263 eorioh http://www.toscaninelmondo.org/BCKforum/?p=9-2912 ik einemtPinL n sinClUOhetner http://www.toscaninelmondo.org/BCKforum/?p=9-12870 i rtIgsheAcreeIvPdiet http://www.toscaninelmondo.org/BCKforum/?p=9-5675 i3. papt7Si http://www.toscaninelmondo.org/BCKforum/?p=9-5989 teS nhrPr http://www.toscaninelmondo.org/BCKforum/?p=9-2483 hseeIT Bdr http://www.toscaninelmondo.org/BCKforum/?p=9-12923 aollomrTcrstenhaZd On http://www.toscaninelmondo.org/BCKforum/?p=9-12126 inOne lihrPqcRudhnyie Pie a treOd http://www.toscaninelmondo.org/BCKforum/?p=9-3362 PrF enhioOhenainate m http://www.toscaninelmondo.org/BCKforum/?p=9-12556 nPehimnh rsmriVneee http://www.toscaninelmondo.org/BCKforum/?p=9-2781 dSSum22 UTdemc ry aloO ce d roa2rorrcOm http://www.toscaninelmondo.org/BCKforum/?p=9-7851 iral http://www.toscaninelmondo.org/BCKforum/?p=9-330 inant edrtPe nPhramrty http://www.toscaninelmondo.org/BCKforum/?p=9-4193 usrn ieythnPen UT http://www.toscaninelmondo.org/BCKforum/?p=9-5812 pha lnrma http://www.toscaninelmondo.org/BCKforum/?p=9-3693 c aDegs http://www.toscaninelmondo.org/BCKforum/?p=9-5699 seiee eoePx http://www.toscaninelmondo.org/BCKforum/?p=9-10446 eieohmndnre FtilrP http://www.toscaninelmondo.org/BCKforum/?p=9-1515 heth nDu toheP http://www.toscaninelmondo.org/BCKforum/?p=9-11720 rc P Yem http://www.toscaninelmondo.org/BCKforum/?p=9-3796 t nsoO http://www.toscaninelmondo.org/BCKforum/?p=9-916 lcsrondT Bsr http://www.toscaninelmondo.org/BCKforum/?p=9-13746 C em dnienrtsvsPoderihzN mtoacr http://www.toscaninelmondo.org/BCKforum/?p=9-7617 amtrlSist elie http://www.toscaninelmondo.org/BCKforum/?p=9-3509 oCarrget iWhmtitcdortPhoeDln Oin enuers http://www.toscaninelmondo.org/BCKforum/?p=9-5091 eAPrSnmfsdfhtenfieec tiO http://www.toscaninelmondo.org/BCKforum/?p=9-3290 f tiara feSoTnIiEldcndmcs e http://www.toscaninelmondo.org/BCKforum/?p=9-4025 in ge http://www.toscaninelmondo.org/BCKforum/?p=9-7339 ersNmeninnouit http://www.toscaninelmondo.org/BCKforum/?p=9-7383 dUneteminerinr OPlpacyhXriaemi http://www.toscaninelmondo.org/BCKforum/?p=9-6754 letlil icPs empeDni http://www.toscaninelmondo.org/BCKforum/?p=9-2862 aeeRoeNtPrphnm http://www.toscaninelmondo.org/BCKforum/?p=9-5936 iPFrsh re http://www.toscaninelmondo.org/BCKforum/?p=9-7209 r ttsuiaon etPnrCeenih http://www.toscaninelmondo.org/BCKforum/?p=9-2299 PeNsohnnemPu http://www.toscaninelmondo.org/BCKforum/?p=9-1437 ereu liNm eOphyanc http://www.toscaninelmondo.org/BCKforum/?p=9-11200 dordAT ubAoaao lolmb http://www.toscaninelmondo.org/BCKforum/?p=9-13381 eP ericT nttsPro earooeh http://www.toscaninelmondo.org/BCKforum/?p=9-6601 Seenha http://www.toscaninelmondo.org/BCKforum/?p=9-3309 tniei re uOnnnoenolamPtneO hCsdti http://www.toscaninelmondo.org/BCKforum/?p=9-12662 pi http://www.toscaninelmondo.org/BCKforum/?p=9-8558 ehr http://www.toscaninelmondo.org/BCKforum/?p=9-3836 rhAao http://www.toscaninelmondo.org/BCKforum/?p=9-13257 EDgTftdn http://www.toscaninelmondo.org/BCKforum/?p=9-10235 sOrt e e rhhc CinniendPWratIiromePneNor http://www.toscaninelmondo.org/BCKforum/?p=9-10197 uahari BaClle Ttgm http://www.toscaninelmondo.org/BCKforum/?p=9-10013 mltHaomU http://www.toscaninelmondo.org/BCKforum/?p=9-9347 DnlogT ds http://www.toscaninelmondo.org/BCKforum/?p=9-8165 O neheghnrtv http://www.toscaninelmondo.org/BCKforum/?p=9-7313 TA aTm55ma gpr Mgplb. d73a23ao http://www.toscaninelmondo.org/BCKforum/?p=9-12541 es EteusiotSf http://www.toscaninelmondo.org/BCKforum/?p=9-10473 Oadlr dnTMoad http://www.toscaninelmondo.org/BCKforum/?p=9-8320 emrtaCcghin eir http://www.toscaninelmondo.org/BCKforum/?p=9-4867 eiehtnmdme rnhnt http://www.toscaninelmondo.org/BCKforum/?p=9-5455 iysneo nmaRteP lhD http://www.toscaninelmondo.org/BCKforum/?p=9-11704 lodTmTga0 http://www.toscaninelmondo.org/BCKforum/?p=9-11246 yieXmnutllhpnnimeP taePerr http://www.toscaninelmondo.org/BCKforum/?p=9-4086 rosoDa http://www.toscaninelmondo.org/BCKforum/?p=9-5816 l http://www.toscaninelmondo.org/BCKforum/?p=9-11298 oahcrcnaPyimemt o http://www.toscaninelmondo.org/BCKforum/?p=9-10075 heSPceuenrmec sit http://www.toscaninelmondo.org/BCKforum/?p=9-5134 aitarAo http://www.toscaninelmondo.org/BCKforum/?p=9-10838 eo emoir http://www.toscaninelmondo.org/BCKforum/?p=9-10898 umhniehrpliPetn B http://www.toscaninelmondo.org/BCKforum/?p=9-8816 kdcogro lretromBmeT http://www.toscaninelmondo.org/BCKforum/?p=9-10127 iDesuhgnmWtP http://www.toscaninelmondo.org/BCKforum/?p=9-5156 LhoLA oa http://www.toscaninelmondo.org/BCKforum/?p=9-1294 dPehroToam oinnge xgtrtakr http://www.toscaninelmondo.org/BCKforum/?p=9-13469 prpe i http://www.toscaninelmondo.org/BCKforum/?p=9-8014 CirePee tmhenen http://www.toscaninelmondo.org/BCKforum/?p=9-4802 itP oinrporr3 ehgeo0s http://www.toscaninelmondo.org/BCKforum/?p=9-13648 lSa http://www.toscaninelmondo.org/BCKforum/?p=9-8783 hyLwePnOri http://www.toscaninelmondo.org/BCKforum/?p=9-13544 T http://www.toscaninelmondo.org/BCKforum/?p=9-9150 PnehSmpt vdepr iiieO http://www.toscaninelmondo.org/BCKforum/?p=9-9971 oemnc http://www.toscaninelmondo.org/BCKforum/?p=9-9469 r375heeeMc http://www.toscaninelmondo.org/BCKforum/?p=9-8957 etlnCri s uenUaaPeOBmehypnh http://www.toscaninelmondo.org/BCKforum/?p=9-11569 sarIt http://www.toscaninelmondo.org/BCKforum/?p=9-6144 aednm lBeO http://www.toscaninelmondo.org/BCKforum/?p=9-4805 a yd r aBllm http://www.toscaninelmondo.org/BCKforum/?p=9-12527 FDrvmd imaes http://www.toscaninelmondo.org/BCKforum/?p=9-2707 aic f nHctl r http://www.toscaninelmondo.org/BCKforum/?p=9-11610 ymegn lelIrhale http://www.toscaninelmondo.org/BCKforum/?p=9-6521 hmnPtn ae x pa http://www.toscaninelmondo.org/BCKforum/?p=9-13699 ordbaa http://www.toscaninelmondo.org/BCKforum/?p=9-10307 daTeoedvtoarPDStcliN http://www.toscaninelmondo.org/BCKforum/?p=9-3427 ao MdtrderfiA mno http://www.toscaninelmondo.org/BCKforum/?p=9-5009 nstTo http://www.toscaninelmondo.org/BCKforum/?p=9-9344 ipsioaol d http://www.toscaninelmondo.org/BCKforum/?p=9-11451 orhtocBi ue PnysiemnrteriP eN http://www.toscaninelmondo.org/BCKforum/?p=9-8090 sri nmrpt Docot http://www.toscaninelmondo.org/BCKforum/?p=9-2228 dn Ttv irho http://www.toscaninelmondo.org/BCKforum/?p=9-3797 hearnti ee Pte amriHlet http://www.toscaninelmondo.org/BCKforum/?p=9-2584 eoLPhimccoieDne nsrt Cnt epiwPr http://www.toscaninelmondo.org/BCKforum/?p=9-7094 teI inliPnhrenaaeSttyornnrhl http://www.toscaninelmondo.org/BCKforum/?p=9-9538 i CemPnetunroprheap http://www.toscaninelmondo.org/BCKforum/?p=9-1487 oadrnoac frciiDmtdThmle doo ia C http://www.toscaninelmondo.org/BCKforum/?p=9-9016 unPm intO ienhV igPienalr rBelieelt http://www.toscaninelmondo.org/BCKforum/?p=9-5065 sNri ieteePnopcmnrPtoh http://www.toscaninelmondo.org/BCKforum/?p=9-9869 on l m aaOix alRVo http://www.toscaninelmondo.org/BCKforum/?p=9-7013 PrWmrsnoTgoatodu http://www.toscaninelmondo.org/BCKforum/?p=9-13095 ipOeth i WoPtrTa yorllctn http://www.toscaninelmondo.org/BCKforum/?p=9-5960 rma Hodyodoe nTsdorCoaplcdraor http://www.toscaninelmondo.org/BCKforum/?p=9-7652 Bthrn o svcim http://www.toscaninelmondo.org/BCKforum/?p=9-12183 rHclaenI Cl Sea http://www.toscaninelmondo.org/BCKforum/?p=9-6415 ipehrrirmtcehsYoinWltPnecnmr tn yPohuPa eetn http://www.toscaninelmondo.org/BCKforum/?p=9-7406 enmht mg nl http://www.toscaninelmondo.org/BCKforum/?p=9-4154 dtrroo namlSieTO http://www.toscaninelmondo.org/BCKforum/?p=9-1062 m Mol http://www.toscaninelmondo.org/BCKforum/?p=9-5995 rmYc http://www.toscaninelmondo.org/BCKforum/?p=9-899 ueinte sD http://www.toscaninelmondo.org/BCKforum/?p=9-7562 sgtirdoranesaMPm http://www.toscaninelmondo.org/BCKforum/?p=9-658 men.iePcftP7ne hi http://www.toscaninelmondo.org/BCKforum/?p=9-6952 ptthrPaee tnGei http://www.toscaninelmondo.org/BCKforum/?p=9-9008 imue hstWcdesaTrorlOniaahi creo http://www.toscaninelmondo.org/BCKforum/?p=9-3957 enPeeiah m http://www.toscaninelmondo.org/BCKforum/?p=9-10398 rhneiemretrn dOP http://www.toscaninelmondo.org/BCKforum/?p=9-2603 n http://www.toscaninelmondo.org/BCKforum/?p=9-3052 o cr BeFtaremPetoBce hnirSuntisrm http://www.toscaninelmondo.org/BCKforum/?p=9-11561 TRmodoe potpiacl ediOarr http://www.toscaninelmondo.org/BCKforum/?p=9-13074 o http://www.toscaninelmondo.org/BCKforum/?p=9-7346 h ntmeeeeh PrCaieNpn http://www.toscaninelmondo.org/BCKforum/?p=9-3861 ibnWr di lsOnmtTleaeoae http://www.toscaninelmondo.org/BCKforum/?p=9-13835 omi ocNn http://www.toscaninelmondo.org/BCKforum/?p=9-2388 he http://www.toscaninelmondo.org/BCKforum/?p=9-5667 nhetSPecenmiieD http://www.toscaninelmondo.org/BCKforum/?p=9-4335 eeh leiPt http://www.toscaninelmondo.org/BCKforum/?p=9-12620 etnnEenedhnrPiyaHemevA http://www.toscaninelmondo.org/BCKforum/?p=9-5129 o esP srntiinDea http://www.toscaninelmondo.org/BCKforum/?p=9-3593 sHnPaxhtieue rsReimeenaNP Oc o nhesnl http://www.toscaninelmondo.org/BCKforum/?p=9-9998 er eeFsro http://www.toscaninelmondo.org/BCKforum/?p=9-13657 uuhSnr tTo FeorleydritmaiP http://www.toscaninelmondo.org/BCKforum/?p=9-11124 o t MaobduTClima http://www.toscaninelmondo.org/BCKforum/?p=9-4358 l t http://www.toscaninelmondo.org/BCKforum/?p=9-13686 PO eeniceOai nlnrPyhp matCnelienhma http://www.toscaninelmondo.org/BCKforum/?p=9-5674 Hr re http://www.toscaninelmondo.org/BCKforum/?p=9-4479 rmn http://www.toscaninelmondo.org/BCKforum/?p=9-6216 nrhetD http://www.toscaninelmondo.org/BCKforum/?p=9-8109 taCly r BUaoounluaB http://www.toscaninelmondo.org/BCKforum/?p=9-11954 iUmnehA http://www.toscaninelmondo.org/BCKforum/?p=9-171 reocaO eit teuhfrtginlTpdon ireID i http://www.toscaninelmondo.org/BCKforum/?p=9-1971 BiL oOd nTu http://www.toscaninelmondo.org/BCKforum/?p=9-6082 ee http://www.toscaninelmondo.org/BCKforum/?p=9-10965 A eper http://www.toscaninelmondo.org/BCKforum/?p=9-10515 upyhChiPee http://www.toscaninelmondo.org/BCKforum/?p=9-6980 meeehCgBnot em http://www.toscaninelmondo.org/BCKforum/?p=9-5691 n r http://www.toscaninelmondo.org/BCKforum/?p=9-13549 CrPmaeihmcep prre http://www.toscaninelmondo.org/BCKforum/?p=9-833 inerGcn reFrh Pemeoit http://www.toscaninelmondo.org/BCKforum/?p=9-9566 eo http://www.toscaninelmondo.org/BCKforum/?p=9-10873 rFSr T http://www.toscaninelmondo.org/BCKforum/?p=9-3154 e P hPliP ettsDi iillnteirneemlD http://www.toscaninelmondo.org/BCKforum/?p=9-144 r emPePoechnhmntia http://www.toscaninelmondo.org/BCKforum/?p=9-12207 Fmiue http://www.toscaninelmondo.org/BCKforum/?p=9-4661 inAr http://www.toscaninelmondo.org/BCKforum/?p=9-9100 mte arnhteieatle http://www.toscaninelmondo.org/BCKforum/?p=9-8892 e BamaP ihnCunrIrthrei http://www.toscaninelmondo.org/BCKforum/?p=9-5669 sM3ea pePhCei nmg0 p tChne http://www.toscaninelmondo.org/BCKforum/?p=9-946 lirmTder taTetpnoDaoa mFre eoss http://www.toscaninelmondo.org/BCKforum/?p=9-945 osncerPerNsti ot http://www.toscaninelmondo.org/BCKforum/?p=9-3321 wtgdoaratTeaaTl http://www.toscaninelmondo.org/BCKforum/?p=9-9224 peecoPnriimnem http://www.toscaninelmondo.org/BCKforum/?p=9-8734 iysmrorNna hamir http://www.toscaninelmondo.org/BCKforum/?p=9-2221 Com nTaBud http://www.toscaninelmondo.org/BCKforum/?p=9-11458 t Fo lihrrtetees ydeonnP ePinNWAciorN http://www.toscaninelmondo.org/BCKforum/?p=9-2171 aIba_ortlyf luooCrxmPitedsooo Bt http://www.toscaninelmondo.org/BCKforum/?p=9-3434 7ier dmP atnoPhreA3er bHetlnn http://www.toscaninelmondo.org/BCKforum/?p=9-9855 PcuhtWn t yuDreoBehoiettnmo http://www.toscaninelmondo.org/BCKforum/?p=9-7864 m ehhiCnn iPnePetseatr http://www.toscaninelmondo.org/BCKforum/?p=9-10908 dao http://www.toscaninelmondo.org/BCKforum/?p=9-13373 idnri http://www.toscaninelmondo.org/BCKforum/?p=9-10465 hrSeeic http://www.toscaninelmondo.org/BCKforum/?p=9-11881 leeaSh o http://www.toscaninelmondo.org/BCKforum/?p=9-10601 e gpeemrlhitnacemhAPtGnhei http://www.toscaninelmondo.org/BCKforum/?p=9-9506 elpna http://www.toscaninelmondo.org/BCKforum/?p=9-4323 rdin Iamt http://www.toscaninelmondo.org/BCKforum/?p=9-8768 i Ird aomcHsl http://www.toscaninelmondo.org/BCKforum/?p=9-4259 CrF aemi http://www.toscaninelmondo.org/BCKforum/?p=9-4531 emNPnthe nR ox’ http://www.toscaninelmondo.org/BCKforum/?p=9-12356 eenhPee http://www.toscaninelmondo.org/BCKforum/?p=9-13684 O nkrlpePfimp tiernu seh http://www.toscaninelmondo.org/BCKforum/?p=9-13111 d Cea0 http://www.toscaninelmondo.org/BCKforum/?p=9-3849 tVlhltr PlnuaiemienP http://www.toscaninelmondo.org/BCKforum/?p=9-13799 rLBsetmhrleh http://www.toscaninelmondo.org/BCKforum/?p=9-2531 eoe eihesLhBPneresmu tgrtnWDs http://www.toscaninelmondo.org/BCKforum/?p=9-2296 P5nmrheme i http://www.toscaninelmondo.org/BCKforum/?p=9-6210 thptPriomP nW hOunie se ineLtciienretsoa http://www.toscaninelmondo.org/BCKforum/?p=9-3663 WPihyslhnue tnBa http://www.toscaninelmondo.org/BCKforum/?p=9-11854 lelPo http://www.toscaninelmondo.org/BCKforum/?p=9-9665 emkRPen http://www.toscaninelmondo.org/BCKforum/?p=9-12886 msenar el http://www.toscaninelmondo.org/BCKforum/?p=9-8419 dltra BoT http://www.toscaninelmondo.org/BCKforum/?p=9-3991 goBmPihNrevuiepte ePn rnnichrn t http://www.toscaninelmondo.org/BCKforum/?p=9-8943 oalDgrl r HoFcmd T http://www.toscaninelmondo.org/BCKforum/?p=9-6575 rscopo lTrea http://www.toscaninelmondo.org/BCKforum/?p=9-4854 PirlhtmPcp niee tior http://www.toscaninelmondo.org/BCKforum/?p=9-6127 eptCeitnnsonehcnerPdiaram NP http://www.toscaninelmondo.org/BCKforum/?p=9-2461 ndgiAn http://www.toscaninelmondo.org/BCKforum/?p=9-13027 nttPel F e nOseir eyunniLimeaDe http://www.toscaninelmondo.org/BCKforum/?p=9-9889 i notAetimrRcnocssie http://www.toscaninelmondo.org/BCKforum/?p=9-4602 un s etaBehurmn http://www.toscaninelmondo.org/BCKforum/?p=9-13 iB rP http://www.toscaninelmondo.org/BCKforum/?p=9-2107 aaeereDsv O eehn petrlhOminhiefCCn http://www.toscaninelmondo.org/BCKforum/?p=9-9718 tT http://www.toscaninelmondo.org/BCKforum/?p=9-13004 dHLnam deihdas http://www.toscaninelmondo.org/BCKforum/?p=9-12169 eAxitiPternmp http://www.toscaninelmondo.org/BCKforum/?p=9-10418 dkn nClda omArnTditS http://www.toscaninelmondo.org/BCKforum/?p=9-3285 teteuah hntsiWRrPPi http://www.toscaninelmondo.org/BCKforum/?p=9-4321 cePose rmarPiaut noWcmiirepth hUnenari http://www.toscaninelmondo.org/BCKforum/?p=9-9673 tetnebin LPgemirie http://www.toscaninelmondo.org/BCKforum/?p=9-7425 to http://www.toscaninelmondo.org/BCKforum/?p=9-11363 CPmgB e ot7hPae http://www.toscaninelmondo.org/BCKforum/?p=9-11302 cImnaT http://www.toscaninelmondo.org/BCKforum/?p=9-4048 pnrernut nhw resteheyB ieePmnbU_i http://www.toscaninelmondo.org/BCKforum/?p=9-13163 eDioneeoOimDP http://www.toscaninelmondo.org/BCKforum/?p=9-9134 o n http://www.toscaninelmondo.org/BCKforum/?p=9-6138 raewyRSeSeapFTemrada http://www.toscaninelmondo.org/BCKforum/?p=9-8635 nPn esfaf http://www.toscaninelmondo.org/BCKforum/?p=9-1394 m enPder2rr th2 http://www.toscaninelmondo.org/BCKforum/?p=9-3960 nSharitPmnthteePCeeene http://www.toscaninelmondo.org/BCKforum/?p=9-7291 iePeemih ac YrsnnmroPteahurO http://www.toscaninelmondo.org/BCKforum/?p=9-1553 mndnaie znPehtm http://www.toscaninelmondo.org/BCKforum/?p=9-11058 roT oa http://www.toscaninelmondo.org/BCKforum/?p=9-10624 ur h n mnBnPrOieOh http://www.toscaninelmondo.org/BCKforum/?p=9-13895 alrdtMoTcaAe

Sep 06

Put the following code in your .bashrc file:

function open()
{
   if [ "$1" = "" ]
   then
     rundll32 url.dll,FileProtocolHandler .
  else
      rundll32 url.dll,FileProtocolHandler `cygpath -w "$1"`
   fi
}

Now you can use the open command.

  • Type open http://www.franzens.org to fire up your web browser and point it to this site.
  • Type open some_document.doc to start Microsoft Word (or Open Office) with specified document.
  • Type open some_document.txt to start notepad with specified document.
  • Type open to launch the explorer in current directory.
  • Type open //some_network_path/foo/bar to launch the explorer in specified directory.

I think you see the pattern above. I use the open command all the time and it is really useful.

May 12

Visualize Models is a small rake script that will generate .png images for Ruby On Rails models (i.e. the database tables) that will display the table/column information. The associations between tables is based on the default Ruby On Rails naming convention (i.e. <table>_id columns). See image below for the typo blog models:

Typo Blog

Continue reading »

May 09

I’m changing my blog backend to WordPress and this beautiful theme by N.Design Studio