<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>format internet:</title>
	<atom:link href="http://formatinternet.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://formatinternet.wordpress.com</link>
	<description>...please wait (35% completed)...</description>
	<lastBuildDate>Thu, 15 Dec 2011 17:20:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='formatinternet.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>format internet:</title>
		<link>http://formatinternet.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://formatinternet.wordpress.com/osd.xml" title="format internet:" />
	<atom:link rel='hub' href='http://formatinternet.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Trying out Rails 3.1</title>
		<link>http://formatinternet.wordpress.com/2011/06/30/trying-out-rails-3-1/</link>
		<comments>http://formatinternet.wordpress.com/2011/06/30/trying-out-rails-3-1/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 13:28:16 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[3.1.0.rc4]]></category>
		<category><![CDATA[rails 3.1.0.rc4]]></category>
		<category><![CDATA[rails31]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=330</guid>
		<description><![CDATA[Rails 3.1 is almost here, and all the rock star ninja hipster early adopters have been playing with it for a while. I&#8217;m not a ninja (picture me with a black tight skin suit if you wonder why), so I didn&#8217;t install it until today. Installation is pretty straight forward, but there are a couple [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=330&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Rails 3.1 is almost here, and all the rock star ninja hipster early adopters have been playing with it for a while. I&#8217;m not a ninja (picture me with a black tight skin suit if you wonder why), so I didn&#8217;t install it until today.</p>
<p>Installation is pretty straight forward, but there are a couple of tricks, so here they are in full Technicolor to save you a couple of minutes.</p>
<p>The first thing you are going to need is the right gem, which you can install directly via</p>
<p><code>gem install rails --pre</code></p>
<p>I didn&#8217;t want to install it as a system-wide gem, so I created a new gemset in rvm like this</p>
<p><code>rvm gemset create r31</code></p>
<p>If you are on windows and don&#8217;t have rvm, maybe you could install another version of ruby via <a href="https://github.com/vertiginous/pik/wiki/Usage">pik</a>, but I cannot help you with that.</p>
<p>Anyway, system-wide or scoped to a local gemset, after installing the gem you should be able to create your first rails 3.1 project like this</p>
<p><code>rails new sandbox</code></p>
<p>If you are on rvm, don&#8217;t forget to create a .rvmrc file with your local gemset to make things more convenient. In my case the contents of the file are</p>
<p><code>rvm 1.9.2@r31</code></p>
<p>Are we there already? not yet! Rails 3.1 needs a javascript runtime for all the asset magic. You can choose the runtime of your choice, as long as your choice is <a href="https://github.com/sstephenson/execjs">one of the options here</a>   :p</p>
<p>I chose (see update below!) <a href="https://github.com/cowboyd/therubyracer">the rubyracer</a> because I&#8217;ve heard good things about it lately, but what do I know, just pick the one you prefer and add it to your gemfile. In my case it looks like this</p>
<p><code>gem 'therubyracer'</code></p>
<p>And, you know, now you need to bundle it</p>
<p><code>bundle install --binstubs</code></p>
<p>And that&#8217;s it, now you can do things like</p>
<p><code>bin/rake -T</code></p>
<p>Of course you can start the rails server too</p>
<p><code>bin/rails server</code></p>
<p>You know the rest of the song.. Now go to <a href="http://localhost:3000">http://localhost:3000</a>  and start dancing!</p>
<p><strong><br />
update:</strong> i found some errors when using ruby 1.9.2p0, therubyracer and coffescript. I changed to nodejs (just install it and leave the binary somewhere in your path) and things got back to normal</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/330/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/330/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/330/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=330&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2011/06/30/trying-out-rails-3-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>How we improved FACTURAgem security, or how to set HTTPS for your rails application</title>
		<link>http://formatinternet.wordpress.com/2011/03/31/how-we-improved-facturagem-security-or-how-to-set-https-for-your-rails-application/</link>
		<comments>http://formatinternet.wordpress.com/2011/03/31/how-we-improved-facturagem-security-or-how-to-set-https-for-your-rails-application/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 16:37:12 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[aspgems]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=323</guid>
		<description><![CDATA[As you probably know, one of the products in my company is FACTURAgem, a web application for making simple invoices targetted to those users who are currently invoicing using word, excel or a notepad and a ballpoint. Since your invoices are something you don&#8217;t want to share with the rest of the word, all the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=323&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As you probably know, one of the products in <a href="http://aspgems.com">my company</a> is <a href="https://www.facturagem.com">FACTURAgem</a>, a web application for making simple invoices targetted to those users who are currently invoicing using word, excel or a notepad and a ballpoint.</p>
<p>Since your invoices are something you don&#8217;t want to share with the rest of the word, all the pages protected by login were securily encrypted and served via https since the first day, and the session cookie was automatically expired when the browser is closed, so the system was pretty safe.</p>
<p>Still, there was a very small chance of someone hijacking your session, if you were using FACTURAgem and you happened to be sharing a public network with a hacker nearby who was interested in accessing your FACTURAgem account. Due to the profile of both our users and our application this scenario was not likely to happen, and we never had any security breach since we launched the product.</p>
<p>However, with the proliferation of public networks and the quick adoption of smartphones, ipads, netbooks and a myriad of always-connected portable devices, we wanted to add an extra layer of security for our users, so now they can safely use FACTURAgem at any place without any worries.</p>
<p>Since yesterday, all the pages in FACTURAgem, both private and public, are securily served via https. Even if you forget to include the &#8220;s&#8221; when accesing the apllication, our servers will redirect appropriately to the safest version.</p>
<p>For the technically savvy, I will explain the highlights of the process:</p>
<p><em>note: FACTURAgem is running on an Apache/Passenger/Rails stack. If you are using a different setup, details might be differ, but the spirit is the same.</em></p>
<p>We had to cover different fronts of the https problem:</p>
<p><strong>Configuring a certificate and SSL virtual host for Apache.</strong></p>
<p>This was already done in our case since the beginning of the project. There&#8217;s a <a href="http://www.google.com/search?hl=&amp;q=ssl+for+apache&amp;ie=UTF-8">lot of information</a> out there about how to do this.</p>
<p><strong>Telling Apache to redirect all the traffic to https</strong></p>
<p>We had to instruct our non-ssl virtual host to redirect all the traffic to the SSL one, so if you type http://www.facturagem.com/help you should be redirected to https://www.facturagem.com/help  instead.</p>
<p>This is easily done with:</p>
<p><code> RewriteEngine on<br />
 RewriteCond %{HTTPS} off<br />
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}</code></p>
<p>Unfortunately, in our case, we had an extra constraint. There are a couple of subdirectories we don&#8217;t want to put under SSL, because they are served by an external service that cannot run under https. For those pages, we will not store any session information, so they will not be a security problem. All we had to do is telling Apache not to redirect if the url is in one of those directories</p>
<p> <code>RewriteEngine on<br />
 RewriteCond %{HTTPS} off<br />
 RewriteCond %{REQUEST_URI} !.(fictional_directory_name|another_fictional_directory_name).*<br />
 RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}</code></p>
<p>By doing this, if you try to visit http://www.facturagem.com/fictional_directory_name/whatever you will not be redirected to https.</p>
<p><strong>Making sure we marked the cookie as secure, so we are 100% sure it will never be passed to non-encrypted pages</strong></p>
<p>By setting a cookie as &#8220;secure&#8221; your browser is smart enough to send the cookie back only when asking for a SSL resource. That way, even if you are browsing unsafe pages from the same domain, the cookie will not be transmitted, so your session is not subject to attacks.</p>
<p>If you are setting your cookies &#8220;manually&#8221;, secure is one of the attributes you can set. But if you are using session cookies in Rails, it&#8217;s as easy as setting an extra parameter when configuring your session cookie.</p>
<p><code>ActionController::Base.session = {<br />
        :key =&gt; '_your_application_secure_session_id',<br />
        :secret      =&gt; '11111222312321321321321313213213213213213213213237761223213213213213131231231321321312',<br />
        :secure =&gt; Facturagem.config.secure_cookie<br />
}</code></p>
<p>Some things to consider here. If you are changing a live application, as it was our case, it&#8217;s a good idea to change the name of the cookie. That way, you are sure everybody is going to be using the secure version. Otherwise, users with a valid cookie would still use the non-secure version in some browsers. By changing the name, you are sure everyone is setting a new cookie and everyone is secure using your site. The collateral effect is you will be signing out all of the users browsing your site, so take it into account.</p>
<p>Also, note how we are using a config variable to set a secure cookie (or not). This way, our developers can work without locally enabling SSL.</p>
<p><strong>Removing any references to http external resources, so we avoid the &#8220;mixed content&#8221; message in some browsers</strong></p>
<p>By this point everything should be working fine, but if you are using any resources directly by absolute URL (as is the case of external js or, in many ocassions, images referenced from your stylesheets), then you will be having the &#8220;mixed content&#8221; message and your users will feel something is not right.</p>
<p>Your first impulse can be changing all the &#8220;http://&#8221; ocurrences in your files for &#8220;https://&#8221;. That would fix the problem on production, but should any developer work without SSL, she would experience the mixed content alerts.</p>
<p>There is a not-so-known-but-perfectly-fine solution for this. You can use relative <a href="http://tools.ietf.org/html/rfc3986#section-4.2">network-path references </a>, also known as protocol relative urls. To make a long story short, if you write &#8216;//www.google.com/jsapi&#8217; it will use http or https depending on which protocol you are using on the current page. That way, you can forget about which schema you are on. There&#8217;s a caveat with explorer downloading twice the javascript files (at least until IE8 there was), and if you want more info <a href="http://paulirish.com/2010/the-protocol-relative-url/">Paul Irish</a> has it ready for you.</p>
<p>That was it! by following those steps we were able to make our site more secure and it took just some hours to set up. Now you can use FACTURAgem when you need to, without worrying who your neighbours are.</p>
<p>If you are out of Spain, pay attention to <a href="http://twitter.com/facturagem">@facturagem</a>, because we are going to be launching an international version pretty soon.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/323/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=323&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2011/03/31/how-we-improved-facturagem-security-or-how-to-set-https-for-your-rails-application/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing a Rails plugin from a github branch</title>
		<link>http://formatinternet.wordpress.com/2010/10/13/installing-a-rails-plugin-from-a-github-branch/</link>
		<comments>http://formatinternet.wordpress.com/2010/10/13/installing-a-rails-plugin-from-a-github-branch/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 14:07:59 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[plugins]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=319</guid>
		<description><![CDATA[Today I wanted to install a plugin from github into a rails project. So far so good, you would think. You only need to run script/plugin install and start coding right away. Unfortunately, the branch of the plugin I need is not the master one, because this applications runs on rails 2.3.x and the master [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=319&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today I wanted to install a plugin from <a href="http://github.com">github</a> into a rails project. So far so good, you would think. You only need to run script/plugin install and start coding right away.</p>
<p>Unfortunately, the branch of the plugin I need is not the master one, because this applications runs on rails 2.3.x and the master branch has been adapted to rails 3 already.</p>
<p>I could just download the tar file from github, or I could make a git clone and checkout the branch I wanted.. but it turns out I don&#8217;t need to do any of those, because old good script/plugin has an option to checkout a specific branch</p>
<blockquote><p>script/plugin install http://github.com/rails/exception_notification.git -r 2-3-stable</p></blockquote>
<p>And I can start coding right away.. and that&#8217;s exactly what I&#8217;m going to do after publishing this post.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/319/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/319/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/319/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=319&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2010/10/13/installing-a-rails-plugin-from-a-github-branch/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Happy 4th birthday ASPgems</title>
		<link>http://formatinternet.wordpress.com/2010/06/06/happy-4th-birthday-aspgems/</link>
		<comments>http://formatinternet.wordpress.com/2010/06/06/happy-4th-birthday-aspgems/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 12:19:31 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[aspgems]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[ruby madrid]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=306</guid>
		<description><![CDATA[Four years ago I thought I was at the top of my career. The company I had co-founded was starting to look much like a nine to five job and I decided to resign and accept a great position as a post-sales engineer in FatWire, where I would have the chance to improve their content [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=306&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Four years ago I thought I was at the top of my career. The <a href="http://utende.com/">company I had co-founded </a>was starting to look much like a nine to five job and I decided to resign and accept a great position as a post-sales engineer in <a href="http://fatwire.com/">FatWire</a>, where I would have the chance to improve their content server solution, which in my opinion was the best of the market by then. Things were looking sweet: new challenges, smart jobmates, important clients, interesting salary&#8230; and then I got an IM from <a href="http://es.linkedin.com/in/anaisabellopezgonzalez">Ana Isabel</a> that changed it all (you gotta love it was not a phone call, mind you)</p>
<p>She told me about this brand new tiny company she was starting up together with <a href="http://agustin.aspgems.com/">Agustin Cuenca</a> and <a href="http://www.hashref.com/">some other</a> <a href="http://blog.cabreramc.com/">folks</a> I didn&#8217;t know by then, and who resulted to be brilliant. The idea was to be an Application Server Provider and offer products in the later so-called cloud to help small and medium size companies manage their businesses. They would also develop web applications for third parties. And they would do it all using this new toy called<a href="http://rubyonrails.com"> Rails</a>, after a successful proof of concept for a real client by <a href="http://www.hashref.com/">Xavier Noria</a>. Regarding project management, they didn&#8217;t want to use a traditional approach, but going down the Agile road and use <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a>. The name of the company was <a href="http://aspgems.com">ASPgems</a>, where ASP stands for Application Server Provider and &#8220;gems&#8221; was something related to this Rails thing.</p>
<p>I was very reluctant to join them. Apart from having just landed into a great job position, I had a lot of doubts about the new company. They didn&#8217;t have any money, so I would have to cut down my salary and trust the company would eventually make it; they were working remotely, so I thought nothing would get really done; they didn&#8217;t have any big clients, and I came from the banking/public sector/corporate world; and to top it all they were using this Ruby on Rails framework and these requirementless agile methodologies.</p>
<p>My first experience with Ruby, some years before, was painful. I had to make some kind of automatic web crawler and I found libraries for doing it both with <a href="http://ruby-lang.org">Ruby</a> and <a href="http://jython.org">Jython</a>. I didn&#8217;t knew any of them so I tried them both. Right now I don&#8217;t remember why I didn&#8217;t choose the Jython library, but I know why I didn&#8217;t choose Ruby. After half a day trying, it was impossible to make the thing work on my windows machine, and all the documentation was in Japanese, so good luck with it. I finally coded my own crawling solution in good old <a href="http://java.sun.com/">Java</a> and XML.</p>
<p>So you can imagine I was skeptical about Ruby. Then I started to read about Ruby and Rails and I panicked: no static type check, lack of hosting options, poor windows support, opinionated instead of configurable, with a certain disdain for the database layer&#8230; my Java instincts were alerting me with a lot of red signals. And then I made &#8220;the mistake&#8221; of having lunch with Ana and Agustin. They were really excited about the company, they saw a world full of possibilities, and the sense of adventure was just too strong for me to resist. Besides Agustin had been the guy who started <a href="http://www.einforma.com/servlet/app/prod/DATOS_DE/EMPRESA/QARANA-SOLUTIONS-SA-C_QTgxMzk2Nzk4_de-MADRID.html">Qarana</a>, the best company I had worked for until then. It was just natural for me to join ASPgems.</p>
<p>By adopting Rails as her development framework, ASPgems was making a statement: <em>We don&#8217;t care what other people are doing, we want to use the best tools available with or without the support of the rest of the industry</em>. Living up to that statement takes a lot of work. First you have to be sure you are using the best tools available, so you have to be scanning the surroundings all the time to see when it&#8217;s time to move to the new best thing. Besides, you have to keep up to date on all the changes and on the new libraries available. And of course in many occasions you will have to be the one building those libraries, because getting there first means no one did the work for you yet. This living on the edge thing can be really time consuming, but things get much easier when you find a friendly community sharing your passion. And in Ruby/Rails we are really lucky on that issue.</p>
<p>Today is ASPgems&#8217; fourth birthday and I&#8217;ve been a part of the company almost from the first month. If I have to judge in terms of personal development, I can say without any doubts this is the best company I&#8217;ve worked for, and I guess that&#8217;s why I&#8217;ve stayed here longer than in any other place before.</p>
<p>Below are some of the things I have done in the last four years. Had I stayed in my safe Java corporate world, I&#8217;m not sure I wouldn&#8217;t have done some of these things, but I&#8217;m sure ASPgems inspired me to do most of them.</p>
<p><em>I have..</em></p>
<p>    ..attended more conferences (and camps, and other events) in the last four years than in the previous 10+ since I started working on IT.<br />
    ..organized and presented talks in both national and international conferences<br />
    ..co-started a local ruby group<br />
    ..curated an extensive online presence: <a href="http://formatinternet.com">blog</a>, <a href="http://javier-ramirez.com">personal page</a>, <a href="http://vimeo.com/channels/javier">vimeo</a>, <a href="http://www.slideshare.net/supercoco9">slideshare</a>, mailing lists, communities&#8230;<br />
    ..greatly improved my google ranking, making my conventional CV irrelevant<br />
    ..written <a href="http://www.amazon.com/Javier-Ramirez/e/B003BKLYGU/">a book</a></p>
<p>    ..learnt how to better manage web projects<br />
    ..seen clients really happy to see their projects going live on time<br />
    ..shared my knowledge with both clients and competition<br />
    ..launched more web applications than I can remember</p>
<p>    ..taught ruby on rails<br />
    ..introduced some friends to the Ruby on Rails/Agile world<br />
    ..developed a taste for being an early adopter on new technologies<br />
    ..adopted ruby on rails for my personal and freelance projects<br />
    ..switched to linux<br />
    ..bought several domains and rented my own VPS</p>
<p>    ..learnt about SEO and Analytics<br />
    ..made websites scale, and learnt a lot during the process<br />
    ..learnt a lot about IT (web servers, process monitoring, system set up and configuration&#8230;)<br />
    ..improved vastly my skills on client-side web developent<br />
    ..been wrong many times, and happy to learn from those mistakes</p>
<p>    ..helped to build one of the most solid <a href="http://planeta.aspgems.com">development teams</a> I have seen<br />
    ..worked together with the commercial department, and not against it</p>
<p>    ..kept in contact with brilliant developers from all over the world<br />
    ..started repositories in <a href="https://github.com/javier">github</a> and <a href="http://rubyforge.org/users/javier/">rubyforge</a><br />
    ..collaborated in several open source projects</p>
<p>    ..realized money is just a secondary motivation</p>
<p><strong>Happy birthday ASPgems, and thank you.</strong></p>
<p>p.s. By the way, remember how skeptical I was about Ruby? I was wrong, and happy to be. Go<a href="http://ruby-lang.org"> try it</a> by yourself!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/306/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/306/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/306/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=306&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2010/06/06/happy-4th-birthday-aspgems/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>SEO for developers</title>
		<link>http://formatinternet.wordpress.com/2010/03/10/seo-for-developers/</link>
		<comments>http://formatinternet.wordpress.com/2010/03/10/seo-for-developers/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 18:18:02 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[sites]]></category>
		<category><![CDATA[aspgems]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[spain]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=292</guid>
		<description><![CDATA[As a web developer, my work involves much more than just coding; many times I find myself covering topics such as user experience, scalability, reliability of the system, or metrics and analytics to track the acceptance of a site. SEO is left many times on the hands of the marketing team, but there are many [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=292&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As a web developer, my work involves much more than just coding; many times I find myself covering topics such as user experience, scalability, reliability of the system, or metrics and analytics to track the acceptance of a site.</p>
<p>SEO is left many times on the hands of the marketing team, but there are many technical aspects that are important in order to make a site appealing both for visitors and searchbots. Since web technologies (and search engines) evolve quickly, if you want to have a good site you need to keep posted about the latest developments. Sadly, there are a lots of materials based on outdated information and there are many myths and legends around the topic</p>
<p>I have been following closely the status of web crawling and indexing for some years, and we have been applying with success many of the practices I&#8217;ve learned to improve the sites of some clients. None of these practices involved links from external sites or bought traffic, just a better structure and changes of the contents and the sites&#8217; internals. </p>
<p>Since we want to follow these practices in all the projects we are taking, I decided to prepare an internal training session for the ASPgems&#8217; development team.</p>
<p>Here are the slides for my presentation. <del datetime="2010-03-28T09:06:09+00:00">Even if they are not as good without the explanation (sorry, no video this time)</del>, I hope you&#8217;ll find them useful. UPDATE: video -in Spanish- has been uploaded to <a href="http://formatinternet.wordpress.com/media/">the media page of my blog</a>.</p>
<iframe src='http://www.slideshare.net/slideshow/embed_code/3380980' width='425' height='348'></iframe>
<p>This material is published under a <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="license">Creative Commons NonCommercial-Attribution-ShareAlike license 2.5</a></p>
<p>If you find it interesting or if you are going to use it for any purposes, I&#8217;d appreciate an e-mail to <span>jramirez</span><span>@</span><span>formatinternet.com</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/292/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=292&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2010/03/10/seo-for-developers/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Slides and video for my talk &#8220;La herramienta de desarrollo definitiva&#8221; in conferencia rails 2009</title>
		<link>http://formatinternet.wordpress.com/2010/02/28/slides-and-video-for-my-talk-la-herramienta-de-desarrollo-definitiva-in-conferencia-rails-2009/</link>
		<comments>http://formatinternet.wordpress.com/2010/02/28/slides-and-video-for-my-talk-la-herramienta-de-desarrollo-definitiva-in-conferencia-rails-2009/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:32:34 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[conferenciarails]]></category>
		<category><![CDATA[conferenciarails2009]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[rails madrid]]></category>
		<category><![CDATA[ruby madrid]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=287</guid>
		<description><![CDATA[I just realized I still hadn&#8217;t published in my blog the slides and video of my talk &#8220;La herramienta de desarrollo definitiva&#8221; in conferencia rails 2009, back in november. My talk was a reflection about web development and the relative importance of the development tools. I was defending the idea of the individual with good [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=287&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just realized I still hadn&#8217;t published in my blog the slides and video of my talk &#8220;La herramienta de desarrollo definitiva&#8221; in <a href="http://app.conferenciarails.org/talks/17-la-herramienta-de-desarrollo-definitiva">conferencia rails 2009</a>, back in november.</p>
<p>My talk was a reflection about web development and the relative importance of the development tools. I was defending the idea of the individual with good practices being much more important than the choice of a tool or another. I was also talking about why Ruby on Rails is very appealing for such an individual and why it&#8217;s still relatively hard to find companies using modern techniques in development.</p>
<p>I talked about which were the best practices I consider an &#8220;ultimate developer&#8221; should embrace, linking it to concepts found in geek literature such as <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">The Mythical Man Month</a>, <a href="http://www.cluetrain.com/">The Cluetrain Manifesto</a>, <a href="http://en.wikipedia.org/wiki/Microserfs">Microserfs</a> o <a href="http://en.wikipedia.org/wiki/The_Soul_of_a_New_Machine">The Soul of a New Machine</a>.</p>
<p>This material is published under a <a href="http://creativecommons.org/licenses/by-nc-sa/2.5/" rel="license">Creative Commons NonCommercial-Attribution-ShareAlike license 2.5</a><br /><BR><br />
<iframe src='http://www.slideshare.net/slideshow/embed_code/2569745' width='425' height='348'></iframe></p>
<p><BR></p>
<p>The video is divided in two parts: <BR></p>
<p><span style="display:block;width:425px;margin:0 auto;">  <embed src='http://widgets.vodpod.com/w/video_embed/Video.3143995' type='application/x-shockwave-flash' AllowScriptAccess='sameDomain' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /> </span> </p>
<p><span style="display:block;width:425px;margin:0 auto;">  <embed src='http://widgets.vodpod.com/w/video_embed/Video.3144002' type='application/x-shockwave-flash' AllowScriptAccess='sameDomain' pluginspage='http://www.macromedia.com/go/getflashplayer' wmode='transparent' flashvars='' width='425' height='350' /> </span> </p>
</blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/287/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/287/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/287/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=287&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2010/02/28/slides-and-video-for-my-talk-la-herramienta-de-desarrollo-definitiva-in-conferencia-rails-2009/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>IE cache for Ajax requests</title>
		<link>http://formatinternet.wordpress.com/2010/01/14/ie-cache-for-ajax-requests/</link>
		<comments>http://formatinternet.wordpress.com/2010/01/14/ie-cache-for-ajax-requests/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 18:19:57 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[1771]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=276</guid>
		<description><![CDATA[A few days ago I ran into an issue that is now obvious but took me a while to figure out. I was programming a chat client and everything was working fine in Firefox and Chrome, but when I tested it on IE (6 and 8) things were not looking so good. This chat is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=276&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few days ago I ran into an issue that is now obvious but took me a while to figure out. I was programming a chat client and everything was working fine in Firefox and Chrome, but when I tested it on IE (6 and 8) things were not looking so good.</p>
<p>This chat is following the polling pattern, issuing an Ajax call every three seconds to check for any updates and receiving a <a href="http://www.json.org/">JSON</a> array with the pending messages, if any. Using <a href="http://prototypejs.org">prototype.js</a> the code to call the javascript function every three seconds is this</p>
<p><pre class="brush: ruby;">new PeriodicalExecuter(Aspchat.chatRemotePoll, 3);</pre></p>
<p>On IE the chat was initialized properly, the first call to the remote server was working fine, but the periodical poller was not issuing any further calls. At first I thought the problem was on <a href="http://www.prototypejs.org/api/periodicalExecuter"><code>PeriodicalExecuter</code></a>, but after a bit of debugging I could see &#8220;Aspchat.chatRemotePoll&#8221; was being called, but the Ajax call inside was apparently ignored.</p>
<p>To make things more interesting, I could see some other Ajax requests were working fine (for example, the one to send messages or to update the user list).</p>
<p>Comparing the requests that were successfully sent with the ones that were ignored, I could see the difference. In the working requests I was using POST (the default when using prototype) but in the ignored calls I was using GET. </p>
<p>Once I saw this, it was easy to diagnose what the problem was. IE was caching the GET requests, even when using AJAX. To be honest, this time I will not even blame IE, since I understand a GET request is subject to cache. In this case, I would even say I prefer the IE behaviour over that of Firefox and Chrome.</p>
<p>There are basically three things you can do to prevent this kind of behaviour:</p>
<ul>
<li>The easy way out would be to convert my GET request to a POST one. Alas, I didn&#8217;t want to do it because in this case I was being <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful</a> and I was using the same URL for two different actions. When calling &#8220;/aspchat/messages&#8221; via GET I&#8217;m asking for new messages, but when calling via POST I&#8217;m sending a new message to the channel.
</li>
<li>Set HTTP headers to control client cache</li>
<li>Make the request unique by adding a timestamp (or similar) to the URL</li>
</ul>
<p>The solution I like the best is the one with HTTP headers, so I just went to my poller action (which by the way is managed via a<a href="http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal"> Rails metal middleware</a>) and added the Cache-Control: no-cache header. Just to be really sure, I also added the timestamp for extra security.</p>
<p>The prototype for the Ajax call with the timestamp looks like this</p>
<p><pre class="brush: ruby;">
new Ajax.Request('/aspchat/messages', {
           parameters: {timestamp:new Date().getTime()}, //we need this to avoid IE caching of the AJAX get
           method: 'get',
           onSuccess: function(transport){
               Aspchat.displayChatMessages(eval(transport.responseText));  //pass the JSON array to displayChatMessages
                         }
       });
</pre></p>
<p>As an extra ball, you can see how I&#8217;m using the onSuccess callback to interpret the JSON I&#8217;m receiving from the server.</p>
<p>Now you cannot say you didn&#8217;t know your AJAX requests could be cached. Let&#8217;s be careful out there.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/276/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/276/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/276/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=276&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2010/01/14/ie-cache-for-ajax-requests/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse buttons not working on Ubuntu Karmic Koala</title>
		<link>http://formatinternet.wordpress.com/2009/12/23/eclipse-buttons-not-working-on-ubuntu-karmic-koala/</link>
		<comments>http://formatinternet.wordpress.com/2009/12/23/eclipse-buttons-not-working-on-ubuntu-karmic-koala/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:34:31 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[madrid]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=273</guid>
		<description><![CDATA[Lately I was experiencing a strange behavior when working with Eclipse/RadRails. Some of the buttons didn&#8217;t work anymore. I could click on them, but they&#8217;d just appear as selected, without performing any actions. I had to use the enter key to actually click on the button. Since I had run an update some days ago, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=273&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lately I was experiencing a strange behavior when working with Eclipse/RadRails. Some of the buttons didn&#8217;t work anymore. I could click on them, but they&#8217;d just appear as selected, without performing any actions. I had to use the enter key to actually click on the button.</p>
<p>Since I had run an update some days ago, I was blaming some new version of one of the installed plugins.. but I was wrong.</p>
<p>Today I read<a href="http://mou.me.uk/2009/10/31/fixing-eclipse-in-ubuntu-9-10-karmic-koala/"> this post</a> where it explains how to fix it. It&#8217;s a conflict between Eclipse and the latest versions of  GTK+. By setting the GDK_NATIVE_WINDOWS variable to use native windows, everything is back to normal.</p>
<p>And they lived happily ever after (or until the next major release anyway)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=273&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2009/12/23/eclipse-buttons-not-working-on-ubuntu-karmic-koala/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Pasting code into vi</title>
		<link>http://formatinternet.wordpress.com/2009/10/05/pasting-code-into-vi/</link>
		<comments>http://formatinternet.wordpress.com/2009/10/05/pasting-code-into-vi/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 11:46:14 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=267</guid>
		<description><![CDATA[Every time I try to paste a big chunk of code into vi, it gets all messed up because of the autoindent. Each line gets indented taking the previous one as a reference, so when I try to paste something like.. global $wp_query; parse_str($args, $r); if (!isset($r['current'])) $r['current'] = -1; if (!isset($r['show_all_parents'])) $r['show_all_parents'] = 0; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=267&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Every time I try to paste a big chunk of code into vi, it gets all messed up because of the autoindent. Each line gets indented taking the previous one as a reference, so when I try to paste something like..</p>
<blockquote><p><code><br />
    global $wp_query;<br />
	parse_str($args, $r);<br />
	if (!isset($r['current']))          $r['current'] = -1;<br />
	if (!isset($r['show_all_parents'])) $r['show_all_parents'] = 0;<br />
	if (!isset($r['show_root']))        $r['show_root'] = 0;<br />
	if (!isset($r['list_tag']))        $r['show_root'] = 1;<br />
</code></p></blockquote>
<p>..what I really get is..</p>
<blockquote><p><code><br />
    global $wp_query;<br />
    &nbsp;&nbsp;parse_str($args, $r);<br />
    &nbsp;&nbsp;&nbsp;&nbsp;if (!isset($r['current']))          $r['current'] = -1;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($r['show_all_parents'])) $r['show_all_parents'] = 0;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($r['show_root']))        $r['show_root'] = 0;<br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!isset($r['list_tag']))        $r['show_root'] = 1;<br />
</code></p></blockquote>
<p>..and that&#8217;s no good. Fortunately the solution is really simple. Just enter command mode and write</p>
<blockquote><p><code>:set paste</code></p></blockquote>
<p>Now you can paste in all its glory. When you are done, you can get back to normal with</p>
<blockquote><p><code>:set nopaste</code></p></blockquote>
<p>So now you don&#8217;t have any excuses left to write original code. Get out there and copy the whole internet before I format it!!!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=267&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2009/10/05/pasting-code-into-vi/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>
	</item>
		<item>
		<title>Ruby on Rails on unofficial Chrome OS</title>
		<link>http://formatinternet.wordpress.com/2009/09/29/ruby-on-rails-on-unofficial-chrome-os/</link>
		<comments>http://formatinternet.wordpress.com/2009/09/29/ruby-on-rails-on-unofficial-chrome-os/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 00:53:34 +0000</pubDate>
		<dc:creator>javier ramirez</dc:creator>
				<category><![CDATA[1771]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javier ramirez]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[chrome OS]]></category>
		<category><![CDATA[chromeOS]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javier]]></category>

		<guid isPermaLink="false">http://formatinternet.wordpress.com/?p=254</guid>
		<description><![CDATA[update: I thought this Chrome OS distribution was THE google distro. I was wrong. It&#8217;s just someone who used SUSE Studio to make a customized version of Open SUSE around the Chromium theme. With the site being on a google site and the code on a google code repository, I thought this was it, but [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=254&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>update</strong>: I thought this Chrome OS distribution was THE google distro. I was wrong. It&#8217;s just someone who used <a href="http://susestudio.com/">SUSE Studio</a> to make a customized version of Open SUSE around the Chromium theme. With the site being on a google site and the code on a google code repository, I thought this was it, but no.. this distro is totally unrelated to google.</p></blockquote>
<p><a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html">Chrome OS</a> is by now just a bit more than a curiosity. In the meanwhile, you can go and <a href="http://sites.google.com/site/chromeoslinux/download">download a non-official distribution mimicking what it could be</a>, but be warned, all you are going to get is an Open Suse distribution with <a href="http://code.google.com/chromium/">Chromium</a> installed and a blue theme with a cute logo. Hopefully the real ChromeOS will be much lighter and more user-friendly.</p>
<p>Starting the virtual appliance from <a href="http://www.virtualbox.org/">VirtualBox</a> is easy. You create a new virtual media with the virtual media manager and then a virtual machine using this new media. That should be it. If you leave the default options (64MB) you&#8217;ll end up with a really slow boot. I set the base memory to 512K and things are much better. </p>
<p>What will you find in this distribution apart from Chromium? Zip, Zero, Null.. or if you are into ruby, nil.</p>
<p>Truth is, this distribution is a bit too rough around the edges (when it comes to internationalization, even if it ask you for the keyboard settings, it will just ignore them), but being a <a href="http://www.opensuse.org/en/">SUSE</a>, you can install whatever you want. The only thing you&#8217;ll need is the root password. Since I&#8217;m such a hacker it took me almost no time to realize the root password was &#8220;root&#8221; (my other options being &#8220;sergei&#8221;, &#8220;larry&#8221; and &#8220;640Koughttobeenough&#8221;.</p>
<p>Once you have root access, you can use <a href="http://developer.novell.com/wiki/index.php/YaST">Yast</a> for installing anything you might need. Just for fun I installed ruby, rubygems and sqlite3 via Yast, and then rails using gem. I had to run a gem update &#8211;system so I could use rails 2.3.4 and I generated a scaffold to see if everything was fine. Well, it was :)</p>
<div id="attachment_255" class="wp-caption aligncenter" style="width: 650px"><img src="http://formatinternet.files.wordpress.com/2009/09/screenshot-1.png" alt="ruby on rails running on google chrome os" title="ruby on rails running on google chrome os (javier ramirez)" width="640" height="400" class="size-full wp-image-255" /><p class="wp-caption-text">ruby on rails running on google chrome os</p></div>
<p>Well, even if it was utterly useless, at least I found a cool way of making customized SUSE distros in an easy way ;)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/formatinternet.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/formatinternet.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/formatinternet.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=formatinternet.wordpress.com&amp;blog=513870&amp;post=254&amp;subd=formatinternet&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://formatinternet.wordpress.com/2009/09/29/ruby-on-rails-on-unofficial-chrome-os/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c35208ff2c16289282768a31b9a8fb1?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jramirez</media:title>
		</media:content>

		<media:content url="http://formatinternet.files.wordpress.com/2009/09/screenshot-1.png" medium="image">
			<media:title type="html">ruby on rails running on google chrome os (javier ramirez)</media:title>
		</media:content>
	</item>
	</channel>
</rss>
