<?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/"
	>

<channel>
	<title>Simone Carletti&#039;s Blog &#187; Softwares</title>
	<atom:link href="http://www.simonecarletti.com/blog/categories/softwares/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonecarletti.com/blog</link>
	<description>Simone Carletti&#039;s personal ramblings on programming, syndication, search engines &#38; marketing.</description>
	<lastBuildDate>Tue, 07 Feb 2012 08:48:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Search SimoneCarletti.com from Google Chrome address bar</title>
		<link>http://www.simonecarletti.com/blog/2010/01/search-simonecarletti-com-from-google-chrome/</link>
		<comments>http://www.simonecarletti.com/blog/2010/01/search-simonecarletti-com-from-google-chrome/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 23:55:53 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[builder]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[opensearch]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=961</guid>
		<description><![CDATA[How to enable OpenSearch provider for your website.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just published a small update to this site to enable <a href="http://www.opensearch.org/">OpenSearch</a> protocol. Thanks to OpenSearch, you can search this blog from any OpenSearch-aware client, including for instance <strong>Mozilla Firefox</strong> and <strong>Google Chrome</strong>.</p>
<p><strong>I really like the way how Google Chrome deals with OpenSearch</strong>. When you browse and OpenSearch-aware site, Google Chrome fetches the <abbr title="OpenSearch description document">OSDD</abbr> file and make it immediately available as a shortcut in the address bar. For example, if you open a couple of pages in this site then you type <code>simone</code> you should see the following behavior.</p>
<div id="attachment_962" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-962" title="Google Chrome and OpenSearch providers" src="http://www.simonecarletti.com/blog/wp-content/uploads/2010/01/autocomplete-500x151.png" alt="Google Chrome suggests an available OpenSearch provider" width="500" height="151" /><p class="wp-caption-text">Google Chrome suggests an available OpenSearch provider</p></div>
<p><span id="more-961"></span>If you hit tab, the autocomplete list disappears and you enter the &#8220;OpenSearch mode&#8221;. You can now enter the search query and confirm to view the search results.</p>
<div id="attachment_963" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-963" title="Google Chrome and OpenSearch" src="http://www.simonecarletti.com/blog/wp-content/uploads/2010/01/searchfor-500x135.png" alt="Google Chrome integrates OpenSearch provider in the address bar" width="500" height="135" /><p class="wp-caption-text">Google Chrome integrates OpenSearch provider in the address bar</p></div>
<p>Creating an OpenSearch OSDD is as simple as writing less than 10 lines of XML code. <a href="http://www.simonecarletti.com/opensearch.xml">Here&#8217;s mine</a>. For more information visit the <a href="http://www.opensearch.org/Home">OpenSearch website</a>.</p>
<p>PS. If you are a Ruby developer, here&#8217;s my <a href="http://builder.rubyforge.org/">Builder</a> template. Replace <code>TITLE</code>, <code>DESCRIPTION</code> and <code>PATH_TO_SEARCH</code> with your own variables.</p>
<div class="codecolorer-container text default code-ruby" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">xml.instruct!<br />
xml.OpenSearchDescription &quot;xmlns&quot; =&gt; &quot;http://a9.com/-/spec/opensearch/1.1/&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;xmlns:moz&quot; =&gt; &quot;http://www.mozilla.org/2006/browser/search/&quot; do<br />
&nbsp; xml.ShortName &quot;TITLE&quot;<br />
&nbsp; xml.Description &quot;DESCRIPTION&quot;<br />
&nbsp; xml.InputEncoding &quot;UTF-8&quot;<br />
&nbsp; xml.Url :type =&gt; &quot;text/html&quot;, :method =&gt; &quot;get&quot;, :template =&gt; &quot;PATH_TO_SEARCH?q={searchTerms}&quot;<br />
<br />
&nbsp; xml.moz :SearchForm, &quot;PATH_TO_SEARCH&quot;<br />
<br />
end</div></td></tr></tbody></table></div>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/' rel='bookmark' title='How to run Google Chrome OS on Mac OS X with VMWare Fusion'>How to run Google Chrome OS on Mac OS X with VMWare Fusion</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/' rel='bookmark' title='Google Chrome OS User Agent'>Google Chrome OS User Agent</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/google-site-performance-tool-gzip/' rel='bookmark' title='Google Site performance tool says Google is not serving Gzipped resources'>Google Site performance tool says Google is not serving Gzipped resources</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2010/01/search-simonecarletti-com-from-google-chrome/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redmine 0.9.0 and duplicate content issue</title>
		<link>http://www.simonecarletti.com/blog/2009/12/redmine-0-9-0-and-duplicate-content-issue/</link>
		<comments>http://www.simonecarletti.com/blog/2009/12/redmine-0-9-0-and-duplicate-content-issue/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:11:31 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Server / Apache]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[redirects]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=886</guid>
		<description><![CDATA[Redmine 0.9.0 duplicates the most part of application URLs: here's an Apache configuration file to redirect the old URLs to the new ones.]]></description>
			<content:encoded><![CDATA[<p>A couple of hours ago I upgraded the <a href="http://code.simonecarletti.com/">code domain</a> from Redmine 0.8.0 to Redmine 0.9.0, currently available in pre-beta.</p>
<p>Redmine 0.9.0 offers tons of improvements but one among all forced my decision to upgrade without waiting for a final release: <strong>Rails 2.3.5</strong>. Redmine 0.8.x is built on Rails 2.1.0 and there seems to be some kind of weird Rails-Redmine-Passenger-Ruby EE memory leaks.</p>
<p>With the new release, Redmine <a title="Redmine - Patch #1901: RESTful URLs for everything - Redmine" href="http://www.redmine.org/issues/1901">has changed</a> the most part of its URLs. The development team basically migrated all routes to a more RESTful-oriented architecture. They did a wonderful job, unfortunately they probably chose the worst way to ensure backward-compatibility: <strong>duplication</strong>.</p>
<p>All the old routes are still available along with the new ones and this can cause several duplicate content issues. To patch the problem, I configured some Apache redirection rules in order to permanently redirect the old URLs to the new ones.<span id="more-886"></span></p>
<p><script src="http://gist.github.com/265300.js?file=redmine-080-to-090.conf"></script></p>
<p>The gist doesn&#8217;t pretend to solve all issues. It&#8217;s just a quick and (quite) dirty fix.</p>
<p>From Redmine side, I would have setup a <a title="Riding Rails: Introducing Rails Metal" href="http://weblog.rubyonrails.org/2008/12/17/introducing-rails-metal">Rails Metal</a> to redirect all the old URLs to the new ones. This is not as efficient as relying on the web server, but this is compatible with any user environment.</p>
<p>Feel free to fork, clone and update the gist. After all, <strong>this is a Git repository</strong>!</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/07/configuring-git-repository-with-redmine/' rel='bookmark' title='Configuring a Git repository with Redmine'>Configuring a Git repository with Redmine</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/01/apache-query-string-redirects/' rel='bookmark' title='Apache .htaccess query string redirects'>Apache .htaccess query string redirects</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/generic-apache-configuration-snippets/' rel='bookmark' title='Generic Apache configuration snippets'>Generic Apache configuration snippets</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/12/redmine-0-9-0-and-duplicate-content-issue/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Relative time&#8230; when the time does matter</title>
		<link>http://www.simonecarletti.com/blog/2009/12/robodomain-relative-time/</link>
		<comments>http://www.simonecarletti.com/blog/2009/12/robodomain-relative-time/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 22:06:44 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[robodomain]]></category>
		<category><![CDATA[timeago]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=867</guid>
		<description><![CDATA[The next RoboDomain EAP will include a small improvement on how dates are formatted.]]></description>
			<content:encoded><![CDATA[<p>When talking about deadlines, relative time it&#8217;s usually more effective than a raw timestamp. A banner with the message &#8220;the offer ends in 2 days&#8221; it&#8217;s likely to capture more attention rather than &#8220;the offer ends December 30th&#8221;.</p>
<p>Likewise, people tends to pay more attention when an expiration is expressed in words. For this reason, the next RoboDomain EAP will include a small improvement on how dates are formatted. When applicable, RoboDomain will use a relative time — <code>in 2 hours</code>, <code>in 3 days</code>, <code>in 1 month</code> — instead of the raw timestamp value.</p>
<div id="attachment_870" class="wp-caption aligncenter" style="width: 510px"><img class="size-medium wp-image-870" title="RoboDomain with Relative date" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/robodomain-timeago-500x228.png" alt="" width="500" height="228" /><p class="wp-caption-text">RoboDomain with Relative date</p></div>
<p><span id="more-867"></span>Under the hood, we used the <a title="timeago: a jQuery plugin" href="http://timeago.yarp.com/">awesome timeago jQuery plugin</a> with a couple of customizations.</p>
<p>This feature, along with the <a href="http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/">usability improvements</a> and many other changes, will be available with the next EAP release.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/' rel='bookmark' title='RoboDomain usability improvements'>RoboDomain usability improvements</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/please-welcome-robodomain/' rel='bookmark' title='Welcome RoboDomain'>Welcome RoboDomain</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/12/robodomain-relative-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RoboDomain usability improvements</title>
		<link>http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/</link>
		<comments>http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 23:03:29 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[robodomain]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=864</guid>
		<description><![CDATA[In these two weeks we concentrated most of our effort to improve RoboDomain usability. ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.simonecarletti.com/blog/2009/12/please-welcome-robodomain/">Two weeks ago</a> we started rolling out the first invitation codes for <a href="http://www.robodomain.com/">RoboDomain</a>. Since then, we <a title="Customer Feedback &amp; Ideas for RoboDomain" href="http://robodomain.uservoice.com/">received many interesting feedback</a> and we&#8217;re already working to add them in our existing roadmap.</p>
<p>In these two weeks we concentrated most of our effort to <strong>improve the application usability</strong>. In our mind, RoboDomain is a super powerful and helpful toy, but this is mainly because we already have a global overview of the project.</p>
<p>Looking at our server logs, we noticed some of our existing users are not taking advantage of RoboDomain features mainly because they don&#8217;t fully understand their capabilities. For this reason, in these weeks we worked hard to add some friendly messages all over the application.<span id="more-864"></span></p>
<p>First, we fixed the welcome page that was definitely the most unfriendly landing page I have ever seen in my life. We added a brief introduction to RoboDomain and some quick-links for getting started with your brand new account.</p>
<p><img class="aligncenter size-medium wp-image-872" title="Getting Started with RoboDomain" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/getting-started-500x374.png" alt="Getting Started with RoboDomain" width="500" height="374" /></p>
<p>We also wanted to remember our users they are using an Early Access Preview of the product and some features might be incomplete or not available. Of course, EAP stage is not a synonymous for bugs or low-quality.</p>
<p><img class="aligncenter size-full wp-image-873" title="EAP Notice" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/eap-notice.png" alt="Early Access Preview notice message" width="295" height="346" /></p>
<p>User feedback are really important for us and we decided to make the process of submitting new ideas even more easy. From any page, you can now access <a href="https://robodomain.uservoice.com/">RoboDomain Uservoice forum</a> clicking on the feedback tab on the left side of the page and immediately post a new idea or submit a bug report.</p>
<p><img class="aligncenter size-medium wp-image-874" title="UserVoice Dialog" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/uservoice-dialog-500x374.png" alt="RoboDomain Feedback &amp; Ideas" width="500" height="374" /></p>
<p>These changes are scheduled for the next EAP which should be available in a couple of days.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/12/please-welcome-robodomain/' rel='bookmark' title='Welcome RoboDomain'>Welcome RoboDomain</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/robodomain-transactions-feature/' rel='bookmark' title='Understanding RoboDomain &#8220;Transactions&#8221; feature'>Understanding RoboDomain &#8220;Transactions&#8221; feature</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/robodomain-relative-time/' rel='bookmark' title='Relative time&#8230; when the time does matter'>Relative time&#8230; when the time does matter</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Understanding RoboDomain &#8220;Transactions&#8221; feature</title>
		<link>http://www.simonecarletti.com/blog/2009/12/robodomain-transactions-feature/</link>
		<comments>http://www.simonecarletti.com/blog/2009/12/robodomain-transactions-feature/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 19:53:38 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Hosting / Domains]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[domains]]></category>
		<category><![CDATA[robodomain]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=827</guid>
		<description><![CDATA[Transactions represent the history of your domain including purchases, upgrades, hosting transfers and any other operation on your domain.]]></description>
			<content:encoded><![CDATA[<p>One of the most useful features in <a href="http://www.simonecarletti.com/blog/2009/12/please-welcome-robodomain/">RoboDomain</a> is what we called <strong>Transactions</strong>. Let me show you why.</p>
<p>Transactions represent the history of your domain including purchases, upgrades, hosting transfers and any other <strong>operation</strong> on your domain. One of the main RoboDomain goals is to collect and organize all the information about a domain in a single place to let you easily search and query them.</p>
<p>A <strong>transaction</strong> is composed by 4 different resources, each own with its own properties.</p>
<ol>
<li>The <strong>operation</strong> type. The first domain is likely to be a <code>purchase</code> operation, followed by recurring <strong>renewal</strong> operations</li>
<li>The <strong>hosting</strong> associated to the operation (expect this feature to change in the upcoming release)</li>
<li>The <strong>order</strong></li>
<li>The <strong>payment</strong> associated to the order</li>
</ol>
<p>Let&#8217;s see a real example.<span id="more-827"></span></p>
<p>You own <code>example.com</code> domain and you just added the record into your awesome RoboDomain account. It should looks like this.</p>
<p><img class="aligncenter size-medium wp-image-828" title="Domain Overview" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/domain-overview-500x375.png" alt="Domain Overview" width="500" height="375" /></p>
<p>In the tabbed navigation menu there&#8217;s a link called Transaction. Because haven&#8217;t recorded any transaction yet, the page should look like the following one.</p>
<p><img class="aligncenter size-medium wp-image-829" title="Domain Transactions without Transactions" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/domain-transactions-empty-500x217.png" alt="Domain Transactions without Transactions" width="500" height="217" /></p>
<p>Let&#8217;s start recording the domain purchase. Click on the &#8220;Record new transaction&#8221; button and the transaction wizard will guide you through the application process.</p>
<p>Select the <code>registration</code> type, the date you started the operation and the date the operation finished, if different. Then, fill in the details about the hosting provider.</p>
<p><img class="aligncenter size-medium wp-image-830" title="New Domain Transaction" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/domain-new-transaction-500x375.png" alt="New Domain Transaction" width="500" height="375" /></p>
<p>The wizard is composed by 4 steps. You can quit at any step and come back later to fill the missing information. As soon as you finish the first step, a new transaction page will be available.</p>
<p>The design is quite raw at the moment since we&#8217;re still in the process of improving the wizard workflow, but it provides a clean overview of all your transaction details.</p>
<p>Transactions are displayed in reverse chronological order in the domain transactions section.</p>
<p><img class="aligncenter size-medium wp-image-831" title="Domain Transaction" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/domain-transaction-500x375.png" alt="Domain Transaction" width="500" height="375" /></p>
<p>The latest domain transactions are also displayed in the domain page. An overview of the latest transactions for all domains is displayed in your account dashboard.</p>
<p><img class="aligncenter size-medium wp-image-832" title="Dashboard" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/12/dashboard1-500x247.png" alt="Dashboard" width="500" height="247" /></p>
<p>Transactions are useful for the domains you actually own, so were&#8217;s working on a way to disable this feature when not requires.</p>
<p>Also, there are tons of improvements already scheduled in our TODO list to reduce the amount of time required to fill the transaction details and provide some additional capabilities. Just to mention a few: notifications, cross-domain references and integration with public registry data.</p>
<p>As usual, don&#8217;t forget to <strong>tell us what do you think about this feature</strong>. You can submit bugs or suggest new features using the <a title="Customer Feedback &amp; Ideas for RoboDomain" href="http://robodomain.uservoice.com/">RoboDomain uservoice forum</a>.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/12/please-welcome-robodomain/' rel='bookmark' title='Welcome RoboDomain'>Welcome RoboDomain</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/12/robodomain-usability-improvements/' rel='bookmark' title='RoboDomain usability improvements'>RoboDomain usability improvements</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/09/inside-ruby-on-rails-benchmarking-your-scripts/' rel='bookmark' title='Understanding Ruby and Rails: Benchmarking your Ruby scripts'>Understanding Ruby and Rails: Benchmarking your Ruby scripts</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/12/robodomain-transactions-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome OS User Agent</title>
		<link>http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/</link>
		<comments>http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 17:35:04 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Analytics]]></category>
		<category><![CDATA[Server / Apache]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[google chrome os]]></category>
		<category><![CDATA[user agent]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vmware fusion]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=733</guid>
		<description><![CDATA[Wondering how to detect Google Chrome OS in your server logs? Here's how the Google Chrome OS user agent.]]></description>
			<content:encoded><![CDATA[<p>Wondering how to detect Google Chrome OS in your server logs? Here&#8217;s how the <strong>Google Chrome OS user agent</strong>.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">79.8.208.125 - - [20/Nov/2009:23:21:31 +0000] &quot;GET / HTTP/1.1&quot; 200 2900 &quot;-&quot; &quot;Mozilla/5.0 (X11; U; CrOS i686 9.10.0; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.253.0 Safari/532.5&quot;</div></td></tr></tbody></table></div>
<p>I logged the user agent browsing my website with a <a href="http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/">Google Chrome developer preview</a>. And here&#8217;s the <strong>Google Chrome Browser</strong> user agent on my Mac OS X.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">79.8.208.125 - - [20/Nov/2009:23:24:45 +0000] &quot;GET / HTTP/1.1&quot; 200 2900 &quot;-&quot; &quot;Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.0 Safari/532.5&quot;</div></td></tr></tbody></table></div>
<p>As you can see, the browser token is the same because both Google Chrome OS and my Mac are running the same browser version. Google Chrome OS identifies itself with the <code>CrOS i686 9.10.0</code> token, as you can see in the first user agent.</p>
<p>I&#8217;m wondering how long it takes before analytics software will start tracking Google OS users.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/02/safari-4-user-agent/' rel='bookmark' title='Safari 4 User Agent'>Safari 4 User Agent</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/' rel='bookmark' title='How to run Google Chrome OS on Mac OS X with VMWare Fusion'>How to run Google Chrome OS on Mac OS X with VMWare Fusion</a></li>
<li><a href='http://www.simonecarletti.com/blog/2010/01/search-simonecarletti-com-from-google-chrome/' rel='bookmark' title='Search SimoneCarletti.com from Google Chrome address bar'>Search SimoneCarletti.com from Google Chrome address bar</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to run Google Chrome OS on Mac OS X with VMWare Fusion</title>
		<link>http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/</link>
		<comments>http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 22:44:17 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Softwares]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google chrome]]></category>
		<category><![CDATA[google chrome os]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vmware fusion]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=719</guid>
		<description><![CDATA[How to run Google Chrome OS as a virtual machine on MacOSX using VMWare Fusion.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-726" title="Google Chrome OS Logo" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/11/google-chrome-os-logo-150x150.jpg" alt="Google Chrome OS Logo" width="150" height="150" />As soon I finished watching the <a title="YouTube - Google Chrome OS Open Source Project Announcement" href="http://www.youtube.com/watch?v=5JyFbF7QFlY">Google Chrome OS announcement video</a> the first question that came to my mind was: Will it work on my Mac? Is it possible to run a Google Chrome OS preview using a virtualization software such as VMWare Fusion or Parallels Desktop?</p>
<p>The answer is yes. <strong>Google Chrome OS actually works inside a virtual machine</strong>.<span id="more-719"></span></p>
<p>If you are running VMWare or Virtual box, setting up a Google Chrome OS instance is really straightforward. Thanks to the guys at gdgt, you can download a <a href="http://gdgt.com/google/chrome-os/download/">Google Chrome OS image</a> ready to be used with VMWare or VirtualBox. Also, Paul Miller from Engadget published an <a href="http://www.engadget.com/2009/11/20/how-to-run-chrome-os-as-a-virtual-machine/">awesome screencast</a> with a step-by-step tutorial to run Chrome OS as a virtual machine.</p>
<p>Here&#8217;s a screenshot of my Google Chrome OS virtual machine.</p>
<div id="attachment_721" class="wp-caption aligncenter" style="width: 410px"><a href="http://www.simonecarletti.com/blog/wp-content/uploads/2009/11/google-chrome-os.png"><img class="size-medium wp-image-721" title="Google Chrome OS as a virtual machine" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/11/google-chrome-os-400x338.png" alt="Google Chrome OS on Mac OSX using VMWare Fusion" width="400" height="338" /></a><p class="wp-caption-text">Google Chrome OS on Mac OS X using VMWare Fusion</p></div>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/' rel='bookmark' title='Google Chrome OS User Agent'>Google Chrome OS User Agent</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/01/vmware-fusion-the-network-bridge-device-on-devvmnet0-is-not-running/' rel='bookmark' title='VMware Fusion &#8220;The network bridge device on /dev/vmnet0 is not running&#8221; error'>VMware Fusion &#8220;The network bridge device on /dev/vmnet0 is not running&#8221; error</a></li>
<li><a href='http://www.simonecarletti.com/blog/2010/01/search-simonecarletti-com-from-google-chrome/' rel='bookmark' title='Search SimoneCarletti.com from Google Chrome address bar'>Search SimoneCarletti.com from Google Chrome address bar</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get JIRA and Confluence for $5 each! Limited offer</title>
		<link>http://www.simonecarletti.com/blog/2009/04/get-jira-and-confluence-for-5-each-limited-offer/</link>
		<comments>http://www.simonecarletti.com/blog/2009/04/get-jira-and-confluence-for-5-each-limited-offer/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:49:02 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[jira]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=292</guid>
		<description><![CDATA[Atlassian is giving away a full featured license of JIRA and Confluence at the incredible price of $5 each.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-293" title="big-five" src="http://www.simonecarletti.com/blog/wp-content/uploads/2009/04/big-five.png" alt="big-five" width="257" height="159" />I&#8217;ve just discovered that Atlassian <a href="http://www.atlassian.com/starter/">is giving away</a> a full featured license of JIRA and Confluence at the incredible price of $5 each. It is a fully-functional license, the only limitation is the 5 users limit.</p>
<p>If you are interested in you don&#8217;t have too much time to take a decision. It&#8217;s a time-limited offer and it expires tomorrow.</p>
<p>I have been using JIRA and Confluence in a couple of project. As an open source project, the <a href="http://framework.zend.com/">Zend Framework</a> benefits of a free license of the full suite. It&#8217;s a shame this offer doesn&#8217;t include <a href="http://www.atlassian.com/software/crucible/">Crucible</a>, I&#8217;m really looking forward to try it.</p>
<p>Altought I&#8217;m a really <a href="http://code.simonecarletti.com/">happy Redmine user</a>, I don&#8217;t rule out the possibility of purchasing a license. It could be useful, soon or later&#8230;</p>
<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/04/get-jira-and-confluence-for-5-each-limited-offer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VMware Fusion &#8220;The network bridge device on /dev/vmnet0 is not running&#8221; error</title>
		<link>http://www.simonecarletti.com/blog/2009/01/vmware-fusion-the-network-bridge-device-on-devvmnet0-is-not-running/</link>
		<comments>http://www.simonecarletti.com/blog/2009/01/vmware-fusion-the-network-bridge-device-on-devvmnet0-is-not-running/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 13:43:31 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[vmware fusion]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=104</guid>
		<description><![CDATA[How to fix the The network bridge device on /dev/vmnet0 is not running error in VMware fusion 2.0 or greater.]]></description>
			<content:encoded><![CDATA[<p>Yesterday one of my VMware virtual machines decided it wasn&#8217;t a good day to connect to internet and refused to use the macosx network bridge. When trying to enable the network bridge, I received the following error message:</p>
<div class="codecolorer-container text default code-bash" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">The network bridge device on /dev/vmnet0 is not running</div></td></tr></tbody></table></div>
<p>A quick online search revealed me multiple solutions but the most of them were targeting <strong>VMware 1.0</strong>. The error above in <strong>WMvare 2.0</strong> or greater can be easily fixed typing the following command in the <strong>Terminal</strong> (<a href="http://mijn.wordpress.com/2008/01/27/vmware-fusion-the-network-bridge-device-on-devvmnet0-is-not-running/#comment-1429">thanks Aaron</a>).</p>
<div class="codecolorer-container text default code-bash" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">sudo /Library/Application Support/VMware Fusion/boot.sh --restart</div></td></tr></tbody></table></div>
<p>After a few seconds your virtual machine should automatically reconnect throught your macosx network bridge.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/11/running-google-chrome-os-on-macosx-with-vmware-fusion/' rel='bookmark' title='How to run Google Chrome OS on Mac OS X with VMWare Fusion'>How to run Google Chrome OS on Mac OS X with VMWare Fusion</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/11/google-chrome-os-user-agent/' rel='bookmark' title='Google Chrome OS User Agent'>Google Chrome OS User Agent</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/01/vmware-fusion-the-network-bridge-device-on-devvmnet0-is-not-running/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>How to add a new feed handler in Firefox 2.0</title>
		<link>http://www.simonecarletti.com/blog/2006/11/how-to-add-a-new-feed-handler-in-firefox-20/</link>
		<comments>http://www.simonecarletti.com/blog/2006/11/how-to-add-a-new-feed-handler-in-firefox-20/#comments</comments>
		<pubDate>Sat, 04 Nov 2006 15:45:40 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Softwares]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[registercontenthandler]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/2006/11/how-to-add-a-new-feed-handler-in-firefox-20/</guid>
		<description><![CDATA[How to add a new feed handler to Firefox 2.0 without tweaking the registry.
]]></description>
			<content:encoded><![CDATA[<div class="flash-message warning">
<p><strong>December 30th, 2008</strong>. This post was published long time ago on the Italian version of my blog then moved here after the English blog has been opened. Please note that the following post can contain outdated information and (probably) multiple typos.</p>
</div>
<p>Firefox 2.0 is out&#8230; uhm? what are you saying? what a great news?&#8230; oh yeah, but this isn&#8217;t the main topic of this post.</p>
<p>As someone of you probably remember, on June I made a few tests with Firefox 2.0 Bon Echo 3 focused on how the new Firefox handles feeds. Firefox 2 gives you full control over Web feeds, showing you a preview and letting you choose how you want to subscribe.</p>
<p>At the end of the tests I wrote an article showing how is possible to add a new content handler, aka web aggregator, in Firefox 2.0&#8230; <a href="http://digg.com/software/How_to_add_Rmail_as_a_choice_in_Firefox_2_0">it was digged too</a>! <em>(Note. The article is no longer available)</em>.<br />
Since Firefox 2.0 was not yet released at the time the article was written, I didn&#8217;t know that there was an easier way to add an content handler without tweaking by hand Firefox registry.</p>
<p>Using <code>registerContentHandler()</code> javascript function is possible to add with just one click a new feed handler&#8230; how? Let me show you.</p>
<p><span id="more-12"></span></p>
<h2>Adding a new feed handler to Firefox 2.0 with registerContentHandler()</h2>
<p><a href="https://developer.mozilla.org/En/DOM:window.navigator.registerContentHandler">registerContentHandler()</a> is a JavaScript function that allows you to register a new content handler in Firefox 2.0.<br />
It accepts 3 required params:</p>
<dl>
<dt><var>mimeType</var></dt>
<dd>the content mime type.<br />
For a feed must be <code>application/vnd.mozilla.maybe.feed</code>. </dd>
<dt><var>uri</var></dt>
<dd>the content handler URI.<br />
<code>%s</code> can be used as a placeholder for the resource URI. </dd>
<dt><var>title</var></dt>
<dd>the content handler Title</dd>
</dl>
<p>Once again, let&#8217;s use Rmail as example.<br />
Rmail add-new-subscription URI is (always the same) <code>http://www.r-mail.org/bm.aspx?rss=%s</code> while content handler title is Rmail.<br />
Thus, the final JavaScript should looks like the following.</p>
<div class="codecolorer-container text default brush: plain" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">navigator.registerContentHandler('application/vnd.mozilla.maybe.feed',<br />
'http://www.r-mail.org/bm.aspx?rss=%s',<br />
'Rmail');</div></td></tr></tbody></table></div>
<p>You can put/call this JavaScript function where everywhere in a HTML page, for example as a link (<a href="http://blog.netvibes.com/?2006/10/25/83-firefox-2-and-netvibes">as Netvibes did</a>)&#8230;</p>
<h3>Example 1.</h3>
<p><strong>Look &amp; feel</strong></p>
<p><!-- example 1 l&#038;f --></p>
<p><a href="javascript:window.navigator.registerContentHandler('application/vnd.mozilla.maybe.feed','http://www.r-mail.org/bm.aspx?rss=%s','Rmail');">Click here</a> and add Rmail</p>
<p><!-- /example 1 l&#038;f --></p>
<p><strong>Code</strong></p>
<p><!-- example 1 code --></p>
<div class="codecolorer-container text default brush: html" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;p&gt;<br />
&lt;a href=&quot;javascript:window.navigator.registerContentHandler('application/vnd.mozilla.maybe.feed',<br />
'http://www.r-mail.org/bm.aspx?rss=%s','Rmail');&quot;&gt;Click here&lt;/a&gt;<br />
and add Rmail<br />
&lt;/p&gt;</div></td></tr></tbody></table></div>
<p><!-- /example 1 code --></p>
<p>&#8230; you can put it into a form button&#8230;</p>
<h3>Example 2.</h3>
<p><strong>Look &amp; feel</strong></p>
<p><!-- example 2 l&#038;f --></p>
<input onclick="window.navigator.registerContentHandler('application/vnd.mozilla.maybe.feed',&lt;br /&gt; 'http://www.r-mail.org/bm.aspx?rss=%s','Rmail');" name="add" type="button" value="Click here and add Rmail" />
<p><!-- example 2 l&#038;f --></p>
<p><strong>Code</strong></p>
<p><!-- example 2 code --></p>
<div class="codecolorer-container text default brush: html" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;p&gt;<br />
&lt;input type=&quot;button&quot; name=&quot;add&quot; value=&quot;Click here and add Rmail&quot;<br />
onclick=&quot;window.navigator.registerContentHandler('application/vnd.mozilla.maybe.feed',<br />
'http://www.r-mail.org/bm.aspx?rss=%s','Rmail');&quot; /&gt;<br />
<br />
&lt;/p&gt;</div></td></tr></tbody></table></div>
<p><!-- /example 2 code --></p>
<p>or include it into a JavaScript function and call it anywhere in the page.</p>
<h3>Example 3.</h3>
<p><strong>Code</strong></p>
<p><!-- example 3 code --></p>
<div class="codecolorer-container text default brush: html" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;script type=&quot;text/javascript&quot;&gt;<br />
function subWith() {<br />
navigator.registerContentHandler('application/vnd.mozilla.maybe.feed', 'http://www.r-mail.org/bm.aspx?rss=%s', 'Rmail');<br />
}<br />
<br />
&lt;/script&gt;<br />
&lt;input type=&quot;button&quot; name=&quot;add&quot; value=&quot;Click here and add Rmail&quot;<br />
onclick=&quot;function subWith();&quot; /&gt;</div></td></tr></tbody></table></div>
<p><!-- /example 3 code --></p>
<h2>More power to registerContentHandler()</h2>
<p>This tutorial might be closed here, but the real reason why I wrote this post is to show how is possible to add more power to <code>registerContentHandler()</code> with a few JavaScript lines.</p>
<p>The idea comes from this post where <a href="http://www.therssweblog.com/">Randy</a> shows a button to add Rmail as a new content handler.<br />
In a comment <cite>pat</cite> asks which is the best technique between Randy&#8217;s magic button (see example 2 and example 3) and my tutorial <em>(Note. The tutorial is no longer available)</em>.</p>
<p>This is Randy&#8217;s answer.</p>
<blockquote><p>Pat,<br />
Simone&#8217;s technique is actually superior as it also includes the email address. I&#8217;m working on making that possible too!<br />
Randy</p></blockquote>
<p>Don&#8217;t worry Randy, I will give you an help! :D</p>
<p>The only difference between my code and Randy&#8217;s code is that I used the following Rmail subscription string (please note the mailto param)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://www.r-mail.org/bm.aspx?rss=%s&lt;strong&gt;&amp;mailto=YOUR_EMAIL&lt;/strong&gt;</div></td></tr></tbody></table></div>
<p>instead of</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">http://www.r-mail.org/bm.aspx?rss=%s</div></td></tr></tbody></table></div>
<p>Thus, what we should do is <strong>find a way to allow user to type its own email address and append it to the content handler URI</strong>.</p>
<p>My first idea was to <strong>create a new input text field</strong>. It&#8217;s better than using other techniques such as JavaScript input boxes since the field can be easily filled with a server side programming language in a more complex site, can be validated and you can re-use in thousand ways.<br />
While I was writing the code, I decided to do a little more. Why not creating a script that allows developers to add custom arguments to a content handler URI instead of a single one? Rmail just needs a <code>mailto</code> param but other readers may need <code>mail</code> and <code>user</code>&#8230;</p>
<p>This is what I wrote!</p>
<p>The following script allows you to register a new content handler in Firefox 2.0 just calling a simple function.<br />
In addition, you can create as many form field as you wish calling them <code>name="args"</code>. For each field, the script will collect its value and if the field isn&#8217;t empty, will appends the value to the content handler URI.</p>
<p>Let&#8217;s see an example. Again, I will use Rmail and I will show you how it&#8217;s easy to append your personal email to the URI.</p>
<h3>Example 4.</h3>
<div class="codecolorer-container text default brush: html" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;!-- include the script --&gt;<br />
&lt;script type=&quot;text/javascript&quot; src=&quot;firefox2-registerFeedHandler.js&quot;&gt;&lt;/script&gt;<br />
<br />
&lt;!-- add as many field as you wish.<br />
Each field called 'args' will be appended to content handler URI.<br />
The argument name will be its unique form Id, the value the field value.<br />
--&gt;<br />
&lt;input type=&quot;text&quot; name=&quot;args&quot; id=&quot;email&quot; value=&quot;&quot; /&gt;&lt;br /&gt;<br />
<br />
&lt;!-- call the function, use subWith(true) instead of subWith()<br />
to collect form fields.<br />
--&gt;<br />
&lt;input type=&quot;button&quot; name=&quot;subWith&quot; onclick=&quot;subWith(true);&quot; value=&quot;Make Rmail your Firefox RSS handler&quot; /&gt;</div></td></tr></tbody></table></div>
<p>First you must include the script.<br />
Don&#8217;t forget to customize <code>chUri</code> and <code>chTitle</code> variables, as written at the top of the javaScript file.</p>
<p>Then add an input text field for each argument you wish to append to the URI. You can also use hidden inputs to pass hidden values.<strong> Don&#8217;t forget to call them <code>args</code> or the script will not work.</strong></p>
<p>Now call the <code>subWith()</code> function. You can use a link, a button or a common JavaScript event.</p>
<p>Enjoy the confirmation dialog! :D</p>
<p><img class="centered" src="http://www.simonecarletti.com/blog/public/2006/11/firefox_new_feed_handler/dialog.gif" alt="Add new handler confirmation dialog" /></p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2006/06/feedburner-stats-2-feed/' rel='bookmark' title='FeedBurner Stats 2 Feed'>FeedBurner Stats 2 Feed</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2006/11/how-to-add-a-new-feed-handler-in-firefox-20/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

