<?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>Roberto Aloi</title>
	<atom:link href="http://aloiroberto.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://aloiroberto.wordpress.com</link>
	<description>My code is bug-free. It implements some random, undocumented features</description>
	<lastBuildDate>Fri, 26 Oct 2012 20:54:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='aloiroberto.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Roberto Aloi</title>
		<link>http://aloiroberto.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://aloiroberto.wordpress.com/osd.xml" title="Roberto Aloi" />
	<atom:link rel='hub' href='http://aloiroberto.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Domain Renewal Group Fraud</title>
		<link>http://aloiroberto.wordpress.com/2011/04/18/domain-renewal-group-fraud/</link>
		<comments>http://aloiroberto.wordpress.com/2011/04/18/domain-renewal-group-fraud/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 09:26:05 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[IT frauds]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=480</guid>
		<description><![CDATA[A couple of days ago the following letter has been delivered to my British postal address. A quick glance to the letter on my way to work pushed me to write this blog post. The so-called &#8220;Domain Renewal Group&#8221;, sender of the above letter, seems to have a quite interesting business model, in fact. Just, &#8230; <a href="http://aloiroberto.wordpress.com/2011/04/18/domain-renewal-group-fraud/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=480&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A couple of days ago the following letter has been delivered to my British postal address.</p>
<div id="attachment_481" class="wp-caption aligncenter" style="width: 235px"><a href="http://aloiroberto.files.wordpress.com/2011/04/domain-fraud.png"><img class="size-medium wp-image-481" title="Domain Renewal Group Fraud Letter" src="http://aloiroberto.files.wordpress.com/2011/04/domain-fraud.png?w=225&#038;h=300" alt="Domain Renewal Group Fraud Letter" width="225" height="300" /></a><p class="wp-caption-text">Domain Renewal Group Fraud Letter</p></div>
<p style="text-align:justify;">A quick glance to the letter on my way to work pushed me to write this blog post. The so-called &#8220;Domain Renewal Group&#8221;, sender of the above letter, seems to have a quite interesting business model, in fact. Just, it looks a bit fraudolent to me. Let&#8217;s see what they do in detail.</p>
<p style="text-align:justify;">First of all, the group performs a <a href="http://en.wikipedia.org/wiki/Whois">whois</a> on a series of expiring web domains, extracting the postal address of the domain holders. Using that information for commercial purposes is illegal according to the terms of use of whois, which explicitely prohibits the use of the WHOIS data &#8220;for advertising, direct marketing, marketing research, or similar purposes&#8221;. A couple of months before the domain expires, the group sends the domain holders a copy of the above letter, which they define &#8211; in bold &#8211; a &#8220;courtesy to domain name holders&#8221; and a &#8220;reminder that your domain name registration is due to expire in the next few months&#8221;. The domain holder might think it&#8217;s his own hosting provider who is sending the reminder. Actuallly, the domain holder has never registered the domain with this Company. In fact, he has never used their services before. The letter is actually <strong>not</strong> a domain renewal form &#8211; as you would suppose &#8211; but a request of domain transfer from your current Registrar to a completely new service provider &#8211; i.e. the &#8220;Domain Renewal Group&#8221; -. They even dare to insert a &#8220;Reply requested by&#8221; date on the top of the letter. To perform the payment, there&#8217;s even a stub that you can use to fill in your credit card details &#8211; how easy &#8211; and to send them the request of service in a pre-stamped envelope. Very kind of them.</p>
<p style="text-align:justify;">Dear Domain Renewal Group, I&#8217;m looking forward to the day when users will start typing your name in Google, having the term &#8220;fraud&#8221; suggested.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/480/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/480/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=480&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2011/04/18/domain-renewal-group-fraud/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2011/04/domain-fraud.png?w=225" medium="image">
			<media:title type="html">Domain Renewal Group Fraud Letter</media:title>
		</media:content>
	</item>
		<item>
		<title>The growth of Erlang: The Stack Overflow Case Study</title>
		<link>http://aloiroberto.wordpress.com/2010/12/11/the-growth-of-erlang-the-stack-overflow-case-study/</link>
		<comments>http://aloiroberto.wordpress.com/2010/12/11/the-growth-of-erlang-the-stack-overflow-case-study/#comments</comments>
		<pubDate>Sat, 11 Dec 2010 15:44:01 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Erlang]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=457</guid>
		<description><![CDATA[One of the most popular technical Questions and Answers (Q&#38;A) websites is nowadays represented by Stack Overflow. Compared to a more traditional mailing list, it provides different advantages: More structured information Focus on the problem/issue Information easier to find Threads easier to follow Concept of reputation (most active users &#8220;rewarded&#8221;) Up/Down votes Etc. I&#8217;m not suggesting &#8230; <a href="http://aloiroberto.wordpress.com/2010/12/11/the-growth-of-erlang-the-stack-overflow-case-study/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=457&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>One of the most popular technical <em>Questions and Answers</em> (Q&amp;A) websites is nowadays represented by <a href="http://www.stackoverflow.com">Stack Overflow</a>. <span style="font-size:15px;">Compared to a more traditional mailing list, it provides different advantages:</span></p>
<ul>
<li>More structured information</li>
<li>Focus on the problem/issue</li>
<li>Information easier to find</li>
<li>Threads easier to follow</li>
<li>Concept of reputation (most active users &#8220;rewarded&#8221;)</li>
<li>Up/Down votes</li>
<li>Etc.</li>
</ul>
<p>I&#8217;m not suggesting that Stack Overflow should exclusively replace every existing mailing list. I rather feel that the two tools may coexist, with different purposes.</p>
<ul>
<li><span style="font-size:15.6px;">Technical problem/issue -&gt; Stack Overflow</span></li>
<li><span style="font-size:15.6px;">Open discussion -&gt; Mailing list </span></li>
</ul>
<p><span style="font-size:15px;">Recently, I&#8217;ve noticed an increased number of posts tagged <em>Erlang</em> on Stack Overflow. I then asked myself:</span></p>
<ol>
<li><span style="font-size:15px;">How Erlang is growing on Stack Overflow?</span></li>
<li><span style="font-size:15px;">How the Stack Overflow growth is affecting the Erlang mailing list?</span></li>
<li><span style="font-size:15px;">How Erlang is growing on Stack Overflow in relation to the major (read, most popular) languages (such as C++, Java or PHP)?</span></li>
<li><span style="font-size:15px;">How Erlang is growing on Stack Overflow in relation to languages such as Scala, Haskell or Go?</span></li>
</ol>
<p>Then, I&#8217;ve tried to give ananswer to all of these questions.</p>
<h2>How Erlang is growing on Stack Overflow?</h2>
<p>Probably you don&#8217;t know, but there is a website (<a href="http://odata.stackexchange.com">odata.stackexchange.com</a>), which allows you to run arbitrary SQL queries on the Stack Exchange family of sites, of which Stack Overflow is part. Well, I decided to write my first query, asking Stack Overflow about the trend of posts tagged <em>Erlang </em>over time. The query is parametrical and can be used to check the trend of <em>any</em> tag on Stack Overflow. Also, since my SQL Server skills honestly suck, you are very welcome to edit and to make more efficient <a href="http://data.stackexchange.com/stackoverflow/s/708/how-many-posts-per-month-for-a-tag">my query</a>.</p>
<p>The charted results of the query run for the Erlang tag look more or less like this:</p>
<p><a href="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-40-55-pm1.png"><img class="aligncenter size-full wp-image-459" title="Erlang Posts on Stack Overfow" src="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-40-55-pm1.png?w=750" alt="Erlang Posts on Stack Overfow"   /></a></p>
<p>Where the x-axis ranges from August 2008 to October 2010.</p>
<h2>How the Stack Overflow growth is affecting the Erlang mailing list?</h2>
<p><a title="Gmane" href="www.gmane.org">Gmane</a> offers a whole set services related to mailing lists. Among these, it provides some really interesting statistics on the mailing list usage. The following graphs report the messages and the participants per day for the Erlang General mailing list for the past few years. You can find more details <a href="http://gmane.org/details.php?group=gmane.comp.lang.erlang.general">here</a>.</p>
<p><a href="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-50-46-pm.png"><img class="aligncenter size-full wp-image-460" title="Activity on the Erlang General Mailing List" src="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-50-46-pm.png?w=750" alt=""   /></a></p>
<p>To a very first analysis, it seems that the recent growth of Stack Overflow didn&#8217;t affect too much the Erlang mailing list, even if you can notice a tiny decrease in the mailing list usage in the final section of the graph (period 2008/2009). It sounds obvious how Stack Overflow shouldn&#8217;t be seen as the unique possible affecter of the mailing list usage.</p>
<h2>How Erlang is growing on Stack Overflow in relation to the major (read, most popular) languages (such as C++, Java or PHP)?</h2>
<p>A graph is worth a billion words.</p>
<p><a href="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-55-pm.png"><img class="aligncenter size-full wp-image-464" title="Erlang VS C++, Java and PHP" src="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-55-pm.png?w=750" alt="Erlang VS C++, Java and PHP"   /></a></p>
<h2>How Erlang is growing on Stack Overflow in relation to languages such as Scala or Haskell?</h2>
<p><a href="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-18-pm.png"><img class="aligncenter size-full wp-image-465" title="Erlang VS Scala, Haskell and Go" src="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-18-pm.png?w=750" alt="Erlang VS Scala, Haskell and Go"   /></a></p>
<h2>Conclusions</h2>
<p>Comparing Erlang with the major languages such as PHP, C++ or Java is probably a bit <em>unfair</em>. I just hope you enjoyed reading this simple case study as much as I enjoyed writing it. <span style="font-size:15.6px;">Feel free to play with my query. Comments and opinions are always welcome.</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/457/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=457&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/12/11/the-growth-of-erlang-the-stack-overflow-case-study/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-40-55-pm1.png" medium="image">
			<media:title type="html">Erlang Posts on Stack Overfow</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-2-50-46-pm.png" medium="image">
			<media:title type="html">Activity on the Erlang General Mailing List</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-55-pm.png" medium="image">
			<media:title type="html">Erlang VS C++, Java and PHP</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/12/screen-shot-2010-12-11-at-3-11-18-pm.png" medium="image">
			<media:title type="html">Erlang VS Scala, Haskell and Go</media:title>
		</media:content>
	</item>
		<item>
		<title>How to manage multiple Erlang installations</title>
		<link>http://aloiroberto.wordpress.com/2010/11/24/how-to-manage-multiple-erlang-installations/</link>
		<comments>http://aloiroberto.wordpress.com/2010/11/24/how-to-manage-multiple-erlang-installations/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 20:07:36 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[HowTo]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=440</guid>
		<description><![CDATA[Sometimes you need to use different Erlang versions for different projects. I personally have to use an old R12B-5 for one of my projects, which won&#8217;t compile on any of the latest Erlang versions. The question is then: How to switch from one version of Erlang to another one in a simple way? There are no &#8230; <a href="http://aloiroberto.wordpress.com/2010/11/24/how-to-manage-multiple-erlang-installations/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=440&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:justify;">Sometimes you need to use different Erlang versions for different projects. I personally have to use an old R12B-5 for one of my projects, which won&#8217;t compile on any of the latest Erlang versions. The question is then:</p>
<blockquote>
<p style="text-align:justify;">How to switch from one version of Erlang to another one in a simple way?</p>
</blockquote>
<p style="text-align:justify;">There are no magics behind what I&#8217;m going to say in this post. Actually, this post will sound quite trivial to most of you. I simply wanted to share what I currently do with the ones of you who might have the same need. I&#8217;m using Snow Leopard, but all of the above should apply to any UNIX-like system. Also, I assume you&#8217;re fine with installing Erlang from source.</p>
<p style="text-align:justify;">Assume you have two separate Erlang installations in your home directory:</p>
<blockquote><p>~/erlang13b04</p>
<p>~/erlang14a</p></blockquote>
<p>Notice that you can specify the installation path of Erlang by selecting, at installation time:</p>
<blockquote><p>./configure &#8211;prefix=YOUR_INSTALLATION_PATH</p></blockquote>
<p style="text-align:justify;">First of all, let&#8217;s edit our ~/.bashrc, by adding the following line:</p>
<blockquote><p><pre class="brush: bash;">

PATH=$PATH:$HOME/bin

</pre></p></blockquote>
<p style="text-align:justify;">Then, let&#8217;s create the bin folder under the home directory:</p>
<blockquote><p>mkdir $HOME/bin</p></blockquote>
<p style="text-align:justify;">Let&#8217;s now create some scripts in the directory we&#8217;ve just created. We will need one script for each installation we want to use.</p>
<p style="text-align:justify;">Let&#8217;s create a file called &#8220;13&#8243; (no extension). Inside the file, we write:</p>
<p><pre class="brush: bash;">

#!/bin/bash
env PATH=/User/[USERNAME]/erlang13b04/bin:$PATH &quot;$@&quot;

</pre></p>
<p style="text-align:justify;">Let&#8217;s then do the same for R14. Create a file named &#8220;14&#8243; and write the following into it:</p>
<p><pre class="brush: bash;">

#!/bin/bash
env PATH=/User/[USERNAME]/erlang14a/bin:$PATH &quot;$@&quot;

</pre></p>
<p style="text-align:justify;">Make the two script executable:</p>
<blockquote><p>cd ~/bin</p>
<p>chmod +x 13 14</p></blockquote>
<p style="text-align:justify;">Let&#8217;s &#8220;source&#8221; the ~/.bashrc (or simply open a new shell):</p>
<blockquote><p>source ~/.bashrc</p></blockquote>
<p style="text-align:justify;">That&#8217;s it. If you want to run a command using R13, just:</p>
<blockquote><p>13 erl</p>
<p>Erlang R13B04 (erts-5.7.5)</p>
<p>Eshell V5.7.5  (abort with ^G)</p>
<p>1&gt;</p></blockquote>
<p>Or:</p>
<blockquote><p>14 erl</p>
<p>Erlang R14A (erts-5.8)</p>
<pre><span style="font-family:Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif;line-height:19px;white-space:normal;font-size:13px;">Eshell V5.8  (abort with ^G)</span></pre>
<p>1&gt;</p></blockquote>
<p style="text-align:justify;">Assuming you have a project you want to compile with R13:</p>
<blockquote><p>13 make</p></blockquote>
<p style="text-align:justify;">Or, if you prefer R14:</p>
<blockquote><p>14 make</p></blockquote>
<p style="text-align:justify;">Well, you should have got the idea at this point&#8230;</p>
<p style="text-align:justify;">Notice that you can still specify the path of your favourite (default) Erlang installation in your ~/.bashrc file, so you wan&#8217;t need to prepend &#8220;14&#8243; to your commands every time you want to use the latest Erlang version.</p>
<p style="text-align:justify;">As I&#8217;ve already said, there&#8217;s nothing special here. Just a bit of playing with paths that might turn useful from time to time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/440/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/440/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=440&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/11/24/how-to-manage-multiple-erlang-installations/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>
	</item>
		<item>
		<title>How they tried to fool tryerlang.org</title>
		<link>http://aloiroberto.wordpress.com/2010/10/14/how-they-tried-to-fool-tryerlang-org/</link>
		<comments>http://aloiroberto.wordpress.com/2010/10/14/how-they-tried-to-fool-tryerlang-org/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 18:39:31 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[external term]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[restrictions]]></category>
		<category><![CDATA[secure shell]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[tryerlang]]></category>
		<category><![CDATA[tryerlang.org]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=391</guid>
		<description><![CDATA[Preface tryerlang.org is an Interactive Erlang Shell which allows you to try the power of Erlang directly in your browser, without installing anything in your machine. In the first months of his existence, tryerlang.org has been subjected to a countless number of attacks, aiming at bringing the Erlang node down. Studying the tryerlang.org&#8217;s logs has been so &#8230; <a href="http://aloiroberto.wordpress.com/2010/10/14/how-they-tried-to-fool-tryerlang-org/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=391&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>Preface</h3>
<p style="text-align:justify;"><a title="tryerlang.org" href="http://tryerlang.org" target="_blank">tryerlang.org</a> is an Interactive Erlang Shell which allows you to try the power of Erlang directly in your browser, without installing anything in your machine. In the first months of his existence, tryerlang.org has been subjected to a countless number of attacks, aiming at bringing the Erlang node down. Studying the tryerlang.org&#8217;s logs has been so far an highly interesting and constructive experience.</p>
<p style="text-align:justify;">In this blog post I will present one of the attempted attacks. The attack was based on the concept of <em>External Term Representation </em>for Erlang, which is introduced in the next section.</p>
<h3>External Term Representation</h3>
<p style="text-align:justify;">In the distribution mechanism of Erlang, Erlang terms are converted into binaries before being sent to a remote host and then converted back into Erlang terms at the destination. The built-in functions <code>term_to_binary</code> and <code>binary_to_term</code> are used for the conversions.</p>
<p style="text-align:justify;">More information about the External Term Representation are available in <a title="Erlang External Term Representation" href="http://www.erlang.org/doc/apps/erts/erl_ext_dist.html" target="_blank">the official Erlang Documentation</a>. How the External Term Representation has been used to perform the attack is explained in the next section.</p>
<h3>Halting the Erlang Node</h3>
<p style="text-align:justify;">The user wants to bring the Erlang node down. He then tries to use the <code>erlang:halt/0</code> function. This function, documented <a title="Erlang Halt" href="http://www.erlang.org/doc/man/erlang.html#halt-0" target="_blank">here</a>, halts the Erlang runtime system and indicates normal exit to the calling environment. It has no return value. The function has been disabled in tryerlang.org for security reasons, so the only result the user get is the following message:</p>
<blockquote><p>&#8220;This functionality has been disabled for security reasons in tryerlang.org.&#8221;.</p></blockquote>
<p style="text-align:justify;">So far, so good. The Erlang node is still up. The user thinks for a while and then he notices that tryerlang.org allows you to define <a title="Erlang Funs" href="http://www.erlang.org/doc/programming_examples/funs.html" target="_blank">funs</a>. Here is where the External Term Representation can help. <a title="export_ext" href="http://www.erlang.org/doc/apps/erts/erl_ext_dist.html#id83276" target="_blank">According to the documentation</a>, it is possible to encode an external fun &#8211; something like <code>fun M:F/A</code> &#8211; in the  following way:</p>
<p style="text-align:justify;"><code>113 | Module | Function | Arity</code></p>
<p style="text-align:justify;">Where <strong>Module</strong> and <strong>Function</strong> are atoms and <strong>Arity </strong>is  an integer. The atoms can be encoded using <a title="atom ext" href="http://www.erlang.org/doc/apps/erts/erl_ext_dist.html#ATOM_EXT" target="_blank">ATOM_EXT</a>, while <a title="small integer ext" href="http://www.erlang.org/doc/apps/erts/erl_ext_dist.html#id80902" target="_blank">SMALL_INTEGER_EXT</a> can be used for the arity integer.</p>
<p style="text-align:justify;">The encoding for the atoms looks like:</p>
<p style="text-align:justify;"><code>100 | Len | AtomName</code></p>
<p style="text-align:justify;">Where <code>Len</code> is the length of <code>AtomName</code>, expressed in two bytes.</p>
<p style="text-align:justify;">Finally, the encoding for the small integers looks like:</p>
<p style="text-align:justify;"><code>97 | Int</code></p>
<p style="text-align:justify;">The last thing we have to consider is that, in the External Term Representation, the byte <code>131</code> needs to be prepended to the term. Now that we have all the required knowledge to do it, let&#8217; try to encode the <code>erlang:halt/</code>0 function using the External Term Representation and let see if we can fool tryerlang.org!</p>
<p style="text-align:justify;">We could write the binaries for the atoms <strong>erlang</strong> and <strong>halt</strong> by hand, but it&#8217;s actually more handy to use the <code>term_to_binary/1</code> BIF to do it for us. Since the function is blacklisted in tryerlang.org, let&#8217;s use our own shell.</p>
<p style="text-align:justify;"><code>Eshell V5.8.1  (abort with ^G)</code></p>
<p style="text-align:justify;"><code>&gt; term_to_binary(erlang).</code></p>
<p style="text-align:justify;"><code>&lt;&lt;131,100,0,6,101,114,108,97,110,103&gt;&gt;</code></p>
<p><code>&gt; term_to_binary(halt).</code></p>
<p style="text-align:justify;"><code>&lt;&lt;131,100,0,4,104,97,108,116&gt;&gt;</code></p>
<p style="text-align:justify;">Skipping the initial <code>131</code> byte (see above) and concatenating the other two obtained terms, we have:</p>
<p style="text-align:justify;"><code> &lt;&lt;100,0,6,101,114,108,97,110,103,<br />
100,0,4,104,97,108,116&gt;&gt;<br />
</code></p>
<p style="text-align:justify;">Prepending the <code>131</code> (prefix for all terms) and <code>113</code> (prefix for external funs) bytes and appending the arity integer, we have:</p>
<p style="text-align:justify;"><code> &lt;&lt;131,113,<br />
100,0,6,101,114,108,97,110,103,<br />
100,0,4,104,97,108,116,<br />
97,0&gt;&gt;<br />
</code></p>
<p style="text-align:justify;">We should have the binary representation of the external fun <code>erlang:halt/0</code>. Let&#8217;s check it!</p>
<p style="text-align:justify;"><code>&gt; binary_to_term(&lt;&lt;131,113,<br />
100,0,6,101,114,108,97,110,103,<br />
100,0,4,104,97,108,116,97,0&gt;&gt;).</code></p>
<p style="text-align:justify;"><code>8&gt;#Fun&lt;erlang.halt.0&gt;</code></p>
<p style="text-align:justify;">Let&#8217;s now take this binary from our shell and let&#8217;s paste it in tryerlang.org. Oh, I forgot that the online shell doesn&#8217;t allow copy and paste (what a shame!), so we have to fill the whole binary sequence by hand&#8230;</p>
<p style="text-align:justify;">After a couple of minutes of struggling against typos and errors, here&#8217;s our wonderful fun which we can bind to a new variable:</p>
<p style="text-align:justify;"><code>&gt;B = &lt;&lt;131,113,100,0,6,101,114,108,<br />
97,110,103,100,0,4,104,97,108,116,97,0&gt;&gt;.</code></p>
<p style="text-align:justify;">We now need to convert the binary into an Erlang term. Originally, tryerlang.org was allowing <a title="Erlang Safe Binary To Term" href="http://www.erlang.org/doc/man/erlang.html#binary_to_term-2" target="_blank">the binary_to_term function in safe mode</a>. This function has been now completely disabled after this attack. If you want to try what follows you will need to do it in your own Erlang shell.</p>
<p style="text-align:justify;"><code>&gt;F = binary_to_term(B, [safe]).</code></p>
<p style="text-align:justify;">Let&#8217;s now try to launch the fun as:</p>
<p style="text-align:justify;"><code>&gt;F().</code></p>
<p style="text-align:justify;">Well, that didn&#8217;t work as expected. tryerlang.org actually realized that the <code>erlang:halt/0</code> function was going to be called and he managed to block it. We need something different.</p>
<p style="text-align:justify;">What would happens if we embed the <code>halt</code> function in another function call, say a <code>list:map/2</code>? The only problem would be that we need a parameter in our halt function. Fortunately <a href="http://www.erlang.org/doc/man/erlang.html#halt-1" target="_blank">an alternative version of <code>erlang:halt/0</code> exists, taking exactly one argument</a>. Let&#8217;s create an external representation for it. We just need to change the last element from 0 to 1. The BIF <code>f/1</code> forgets the value of a bounded variable.</p>
<p style="text-align:justify;"><code>&gt; f(B).</code></p>
<p style="text-align:justify;"><code>&gt; B = &lt;&lt;131,113,100,0,6,101,114,<br />
108,97,110,103,100,0,4,104,97,108,116,97,1&gt;&gt;.<br />
</code></p>
<p style="text-align:justify;">Now we should be able to do&#8230;<br />
<code><br />
&gt; f(F).</code></p>
<p style="text-align:justify;"><code>&gt;F = binary_to_term(B, [safe]).</code></p>
<p style="text-align:justify;"><code>&gt;lists:map(F, [0]).<br />
</code></p>
<p style="text-align:justify;">And the node dies.</p>
<p style="text-align:justify;">Actually the node is almost immediately brought back by <a title="Erlang Heart" href="http://www.erlang.org/doc/man/heart.html" target="_blank">heart</a> but, hey, I have to pay a beer to this guy! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="text-align:justify;">Please note that <strong>the hacker had the advantage to look at the source code for tryerlang.org while performing the attack.</strong></p>
<p style="text-align:justify;">I wanted to share this experience with all of you. I consider it highly constructive, since it leads to reflect on several aspects of Erlang. Comments and feedback are more than welcome.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/391/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=391&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/10/14/how-they-tried-to-fool-tryerlang-org/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://aloiroberto.files.wordpress.com/2009/11/erlang-logo.png?w=150" />
		<media:content url="http://aloiroberto.files.wordpress.com/2009/11/erlang-logo.png?w=150" medium="image">
			<media:title type="html">Erlang</media:title>
		</media:content>

		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>
	</item>
		<item>
		<title>Pair Programming</title>
		<link>http://aloiroberto.wordpress.com/2010/10/09/pair-programming/</link>
		<comments>http://aloiroberto.wordpress.com/2010/10/09/pair-programming/#comments</comments>
		<pubDate>Sat, 09 Oct 2010 14:01:14 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Comics]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=385</guid>
		<description><![CDATA[<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=385&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://aloiroberto.files.wordpress.com/2010/10/screen-shot-2010-10-09-at-2-54-26-pm.png"><img class="aligncenter size-medium wp-image-386" title="Pair Programming" src="http://aloiroberto.files.wordpress.com/2010/10/screen-shot-2010-10-09-at-2-54-26-pm.png?w=267&#038;h=299" alt="Pair Programming" width="267" height="299" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/385/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=385&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/10/09/pair-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/10/screen-shot-2010-10-09-at-2-54-26-pm.png?w=267" medium="image">
			<media:title type="html">Pair Programming</media:title>
		</media:content>
	</item>
		<item>
		<title>Final Cut Pro 7 &#8211; Tips and Tricks &#8211; Part 1</title>
		<link>http://aloiroberto.wordpress.com/2010/10/03/final-cut-pro-7-tips-and-tricks-part-1/</link>
		<comments>http://aloiroberto.wordpress.com/2010/10/03/final-cut-pro-7-tips-and-tricks-part-1/#comments</comments>
		<pubDate>Sun, 03 Oct 2010 16:44:19 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Final Cut Pro 7]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[final cut]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[tips and tricks]]></category>
		<category><![CDATA[video editing]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=369</guid>
		<description><![CDATA[1. Personal Settings and Preferences Working with Final Cut Pro, you soon learn how useful is to customize toolbars, layouts and preferences. All these customizations are stored in: ~/Library/Preferences/Final Cut Pro User Data/ If you want to reset Final Cut to its original settings, just delete all files contained there, except from the PLUGIN directory, &#8230; <a href="http://aloiroberto.wordpress.com/2010/10/03/final-cut-pro-7-tips-and-tricks-part-1/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=369&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://aloiroberto.files.wordpress.com/2010/10/finalcut.jpg"><img class="aligncenter size-full wp-image-370" title="Final Cut Pro 7" src="http://aloiroberto.files.wordpress.com/2010/10/finalcut.jpg?w=750" alt="Final Cut Pro 7 Logo"   /></a></p>
<h2>1. Personal Settings and Preferences</h2>
<p style="text-align:justify;">Working with Final Cut Pro, you soon learn how useful is to customize toolbars, layouts and preferences. All these customizations are stored in:</p>
<p style="text-align:justify;">~/Library/Preferences/Final Cut Pro User Data/</p>
<p style="text-align:justify;">If you want to reset Final Cut to its original settings, just delete all files contained there, except from the PLUGIN directory, which contains all the installed Final Cut plugins. If you plan to use Final Cut Pro in different machines, copy those files into a USB stick and bring them with you, copying them in the right place in the new machine before starting to work.</p>
<h2>2. Focus on the Right Panel</h2>
<p style="text-align:justify;">To switch between the Viewer, the Canvas, the Timeline and the Browser, use the show/hide keyboard shortcuts and save yourself plenty of time:</p>
<p style="text-align:justify;">Cmd-1 -&gt; Focus on the Viewer</p>
<p style="text-align:justify;">Cmd-2 -&gt; Focus on the Canvas</p>
<p style="text-align:justify;">Cmd-3 -&gt; Focus on the Timeline</p>
<p style="text-align:justify;">Cmd-4 -&gt; Focus on the Browser</p>
<h2>3. The three most common windows layouts</h2>
<p style="text-align:justify;">Sometimes you&#8217;re working on the Viewer. Other times you mainly work just on the Canvas. Some more times you want to see all panels simultaneously. Take five minutes of your time to set the three most common windows layouts as your custom layouts and use shortcuts to switch among them.</p>
<ol>
<li>Enlarge the viewer and save the window layout as your custom layout 1 (from the WINDOW menu). You can recall this layout at any time with: <strong>Shift-U</strong></li>
<li>Now enlarge the canvas and save the new window layout as your custom layout 2. You can recall it by hitting: <strong>Option-U</strong></li>
<li>Go back to the default view via: <strong>Ctrl-U</strong></li>
</ol>
<h2>4. Scrubber quickly, easily!</h2>
<p style="text-align:justify;">You can use the J-K-L keys to play  a clip or a sequence backward of forward.</p>
<p style="text-align:justify;">J -&gt; Play backward</p>
<p style="text-align:justify;">K -&gt; Stop playing</p>
<p>L -&gt; Play forward</p>
<p style="text-align:justify;">J-K -&gt; Play backward in slow motion</p>
<p style="text-align:justify;">K-L -&gt; Play forward in slow motion</p>
<p style="text-align:justify;">K-tap J -&gt; Play backward one frame at the time</p>
<p style="text-align:justify;">K-tap L -&gt; Play forward one frame at the time</p>
<p style="text-align:justify;">Also, press SHIFT to use seconds instead of frames as basic measurement unit for movements.</p>
<h2>5. Don&#8217;t scrubber audio, if you don&#8217;t need it</h2>
<p style="text-align:justify;">Use Shift-s to enable or disable audio-scrubbing.</p>
<h2>6. Synchronize video tracks based on the audio</h2>
<p style="text-align:justify;">Save yourself hours in postproduction by installing the <a title="Final Cut Plural Eyes Plugin" href="http://www.singularsoftware.com/pluraleyes.html" target="_blank">pluraleyes plugin</a> (149$) to do this.</p>
<h2>7. Avoid rendering during preview</h2>
<p>Bored about the red bars on the top of the timeline which inform you that the video can&#8217;t be played without rendering? You&#8217;re probably working in Safe RT mode. On the top-left corner of the timeline, hit the RT button and select RT Unlimited. Also, adjust the remaining values to &#8220;Dynamic&#8221;. This will tell Final Cut to preview as many effects in the sequence as it can.</p>
<h2>8. Moving in the timeline</h2>
<p>Did you know that , when you are in the timeline, you can just start typing a number to move the playhead at that exact position? The number represents the number of frames you want to move by. If you want to use seconds, instead, just append a DOT at the end of the number.</p>
<p style="text-align:justify;">5 -&gt; 5 frames</p>
<p style="text-align:justify;">5. -&gt; 5 seconds</p>
<h2>9. Delete clips without leaving a gap</h2>
<p style="text-align:justify;">This operation is known as &#8220;ripple delete&#8221;. Use the forward delete button (or FN + Delete if you&#8217;re on a laptop) to delete a clip and ripple the rest of the sequence. Toggle the ripple markers button (on the top-right corner of the timeline) according to the desired behaviour.</p>
<h2>10. Preview in Full Screen</h2>
<p>In the Final Cut Pro Menu, set the following:</p>
<p>View -&gt; Video Playback &#8211; &gt;Digital</p>
<p>View -&gt; External Video -&gt; All frames</p>
<p>Now you can preview your piece of artwork in full screen by hitting Cmd-F12.</p>
<p><strong>Stay tuned for more Final Cut tips and tricks!</strong></p>
<p style="text-align:justify;">
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/369/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/369/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=369&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/10/03/final-cut-pro-7-tips-and-tricks-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/10/finalcut.jpg" medium="image">
			<media:title type="html">Final Cut Pro 7</media:title>
		</media:content>
	</item>
		<item>
		<title>Looking for an Erlang job?</title>
		<link>http://aloiroberto.wordpress.com/2010/07/05/looking-for-an-erlang-job/</link>
		<comments>http://aloiroberto.wordpress.com/2010/07/05/looking-for-an-erlang-job/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 14:40:20 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[maximonster]]></category>
		<category><![CDATA[offer]]></category>
		<category><![CDATA[zotonic]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=357</guid>
		<description><![CDATA[Seeking an Erlang job? Looking for an Erlang developer to hire? The guys at Maximonster have just realized a simple website to post Erlang-related job offers. It definitely deserves a look. Oh, the website is powered by Zotonic, an Erlang CMS.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=357&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://totally-erlang.com" target="_blank"><img class="aligncenter size-medium wp-image-359" title="Screen shot 2010-07-05 at 3.35.28 PM" src="http://aloiroberto.files.wordpress.com/2010/07/screen-shot-2010-07-05-at-3-35-28-pm.png?w=300&#038;h=231" alt="Erlang Jobs" width="300" height="231" /></a></p>
<p>Seeking an Erlang job? Looking for an Erlang developer to hire?</p>
<p>The guys at <a title="Maximonster" href="http://maximonster.com/" target="_blank">Maximonster</a> have just realized a simple website to post Erlang-related job offers. It definitely deserves a look.</p>
<p>Oh, the website is powered by <a href="http://zotonic.com/" target="_blank">Zotonic</a>, an Erlang CMS.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/357/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/357/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=357&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/07/05/looking-for-an-erlang-job/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/07/screen-shot-2010-07-05-at-3-35-28-pm.png?w=300" medium="image">
			<media:title type="html">Screen shot 2010-07-05 at 3.35.28 PM</media:title>
		</media:content>
	</item>
		<item>
		<title>When all the applications start crashing on the iPhone [solved]</title>
		<link>http://aloiroberto.wordpress.com/2010/06/13/when-all-the-applications-start-crashing-on-the-iphone-solved/</link>
		<comments>http://aloiroberto.wordpress.com/2010/06/13/when-all-the-applications-start-crashing-on-the-iphone-solved/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 12:27:22 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[workaround]]></category>

		<guid isPermaLink="false">https://aloiroberto.wordpress.com/2010/06/13/when-all-the-applications-start-crashing-on-the-iphone-solved/</guid>
		<description><![CDATA[It happened to me several times to encounter a tedious bug on my iPhone. Suddenly, with no apparent reason, every non native application crashes immediately after the launch. A reboot in this case doesn&#8217;t help. The native applications (mail, safari, settings, etc) simply work fine. I&#8217;ve just realized that an update of ANY existing application &#8230; <a href="http://aloiroberto.wordpress.com/2010/06/13/when-all-the-applications-start-crashing-on-the-iphone-solved/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=356&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It happened to me several times to encounter a tedious bug on my iPhone.</p>
<p>Suddenly, with no apparent reason, every non native application crashes immediately after the launch. A reboot in this case doesn&#8217;t help. The native applications (mail, safari, settings, etc) simply work fine.</p>
<p>I&#8217;ve just realized that an update of ANY existing application or the installation of ANY new application via the Apple store brings the device back into a normal state and all applications behave normally again.</p>
<p>Obviously this is just an ugly workaround, but it seems to work very effectively. See if it helps.  </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/356/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/356/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=356&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/06/13/when-all-the-applications-start-crashing-on-the-iphone-solved/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>
	</item>
		<item>
		<title>How to Display &#8220;accesskey&#8221; shortcuts in Google Chrome (and much more)</title>
		<link>http://aloiroberto.wordpress.com/2010/06/12/how-to-display-accesskey-shortcuts-in-google-chrome-and-much-more/</link>
		<comments>http://aloiroberto.wordpress.com/2010/06/12/how-to-display-accesskey-shortcuts-in-google-chrome-and-much-more/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 10:00:34 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[access key]]></category>
		<category><![CDATA[accesskey]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[chromium]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[shortcut]]></category>
		<category><![CDATA[shortcuts]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=338</guid>
		<description><![CDATA[Have you ever heard about access keys? Well, I did. And I loved them. Your productivity can be so improved when surfing a web page by avoiding to use the mouse and by using shortcuts, instead. The bad thing about access keys is that they&#8217;re often hidden, by default, in the web pages. This doesn&#8217;t &#8230; <a href="http://aloiroberto.wordpress.com/2010/06/12/how-to-display-accesskey-shortcuts-in-google-chrome-and-much-more/">Continue reading <span class="meta-nav">&#187;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=338&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Have you ever heard about <a href="http://en.wikipedia.org/wiki/Access_key" target="_blank">access keys</a>? Well, I did. And I loved them. Your productivity can be so improved when surfing a web page by avoiding to use the mouse and by using shortcuts, instead.</p>
<p>The bad thing about access keys is that they&#8217;re often hidden, by default, in the web pages. This doesn&#8217;t make sense to me.</p>
<p>Take the Twitter home page. How many of you knew that, during a search, you could press CTRL+ALT+n to display the &#8220;N new tweets since you started searching&#8221; or that you could press CTRL+ALT+s to visit your &#8220;settings&#8221; page? As a different example, let&#8217;s consider Wikipedia. Did you know that CTRL+ALT+e lead you to the &#8220;edit&#8221; mode? Probably not.</p>
<p>Resuming, &#8220;accesskey&#8221; shortcuts can be very useful. So why they are not displayed by default on the web pages? How should we know about them? And how could we ever remember all of them?</p>
<p>Long time ago, I found <a href="http://blog.andrewbeacock.com/2007/06/firefox-hack-to-display-accesskey.html" target="_blank">this post </a>on how to display the &#8220;accesskey&#8221; keyboard shortcuts in Firefox and I used it for a while. But I&#8217;ve recently fallen in love with Google Chrome and I was wondering if the same feature was already available.</p>
<p>At first, I googled for a quick solution and I couldn&#8217;t find anything really useful. Then, <a href="http://superuser.com/questions/141142/displaying-the-accesskey-keyboard-shortcuts-in-chrome-mac" target="_blank">I asked on Superuser if what I wanted was somehow possible</a>. After a couple of hours, someone answered my question, claiming he created a new Chrome extension just for that. I must admit I was more impressed by the rapidity of the answer than by the answer itself. If this guy could read my specification and implement a solution in such a short time, there was only one possible consequence: <strong>&#8220;Creating extension for Google Chrome is easy&#8221;</strong>.</p>
<p>So, I tried by myself.</p>
<p>First of all, I had a look <a href="http://code.google.com/chrome/extensions/getstarted.html" target="_blank">to the &#8220;Getting Started&#8221; section of the Chrome extensions documentation</a>. As expected, everything was extremely simple. To implement the &#8220;accesskey&#8221; shortcuts, it took me no more than five minutes. Literally. And now my Twitter page looks like:</p>
<p style="text-align:center;"><a href="http://aloiroberto.files.wordpress.com/2010/06/screen-shot-2010-06-11-at-11-59-19-pm.png"><img class="aligncenter size-medium wp-image-339" title="My new Twitter Home Page" src="http://aloiroberto.files.wordpress.com/2010/06/screen-shot-2010-06-11-at-11-59-19-pm.png?w=300&#038;h=173" alt="" width="300" height="173" /></a></p>
<p>Can you see the pink characters close to the links? They are all available &#8220;accesskey&#8221; shortcuts, a piece of information that was already embedded in the web page but that has just been hidden. Let&#8217;s see how can we make it visible again via a brand new Google Chrome Extension.</p>
<p>First of all, <strong>create a new folder</strong> somewhere in your hard drive and call it &#8220;shortcuts&#8221;.</p>
<p>Every Chrome extension is characterized by a &#8220;manifest&#8221; file, written in json, reporting the &#8220;properties&#8221; of the extension itself. Inside the &#8220;shortcuts&#8221; folder, <strong>create a new file, named &#8220;manifest.json&#8221;</strong>:</p>
<pre>{</pre>
<pre>  "name": "Shortcuts",</pre>
<pre>  "version": "1.0",</pre>
<pre>  "description": "Display the accesskey shortcuts.",</pre>
<pre>  "content_scripts": [{</pre>
<pre>    "matches": ["http://*/*", "https://*/*"],</pre>
<pre>    "css": ["style.css"]</pre>
<pre>  }]</pre>
<pre>}</pre>
<p>Apart from the name, the version number and the description of the extension, you can notice a &#8220;content_scripts&#8221; property. This is used to &#8220;inject&#8221; some code automatically every time a web page is displayed. In our case, we simply want to apply some specific CSS properties to the pages. The &#8220;matches&#8221; section tells Chrome to apply the transformation to every page using the http or the https protocol.</p>
<p>Now, we just need to <strong>create a style.css file</strong> (inside the same &#8220;shortcuts&#8221; folder) containing the needed stylistic information:</p>
<pre>a[accesskey]:after,</pre>
<pre>button[accesskey]:after,</pre>
<pre>input[accesskey]:after,</pre>
<pre>label[accesskey]:after,</pre>
<pre>legend[accesskey]:after,</pre>
<pre>textarea[accesskey]:after {</pre>
<pre>  margin-left: 0.3em;</pre>
<pre>  color: Plum;</pre>
<pre>  content: "[" attr(accesskey) "]";</pre>
<pre>}</pre>
<p>That&#8217;s all folks. We&#8217;re done. We can just install our brand new Google Chrome Extensions by visiting the URL:</p>
<address>chrome://extension</address>
<p>and clicking on the &#8220;Load Unpacked Extension&#8221; button.</p>
<p>Using the same strategy, it is obviously possible to apply different CSS transformations. Imagine for a second that you would like to hide all the images from a web page. A CSS like the following would do the job:</p>
<pre>img {</pre>
<pre>  display: none;</pre>
<pre>}</pre>
<p>Hope this help.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=338&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/06/12/how-to-display-accesskey-shortcuts-in-google-chrome-and-much-more/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/06/screen-shot-2010-06-11-at-11-59-19-pm.png?w=300" medium="image">
			<media:title type="html">My new Twitter Home Page</media:title>
		</media:content>
	</item>
		<item>
		<title>tryerlang.org &#8211; Slides from the Erlang Factory</title>
		<link>http://aloiroberto.wordpress.com/2010/06/11/tryerlang-org-slides-from-the-erlang-factory/</link>
		<comments>http://aloiroberto.wordpress.com/2010/06/11/tryerlang-org-slides-from-the-erlang-factory/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 17:58:52 +0000</pubDate>
		<dc:creator>Roberto Aloi</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[aloi]]></category>
		<category><![CDATA[erlang factory]]></category>
		<category><![CDATA[erlangfactory]]></category>
		<category><![CDATA[roberto]]></category>
		<category><![CDATA[roberto aloi]]></category>
		<category><![CDATA[try erlang]]></category>
		<category><![CDATA[tryerlang]]></category>
		<category><![CDATA[tryerlang.org]]></category>

		<guid isPermaLink="false">http://aloiroberto.wordpress.com/?p=326</guid>
		<description><![CDATA[I had the honor to present tryerlang.org yesterday at the London Erlang Factory. If you want, you can download the slides of my &#8220;lightning talk&#8221; from here. Thanks for being there.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=326&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p style="text-align:center;"><a href="http://www.tryerlang.org"><img class="size-medium wp-image-328 aligncenter" title="tryerlang.org" src="http://aloiroberto.files.wordpress.com/2010/06/screen-shot-2010-06-11-at-6-56-31-pm.png?w=300&#038;h=266" alt="tryerlang.org" width="300" height="266" /></a></p>
<p>I had the honor to present tryerlang.org yesterday at the London Erlang Factory. If you want, you can download the slides of my &#8220;lightning talk&#8221; from <a href="http://aloiroberto.files.wordpress.com/2010/06/tryerlang.pdf"></a><a href="http://aloiroberto.files.wordpress.com/2010/06/tryerlang.pdf">here</a>. Thanks for being there.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/aloiroberto.wordpress.com/326/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/aloiroberto.wordpress.com/326/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=aloiroberto.wordpress.com&#038;blog=6646513&#038;post=326&#038;subd=aloiroberto&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://aloiroberto.wordpress.com/2010/06/11/tryerlang-org-slides-from-the-erlang-factory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/c20f7f4a8aa455aa6e0c2a0092883cd0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">prof3ta</media:title>
		</media:content>

		<media:content url="http://aloiroberto.files.wordpress.com/2010/06/screen-shot-2010-06-11-at-6-56-31-pm.png?w=300" medium="image">
			<media:title type="html">tryerlang.org</media:title>
		</media:content>
	</item>
	</channel>
</rss>
