<?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>Tech, Research and Life &#187; Technology</title>
	<atom:link href="http://blog.alessiosignorini.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.alessiosignorini.com</link>
	<description>Cool things I believe the world should know about...</description>
	<lastBuildDate>Tue, 06 Jul 2010 02:12:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>How to Integrate Skype and MythTV</title>
		<link>http://blog.alessiosignorini.com/2010/07/how-to-integrate-skype-and-mythtv/</link>
		<comments>http://blog.alessiosignorini.com/2010/07/how-to-integrate-skype-and-mythtv/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 02:12:40 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Internet & Search]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[mythtv]]></category>
		<category><![CDATA[skype]]></category>
		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=420</guid>
		<description><![CDATA[One of the things I am really confident will happen in the near future is an integration between our TV and phones. In the past years Skype and VoIP improved significantly but yet we have to see an example of seamless integration between those technologies. In my living room I have a big flat screen [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.gadgetrivia.com/photos/o/450-hook_pc_tv_achieve_thing.jpg" alt="Webcam Over TV" width="300" height="211" />One of the things I am really confident will happen in the near future is an integration between our TV and phones. In the past years <a title="Skype" href="http://www.skype.com" target="_blank">Skype</a> and <a title="Voice Over IP" href="http://en.wikipedia.org/wiki/Voice_over_IP" target="_blank">VoIP</a> improved significantly but yet we have to see an example of seamless integration between those technologies.</p>
<p>In my living room I have a big flat screen TV connected to Linux <a title="MythTV" href="http://www.mythtv.org" target="_blank">MythTV</a> server, which I use for recording and watching TV and DVDs.</p>
<p>Thanks to the long weekend I had some time to attach a webcam (VF0415 Live! Cam Vid. IM Ultra) to that computer, mount it over the TV, and make it work (nothing to do, really) with Skype.</p>
<p>It works great, but I still needed to get out of MythTV and use mouse/keyboard to access Skype and make calls. I am sure it would not be that hard to create a proper plugin to make MythTV work with the client-side Skype API, but it probably makes little sense now that they are about to release their <a title="SkypeKit" href="http://developer.skype.com/public/skypekit" target="_blank">SkypeKit</a> platform and I am sure someone will just convert the good SIP plugin for that.</p>
<p>Here is how you can add an entry in the Main Menu of MythTV to start Skype:</p>
<ul>
<li>Find and save somewhere on your disk a <a title="Skype Logo" href="http://www.testfreaks.com/blog/wp-content/uploads/2009/05/windowslivewriter50waysskypecanconnectyouwiththeworld-f205skype-logo-online-2.png" target="_blank">reasonably sized Skype logo</a> in PNG format</li>
<li>Add to &#8220;<em>/usr/share/mythtv/themes/&lt;your_theme&gt;/menu-ui.xml</em>&#8221; an entry like the following
<pre>&lt;state name="SKYPE"&gt;
&lt;imagetype name="watermark"&gt;
&lt;filename&gt;watermark/skype.png&lt;/filename&gt;
&lt;/imagetype&gt;
&lt;/state&gt;
</pre>
</li>
<li>Add to &#8220;<em>/usr/share/mythtv/themes/defaultmenu/mainmenu.xm</em>l&#8221; an entry like the following
<pre>&lt;button&gt;
   &lt;type&gt;SKYPE&lt;/type&gt;
   &lt;text&gt;Skype&lt;/text&gt;
   &lt;description&gt;Launch Skype&lt;/description&gt;
   &lt;action&gt;EXEC /usr/bin/skype&lt;/action&gt;
&lt;/button&gt;</pre>
</li>
</ul>
<p>Clearly you will have to change <em>&lt;your_theme&gt;</em> with the name of the theme you use (I use &#8220;Retro&#8221;), &#8220;<em>watermark/skype.png</em>&#8221; with the real location of your Skype logo and &#8220;<em>/usr/bin/skype</em>&#8221; with the location of your Skype executable (try with the command &#8220;<em>which skype</em>&#8221; if you do not know it), but everything else should work.</p>
<p>Restart MythTV and your new shiny Skype entry should appear at the bottom of the main menu. Clicking on it will stop MythTV and launch Skype. At first launch, maximize the Skype window with the mouse, then it will do it automatically. When you close Skype (for real, right-click on the systray icon and click close) it will go back to MythTV.</p>
<p>I am also fiddling with Lirc to allow to completely control Skype with the remote. It should not be too hard. I will update this post when/if I manage to do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/07/how-to-integrate-skype-and-mythtv/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NASDAQ or S&amp;P500 Components List: How to Download it from Yahoo! Finance</title>
		<link>http://blog.alessiosignorini.com/2010/05/nasdaq-or-sp500-components-list-how-to-download-it-from-yahoo-finance/</link>
		<comments>http://blog.alessiosignorini.com/2010/05/nasdaq-or-sp500-components-list-how-to-download-it-from-yahoo-finance/#comments</comments>
		<pubDate>Sun, 23 May 2010 23:55:40 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[NASDAQ]]></category>
		<category><![CDATA[S&P500]]></category>
		<category><![CDATA[stocks]]></category>
		<category><![CDATA[symbols]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=401</guid>
		<description><![CDATA[In many are trying to apply Machine Learning Algorithms to the stock market to learn and predict the fluctuation of stocks. Yahoo! Finance is of great help because allows you to download in simple CSV files price and volume of all the stocks going back a few years. The API is easy to use and [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 0px 5px 5px 0px;" src="http://lucidinvesting.files.wordpress.com/2009/10/stocks.jpg" alt="Stocks Ticker" width="189" height="136" />In many are trying to apply <a title="Machine Learning Algorithms" href="http://en.wikipedia.org/wiki/Machine_learning" target="_blank">Machine Learning Algorithms</a> to the stock market to learn and predict the fluctuation of stocks. <a title="Yahoo! Finance" href="http://finance.yahoo.com" target="_blank">Yahoo! Finance</a> is of great help because allows you to download in <a title="American Express Symbol Values" href="http://download.finance.yahoo.com/d/quotes.csv?s=AXP&amp;f=sl1d1t1c1ohgv&amp;e=.csv" target="_blank">simple CSV files</a> price and volume of all the stocks going back a few years.</p>
<p>The API is easy to use and to script but unfortunately there is often no list of symbols available to start with. Those lists exist on the sites of the markets (e.g., here is the <a title="NASDAQ Symbols List" href="http://www.nasdaq.com/screening/companies-by-name.aspx" target="_blank">one for NASDAQ</a>) but they are hard to piece up together.</p>
<p>Luckily, with a could of lines of bash it is possible to create one from the list of components of the <a title="NASDAQ on Yahoo! Finance" href="http://finance.yahoo.com/q?s=^IXIC" target="_blank">NASDAQ</a> or <a title="S&amp;P500 on Yahoo! Finance" href="http://finance.yahoo.com/q?s=^GSPC" target="_blank">S&amp;P500</a>. The following is the code necessary:<br />
<code><br />
for p in $(seq 0 50 2739); do<br />
&nbsp; &nbsp; wget -O - "http://download.finance.yahoo.com/d/quotes.csv?s=@%5EIXIC&amp;f=sl1d1t1c1ohgv&amp;e=.csv&amp;h=$p";<br />
done &gt;&gt; /tmp/nasdaq.symbols<br />
</code></p>
<p>This script will loop in step of 50 from 0 to 2739 (numbers of element in the <a title="Components List of NASDAQ" href="http://finance.yahoo.com/q/cp?s=^IXIC&amp;c=0" target="_blank">components list of NASDAQ</a>) and downloading the list of symbols in each page and concatenating into the file <em>/tmp/nasdaq.symbols</em>.</p>
<p>The URL to download can be found at the bottom in pages list <a title="Components List of NASDAQ" href="http://finance.yahoo.com/q/cp?s=^IXIC&amp;c=1" target="_blank">this one</a> and you just need to substitute the <em>&amp;h=50</em> with <em>&amp;h=$p</em>, which is the iterator variable.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/05/nasdaq-or-sp500-components-list-how-to-download-it-from-yahoo-finance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps Traffic data is crowd-sourced through cell-phones&#8217; Google Apps</title>
		<link>http://blog.alessiosignorini.com/2010/05/google-maps-traffic-data-is-crowd-sourced-through-cell-phones-google-apps/</link>
		<comments>http://blog.alessiosignorini.com/2010/05/google-maps-traffic-data-is-crowd-sourced-through-cell-phones-google-apps/#comments</comments>
		<pubDate>Wed, 19 May 2010 13:33:42 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Crowd-sourcing]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[Maps]]></category>
		<category><![CDATA[Traffic]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=396</guid>
		<description><![CDATA[Google Maps have been able to display traffic conditions, even on small road, for quite a while. How does Google know that? The technology behind it is very interesting. They use GPS/time data sent back from people using Google Maps Apps on their phones (iPhones, Blackberry, Android, &#8230;). At regular intervals the phone sends to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.alessiosignorini.com/wp-content/uploads/2010/05/google-maps-traffic-san-francisco.png"><img class="alignleft size-medium wp-image-397" style="margin: 0px 5px 5px 0px" title="google-maps-traffic-san-francisco" src="http://blog.alessiosignorini.com/wp-content/uploads/2010/05/google-maps-traffic-san-francisco-300x229.png" alt="San Francisco Traffic on Google Maps " width="240" height="183" /></a>Google Maps have been able to display traffic conditions, even on small road, for quite a while. How does Google know that? The <a title="How Google Maps gets Traffic Data" href="http://googleblog.blogspot.com/2009/08/bright-side-of-sitting-in-traffic.html" target="_blank">technology behind it</a> is very interesting.</p>
<p>They use GPS/time data sent back from people using <a title="Google Maps Apps" href="http://www.google.com/mobile/maps/" target="_blank">Google Maps Apps</a> on their phones (iPhones, Blackberry, Android, &#8230;).</p>
<p>At regular intervals the phone sends to Google its <a title="Global Positioning System" href="http://en.wikipedia.org/wiki/Global_Positioning_System" target="_blank">GPS coordinates</a> and with simple calculations they can figure out how long it took to you to move from point A to point B.</p>
<p>If that happens to be on a road, and your speed seems to be the one of a car, they can use the data to estimate the traffic on the road, comparing the current data with historical ones.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/05/google-maps-traffic-data-is-crowd-sourced-through-cell-phones-google-apps/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Collected Wifi Data for Geo-location Purposes</title>
		<link>http://blog.alessiosignorini.com/2010/05/google-collected-wifi-data-for-geo-location-purposes/</link>
		<comments>http://blog.alessiosignorini.com/2010/05/google-collected-wifi-data-for-geo-location-purposes/#comments</comments>
		<pubDate>Mon, 17 May 2010 03:07:04 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Internet & Search]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[coordinates]]></category>
		<category><![CDATA[eye-fi]]></category>
		<category><![CDATA[Geolocation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[street view]]></category>
		<category><![CDATA[Wi-Fi Positioning System]]></category>
		<category><![CDATA[Wifi]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=379</guid>
		<description><![CDATA[In the past days there have been a lot of discussions about the public admission of collecting Wifi data from Google. This has been labeled as &#8220;mistake&#8221; but do not you wonder why Google was collecting those Wifi data in the first place? They were collecting MAC addresses and network SSIDs for geo-location purposes. Since [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" style="margin: 0px 5px 5px 0px" src="http://www.google.com/intl/en_ALL/images/srpr/logo1w.png" alt="Google Logo" width="220" height="76" />In the past days there have been a lot of discussions about the public admission of <a title="Google WiFi data collection" href="http://googleblog.blogspot.com/2010/05/wifi-data-collection-update.html" target="_blank">collecting Wifi data from Google</a>. This has been labeled as &#8220;mistake&#8221; but do not you wonder why Google was collecting those Wifi data in the first place? They were collecting <a title="MAC Address" href="http://en.wikipedia.org/wiki/MAC_address" target="_blank">MAC addresses</a> and <a title="Service Set ID" href="http://en.wikipedia.org/wiki/Service_set_(802.11_network)" target="_blank">network SSIDs</a> for geo-location purposes.</p>
<p>Since wireless networks are pretty popular, and the combination MAC/SSID is unique, associating those with the car&#8217;s GPS coordinates allowed Google to create a pretty detailed map. This map could then be used to figure out your coordinates given the MAC/SSIDs around you. The technology is generally called <a href="http://en.wikipedia.org/wiki/Skyhook_Wireless" target="_blank">Wi-Fi Positioning System</a> (WPS).</p>
<p>A possible use of that is the <a title="Google Maps Application" href="http://www.google.com/mobile/maps/" target="_blank">Google Maps</a> application. If the device does not have a GPS, it uses <a title="GSM Cells Triangulation" href="http://en.wikipedia.org/wiki/Mobile_phone_tracking" target="_blank">GSM cells triangulation</a> (cells coordinates have probably be obtained in a similar fashion) to figure out the location. While it generally works, it cannot be very accurate and often has a 2 miles range approximation. However, if some wireless networks are detected in the surroundings, they can be used to produce a much better estimation of the location.</p>
<p>These data are probably also sold/used by the <a title="Eye-Fi Automatic Geo-tagging" href="http://www.eye.fi/how-it-works/features/geotagging" target="_blank">Automatic Geo-Tagging</a> feature of the <a title="Eye-Fi" href="http://www.eye.fi" target="_blank">Eye-Fi</a> memory card. Not surprisingly, those cards are sold in <a title="Google Picasa Eye-Fi" href="http://www.eye.fi/google?postTabs=1" target="_blank">promotion with Google Picasa</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/05/google-collected-wifi-data-for-geo-location-purposes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Pages Language Classification: Bayes, Characters and n-grams</title>
		<link>http://blog.alessiosignorini.com/2010/03/web-pages-language-classification/</link>
		<comments>http://blog.alessiosignorini.com/2010/03/web-pages-language-classification/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 14:23:43 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Internet & Search]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[characters frequency]]></category>
		<category><![CDATA[language classification]]></category>
		<category><![CDATA[n-grams]]></category>
		<category><![CDATA[naive bayes]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=360</guid>
		<description><![CDATA[Most search engines start focusing on only one language (e.g., English) because it is simpler, requires almost no characters encoding, and has a wide audience. Wherever you want to index only pages written in English or support all the language of the world, a fast page language classification is one of the first tasks that [...]]]></description>
			<content:encoded><![CDATA[<p>Most search engines start focusing on only one language (e.g., <a title="English Alphabet" href="http://en.wikipedia.org/wiki/English_alphabet" target="_blank">English</a>) because it is simpler, requires almost <a title="Latin Alphabet" href="http://en.wikipedia.org/wiki/Latin_alphabet" target="_blank">no characters encoding</a>, and has a wide audience. Wherever you want to index only pages written in English or support all the language of the world, a fast page language classification is one of the first tasks that you will have to deal with.</p>
<p>Simple word-based classification techniques like <a title="Naive Bayes Classification" href="http://en.wikipedia.org/wiki/Naive_bayes" target="_blank">Naive Bayes</a> will do the trick but require a very big training set especially for the foreign languages. Even if in the last years memory and processing power became less and less expensive, they are not free and especially in a startup you may need to optimize every single function.</p>
<p>For this reason, you may want to consider <a title="Classification of natural language based on character frequency" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.5806&amp;rep=rep1&amp;type=pdf" target="_blank">characters classification</a>. In its simplest form, you just want to compute the <a title="Letter Frequency" href="http://en.wikipedia.org/wiki/Letter_frequency" target="_blank">frequency</a> in which alphabet characters appear in each language and then compute the distance (e.g., geometric distance) between the text and your models. The memory requirement of this solution are very small (i.e., a float for each of the 26 letters) and CPU can be easily bounded as well (e.g., you can stop after N characters of the input text) trading off precision for speed.</p>
<p>If that is not enough, <a title="N-gram based text categorization" href="http://www.dcs.fmph.uniba.sk/diplomovky/obhajene/getfile.php/Ng-based-tc.pdf?id=1&amp;fid=3&amp;type=application%2Fpdf" target="_blank">n-grams of characters</a> (e.g., sequences of 2 or 3 adjacent characters) will probably work even better but require an higher memory footprint.</p>
<p>The following graph shows the <a title="Letters Distribution across European Languages" href="http://blog.alessiosignorini.com/wp-content/uploads/2010/03/letters-distribution-across-languages.png" target="_blank">frequency of the alphabet letters</a> across the 5 most common European languages. For some letters the difference in usage is pretty high, e.g., the letter &#8220;A&#8221; is used twice as much in Spanish than in German while &#8220;H&#8221; is frequently used in German and English but almost never used in the other languages.</p>
<p style="text-align: center;"><a href="http://blog.alessiosignorini.com/wp-content/uploads/2010/03/letters-distribution-across-languages.png"></a><a href="http://blog.alessiosignorini.com/wp-content/uploads/2010/03/letters-distribution-across-languages.png"><img class="aligncenter size-full wp-image-359" title="Distribution of Alphabet Letters across European Languages" src="http://blog.alessiosignorini.com/wp-content/uploads/2010/03/letters-distribution-across-languages.png" alt="Distribution of Alphabet Letters across European Languages" width="507" height="281" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/03/web-pages-language-classification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Update Flash Player on Apple TV</title>
		<link>http://blog.alessiosignorini.com/2010/03/how-to-update-flash-player-on-apple-tv/</link>
		<comments>http://blog.alessiosignorini.com/2010/03/how-to-update-flash-player-on-apple-tv/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:07:03 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[3.0.2]]></category>
		<category><![CDATA[Apple TV]]></category>
		<category><![CDATA[Boxee]]></category>
		<category><![CDATA[Download]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=302</guid>
		<description><![CDATA[The folks at Boxee recently updated their player to version 0.9.20.10710. The new interface is pretty slick and installers are now available for Ubuntu, Apple TV, OS X and Windows. Unfortunately, after having installed it on Apple TV v3.0.2, it is not possible to play any TV Show due to an outdated Flash Player. No [...]]]></description>
			<content:encoded><![CDATA[<p>The folks at <a title="Boxee" href="http://www.boxee.tv" target="_blank">Boxee</a> recently updated their player to version 0.9.20.10710. The new interface is pretty slick and installers are now available for <a title="Boxee for Ubuntu 64bit" href="http://www.boxee.tv/signup/?download=ubuntu64" target="_blank">Ubuntu</a>, <a title="Boxee for Apple TV" href="http://support.boxee.tv/forums/49598/entries/42684" target="_blank">Apple TV</a>, <a title="Boxee for OS X" href="http://www.boxee.tv/signup/?download=macosx" target="_blank">OS X</a> and <a title="Boxee for Windows" href="http://www.boxee.tv/signup/?download=windows" target="_blank">Windows</a>.</p>
<p>Unfortunately, after having installed it on <a title="Apple TV v3.0.2 DMG" href="http://mesu.apple.com/data/OS/061-7495.20100210.TAVfr/2Z694-6013-013.dmg" target="_blank">Apple TV v3.0.2</a>, it is not possible to play any TV Show due to an outdated <a title="Adobe Flash Player" href="http://get.adobe.com/flashplayer/" target="_blank">Flash Player</a>. No worries, here is how to unlock the Flash magic:</p>
<ol>
<li>SSH into your Apple TV<br />
<code>ssh frontrow@&lt;ip_address&gt;</code></li>
<li>Go into the temporary directory<br />
<code>cd /tmp</code></li>
<li>Download the latest version of Flash Player for OS X<br />
<code>wget 'http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_osx_ub.dmg'</code></li>
<li>Mount the DMG file<br />
<code>sudo hdiutil attach install_flash_player_osx_ub.dmg</code></li>
<li>Go into the Internet Plugin Directory<br />
<code>cd "/Library/Internet\ Plug-Ins/"</code></li>
<li>Install the new Flash Player<br />
<code>sudo pax -r -z -f "/Volumes/Install\ Flash\ Player\ 10\ UB/Adobe\ Flash\ Player.pkg/Contents/Archive.pax.gz"</code></li>
</ol>
<p>Now restart your Apple TV and enjoy watching movies on Boxee (if the CPU is powerful enough).</p>
<p>In this guide I assumed you already unlocked your AppleTV using a <a title="Apple TV Patchstick" href="http://wiki.awkwardtv.org/wiki/Patchstick" target="_blank">Patchstick</a>, which will allow you to install Boxee and other programs as well as loading an <a title="Secure Shell" href="http://en.wikipedia.org/wiki/Secure_Shell" target="_blank">SSH</a> server to allow remote connection. You can easily create a Patchstick using <a title="ATV Usb Creator" href="http://code.google.com/p/atvusb-creator/" target="_blank">atvusb-creator</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/03/how-to-update-flash-player-on-apple-tv/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Reiser4 Performances on Ubuntu 9.10</title>
		<link>http://blog.alessiosignorini.com/2010/02/reiser4-performances/</link>
		<comments>http://blog.alessiosignorini.com/2010/02/reiser4-performances/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 02:24:45 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Comparison]]></category>
		<category><![CDATA[Disk]]></category>
		<category><![CDATA[ext4]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[jfs]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[performances]]></category>
		<category><![CDATA[Reiser4]]></category>
		<category><![CDATA[ReiserFS]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=277</guid>
		<description><![CDATA[Since its debut in 2004, there is a lots of controversy on Reiser4, the game-changing file-system developed by Namesys. It has been available for Linux for quite a while and there are great reviews on the Internet, but most distribution do not include it as an option by default, including Ubuntu Karmic 9.10. Since the [...]]]></description>
			<content:encoded><![CDATA[<p>Since its debut in 2004, there is a lots of <a title="Why Reiser4 Is Not in the Kernel" href="http://kerneltrap.org/node/6844" target="_blank">controversy on Reiser4</a>, the game-changing file-system developed by <a title="Namesys" href="http://en.wikipedia.org/wiki/Namesys">Namesys</a>. It has been available for Linux for quite a while and there are <a title="Performances of Reiser4 on Bonnie++" href="http://kerneltrap.org/node/8079" target="_blank">great reviews</a> on the Internet, but most distribution do not include it as an option by default, including Ubuntu Karmic 9.10.</p>
<p>Since the performances of my loyal Dell x300 are disk bounded, and I had success improving them using <a title="SquashFS" href="http://en.wikipedia.org/wiki/SquashFS" target="_blank">SquashFS</a> last year (unfortunately it&#8217;s read-only), I decided to do my own review of <a title="Reiser4" href="http://en.wikipedia.org/wiki/Reiser4" target="_blank">Reiser4</a>: I downloaded the source of my kernel (<em>apt-get source linux-image-2.6.31-20-generic</em>), its build dependencies (<em>apt-get build-dep linux-image-2.6.31-20-generic</em>), applied the right <a title="Reiser4 Patches for Linux Kernel" href="http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/" target="_blank">Reiser4 patch</a>, copied over my current <em>.config</em> file (disable the DEBUG symbols from the kernel or your image will be huge) from the <em>/boot </em>directory and a couple of minutes later I was already running <em><a title="Compile Kernel in Ubuntu" href="https://help.ubuntu.com/community/Kernel/Compile#Alternate%20Build%20Method:%20The%20Old-Fashioned%20Debian%20Way" target="_blank">make-kpkg</a></em>.</p>
<p>The goal of my first test was to compare Reiser4 with other well-known choices. I created a partition of about 5Gb  and copied over my /usr directory (3549986832 bytes) using rsync (<em>-aHAX</em>) for each file-system.</p>
<style>
table.fs_speed { border: 1px solid #CCCCCC; }
table.fs_speed td { text-align: center; width: 75px; }
</style>
<p><center></p>
<table class="fs_speed">
<tbody>
<tr>
<td><strong><span style="text-decoration: underline;">FS</span></strong></td>
<td><strong><span style="text-decoration: underline;">Time</span></strong></td>
<td><strong><span style="text-decoration: underline;">KB/s</span></strong></td>
<td><strong><span style="text-decoration: underline;">CPU %</span></strong></td>
<td><strong><span style="text-decoration: underline;">Disk (Gb)</span></strong></td>
</tr>
<tr>
<td><strong>ext4</strong></td>
<td>-</td>
<td>2983</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td><strong>jfs</strong></td>
<td>-</td>
<td>2817</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<td><strong>reiser3</strong></td>
<td>16:57</td>
<td>3412</td>
<td>20</td>
<td>3.4</td>
</tr>
<tr>
<td><strong>reiser4</strong></td>
<td>12:40</td>
<td>4570</td>
<td>25</td>
<td>3.4</td>
</tr>
</tbody>
</table>
<p></center></p>
<p>Using Reiser4 the CPU utilization was definitively higher, but the disk throughput increased significantly (+53% versus ext4). If the <em>ccreg40</em> plugin is used for file creation instead of the default <em>reg40</em>, <a title="Options on Reiser4 Partitions" href="http://www.spicygreeniguana.com/linux/145850-reiser4-reiserfs-v3-6-thread.html" target="_blank">Reiser4 offers many additional options</a> on how the files are laid out, if and how are compressed, and which compression/encryption algorithm is used. I tested the impact of some of its compression schemes (<em>conv</em>, <em>ultim</em> and <em>force</em>) and the two compression algorithms (<em>gzip1</em> and <em>lzo1</em>).</p>
<p>I was expecting the best compression performances from <a href="http://en.wikipedia.org/wiki/Lempel-Ziv-Oberhumer" title="Lempel-Ziv-Oberhumer" target="_blank">LZO1</a>, but instead got the highest throughput (+70% respect to ext4) at the expense of an higher CPU utilization (+70% respect to Reiser3):</p>
<p><center></p>
<table class="fs_speed">
<tr>
<td><b><u>Compression</u></b></td>
<td><b><u>Time</u></b></td>
<td><b><u>KB/s</u></b></td>
<td><b><u>CPU %</u></b></td>
<td><b><u>Disk (Gb)</u></b></td>
</tr>
<tr>
<td><b>conv</b></td>
<td>11:41</td>
<td>4954</td>
<td>30</td>
<td>3.8</td>
</tr>
<tr>
<td><b>force</b></td>
<td>11:33</td>
<td>5004</td>
<td>27</td>
<td>3.4</td>
</tr>
<tr>
<td><b>ultim</b></td>
<td>11:23</td>
<td>5085</td>
<td>28</td>
<td>3.6</td>
</tr>
</table>
<p></center></p>
<p>Using <a href="http://en.wikipedia.org/wiki/DEFLATE" title="Deflate" target="_blank">GZIP1</a> lead to the highest compression ratio (-48% vs. ext4) but a lower CPU utilization (-19% respect to LZO1) and a lower disk throughput (+42% over ext4):</p>
<p><center></p>
<table class="fs_speed">
<tr>
<td><b><u>Compression</u></b></td>
<td><b><u>Time</u></b></td>
<td><b><u>KB/s</u><br />
</b></td>
<td><b><u>CPU %</u></b></td>
<td><b><u>Disk (Gb)</u></b></td>
</tr>
<tr>
<td><b>conv</td>
<td>14:32</td>
<td>3972</td>
<td>27</td>
<td>2.7</td>
</tr>
<tr>
<td><b>force</td>
<td>13:56</td>
<td>4155</td>
<td>22</td>
<td>2.4</td>
</tr>
<tr>
<td><b>ultim</td>
<td>13:39</td>
<td>4241</td>
<td>23</td>
<td>1.8</td>
</tr>
</table>
<p></center></p>
<p>The results can be difficult to interpret: LZO1 seems to give the maximum disk throughput but there is less CPU available for applications and the files on disk are bigger (thus there is more to read), on the other hand, GZIP1 offers lower disk performances but there is half of the data to read from the disk.</p>
<p>To help me decide, I devised a comprehensive score (lower is better) which takes in account CPU, disk utilization and throughput, assuming that they all have the same importance:</p>
<p><br/></p>
<pre>
    score = (max_throughput / throughput) * (cpu / min_cpu) * (size / min_size)
</pre>
<p><br/></p>
<p>Using this formula the winning configuration is GZIP1 with &#8220;ultim&#8221; (1.38). With default options enabled Reiser3 and Reiser4 obtain a score of 2.82 and 2.63 respectively. Slightly better GZIP1 with &#8220;force&#8221; (1.79) and &#8220;conv&#8221; (2.59). LZO1 is best using &#8220;force&#8221; (2.59) instead of &#8220;ultim&#8221; (2.80) or &#8220;conv&#8221; (3.25).</p>
<p>Using Reiser4 with GZIP1 and &#8220;ultim&#8221; should provide a 42% increase in disk throughput and reduce by 48% the amount of data to read, making my disk about 2.95 times faster. Let&#8217;s hope its true.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/02/reiser4-performances/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Why Twitter Clients still lack Classification, Clustering and Ranking?</title>
		<link>http://blog.alessiosignorini.com/2010/02/why-twitter-clients-still-lack-classification-clustering-and-ranking/</link>
		<comments>http://blog.alessiosignorini.com/2010/02/why-twitter-clients-still-lack-classification-clustering-and-ranking/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 16:27:25 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Internet & Search]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Classification]]></category>
		<category><![CDATA[Clustering]]></category>
		<category><![CDATA[Ranking]]></category>
		<category><![CDATA[Seesmic]]></category>
		<category><![CDATA[TweetDeck]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=235</guid>
		<description><![CDATA[On Facebook the average user has about 130 friends and I believe that the average user of Twitter follows a similar number of people. Considering one or two Tweets per day from each, plus 10 or more from accounts like CNN or ABC, it&#8217;s reasonable to think that you would have to look at 250 [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://beta.tlists.com/static//images/apiusers/TweetDeck_logo.png" alt="TweetDeck logo" width="144" height="134" />On <a title="Facebook" href="http://www.facebook.com" target="_blank">Facebook</a> the <a title="Facebook Statistics" href="http://www.facebook.com/press/info.php?statistics" target="_blank">average user has about 130 friends</a> and I believe that the average user of <a title="Twitter" href="http://www.twitter.com" target="_blank">Twitter</a> follows a <a title="Average Number of Followers on Twitter" href="http://www.guardian.co.uk/technology/blog/2009/jun/29/twitter-users-average-api-traffic" target="_blank">similar number of people</a>.</p>
<p>Considering one or two Tweets per day from each, plus 10 or more from accounts like <a title="CNN" href="http://www.cnn.com" target="_blank">CNN</a> or <a title="ABC News" href="http://www.abcnews.com" target="_blank">ABC</a>, it&#8217;s reasonable to think that you would have to look at 250 messages per day. And if you follow more people, or automated services, this number is even higher.</p>
<p>Who has the time to read all this? I doubt you will keep looking at your Twitter stream the entire day looking for those few gems. And if you do, most days you will learn that Bob is sipping a cappuccino and Jane bought new boots, instead of something really useful.</p>
<p>So I wonder: why Twitter clients (e.g., <a title="TweetDeck" href="http://www.tweetdeck.com/" target="_blank">TweetDeck</a>, <a title="Seesmic" href="http://www.seesmic.com/" target="_blank">Seesmic</a>, &#8230;)  do not learn from  news products (e.g., <a title="Google News" href="http://news.google.com" target="_blank">Google News</a>) and start adding classification, cluestring and raking of followers/tweets?</p>
<p><a title="Classification" href="http://en.wikipedia.org/wiki/Supervised_learning" target="_blank">Classification</a> would help probabilistically flagging tweets I may care about (e.g., technology, search, &#8230;) from the ones I do not (e.g., you are watching Lost, eating a pizza, &#8230;) pretty much like the spam filters do in modern email clients.</p>
<p><a title="Clustering" href="http://en.wikipedia.org/wiki/Cluster_(computing)" target="_blank">Clustering</a> will put together all the tweets/discussions about the same topic (e.g., comments on the new movie of Bruce Willis) so I do not see them scattered in pieces here and there and I can quickly understand what is the general opinion on it.</p>
<p><a title="Ranking" href="http://en.wikipedia.org/wiki/Relevance_%28Information_Retrieval%29" target="_blank">Ranking</a> could then take advantage of both classification and clustering, understand who I care the most among the people I follow, and rank the tweets in my stream accordingly.</p>
<p>With <a title="41 Million Tweets per Day, 39% contain URLs" href="http://blog.alessiosignorini.com/2010/02/most-used-urls-shortener-on-twitter/" target="_blank">41 Million tweets per day</a> (39% containing link, for the majority spam) we could already take advantage of smarter Twitter Clients.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/02/why-twitter-clients-still-lack-classification-clustering-and-ranking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook&#8217;s Email could really Take Down Gmail Supremacy</title>
		<link>http://blog.alessiosignorini.com/2010/02/facebooks-email-could-really-take-down-gmail-supremacy/</link>
		<comments>http://blog.alessiosignorini.com/2010/02/facebooks-email-could-really-take-down-gmail-supremacy/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 02:49:56 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Internet & Search]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=193</guid>
		<description><![CDATA[According to some statistics from Google, people spend 4x more times surfing the Internet than driving their car. However, when asked what a browser is, they had no clue. The first Internet users were hackers which spent most of their time on terminals, chatting through IRC, using Pine for their emails and a few newsgroup. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.palm-desert.org/upload/file/50/FacebookLogo.jpg" alt="Facebook Logo" width="241" height="90" />According to <a title="Time Spent Online vs Driving" href="http://googleblog.blogspot.com/2009/10/what-is-browser.html" target="_blank">some statistics from Google</a>, people spend 4x more times surfing the Internet than driving their car. However, when asked <a title="What is a Browser?" href="http://www.youtube.com/watch?v=o4MwTvtyrUQ" target="_blank">what a browser is</a>, they had no clue. The first Internet users were hackers which spent most of their time on terminals, chatting through <a title="Internet Relay Chat" href="http://en.wikipedia.org/wiki/Internet_Relay_Chat" target="_blank">IRC</a>, using <a title="Pine Email Client" href="http://www.washington.edu/pine/" target="_blank">Pine</a> for their emails and a few newsgroup. The first <a title="Netscape Navigator" href="http://browser.netscape.com/" target="_blank">Netscape Navigator</a> was still very far.</p>
<p>Nowadays, the Internet is a platform and technologies like <a title="Ajax" href="http://en.wikipedia.org/wiki/Ajax_(programming)" target="_blank">Ajax</a> and <a title="Adobe Flash" href="http://get.adobe.com/flashplayer/" target="_blank">Flash</a> reduced (perhaps even canceled) the gap between online and local applications. Most of the people who use Internet every day, I am sure, do not know the difference between email, <a title="Microsoft Outlook" href="http://www.microsoft.com/outlook/" target="_blank">Outlook</a>, <a title="Gmail" href="http://www.gmail.com" target="_blank">Gmail</a> or Facebook Messages. In the recent years many providers are even pushing for <a title="Web OS" href="http://en.wikipedia.org/wiki/WebOS" target="_blank">Web OS</a>, with applications (e.g., Excel) and storage somewhere in the cloud.</p>
<p>Tech people (2% at most?) know that it is a bad idea. The rest of the world (98%) will almost not even notice the difference. After all, their spreadsheet looks the same even in a browser.</p>
<p>Today, I read about Facebook&#8217;s idea of <a title="Facebook's Email Platform" href="http://www.techcrunch.com/2010/02/05/facebooks-project-titan-a-full-featured-webmail-product/" target="_blank">launching their own email</a> platform: it is a genius idea.</p>
<p>Just a few days ago <a title="Facebook" href="http://www.facebook.com" target="_blank">Facebook</a> reached 400 Million users, and most of them log in every day. They definitively take a look at their Walls, the homepage, and check their messages. Facebook does not have to do anything more than setting up a few SMTP/IMAP servers, tell everybody that they now have an email &lt;username&gt;@fbmail.com and the deal is done.</p>
<p>I am sure that almost everyone who managed to create and use a Gmail account is on Facebook, so why bother checking both? Just sync  their address book the first time and goodbye Gmail. People do not even know what are the 8 Gb of space which Google is giving them for their emails, they do not use labels or stars, they not install addons nor use the <a title="Internet Message Access Protocol" href="http://en.wikipedia.org/wiki/Internet_Message_Access_Protocol" target="_blank">IMAP</a> capabilities..</p>
<p>For Facebook, this is a great move. They will be able to look into your email stream and figure out what your interests are to improve their <a title="Targeted Advertising" href="http://www.facebook.com/advertising/" target="_blank">targeted advertising</a>. You will spend even more time on their site. They already managed to keep everybody logged in through the chat, and now, with the introduction of email and a better search experience (a tailored web search), people will have no reason to leave.</p>
<p>They are already the <a title="Facebook Biggest Photo Sharing Website" href="http://www.insidefacebook.com/2009/02/23/facebook-increases-lead-as-top-photo-sharing-site/" target="_blank">biggest photo sharing website</a> of the world (Flickr who?). They are probably the biggest &#8220;forum&#8221; site of the world. Now they will also conquer email.</p>
<p>Good idea. Very good idea.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/02/facebooks-email-could-really-take-down-gmail-supremacy/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Use shared_clone() to Share Variables among Perl Threads</title>
		<link>http://blog.alessiosignorini.com/2010/02/use-shared_clone-to-share-variables-among-perl-threads/</link>
		<comments>http://blog.alessiosignorini.com/2010/02/use-shared_clone-to-share-variables-among-perl-threads/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 11:52:17 +0000</pubDate>
		<dc:creator>Alessio Signorini</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[shared]]></category>
		<category><![CDATA[shared_clone]]></category>
		<category><![CDATA[threads]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://blog.alessiosignorini.com/?p=134</guid>
		<description><![CDATA[Sharing variables across threads is generally very annoying in Perl. You have to declare the variable as shared before using it, and pay attention to the values you put in it. Things get especially messy with multi-level hashes, since you are obligated to pre-declare each level as shared. Luckily, there is a way to make [...]]]></description>
			<content:encoded><![CDATA[<p>Sharing variables across threads is generally very annoying in <a title="Perl" href="http://www.perl.org" target="_blank">Perl</a>. You have to declare the variable as shared before using it, and pay attention to the values you put in it.</p>
<p>Things get especially messy with multi-level hashes, since you are obligated to pre-declare each level as shared.</p>
<p>Luckily, there is a way to make things easier. If you upgrade <a title="Threads::Shared version 1.32" href="http://search.cpan.org/~jdhedden/threads-shared-1.32/shared.pm" target="_blank">threads::shared</a> to version 1.32 using CPAN and can afford to waste some memory for a little, you can create your objects normally and then create shared copies of them using <a title="Threads::Shared shared_clone() function" href="http://search.cpan.org/~jdhedden/threads-shared-1.32/shared.pm#shared_clone" target="_blank">shared_clone()</a>.</p>
<p>This function will recursively traverse the object, create a shared clone of each element in it, and return you a nice reference which you can pass around to your threads.</p>
<p>At that point, to save memory, you can <a title="Perl undef() function" href="http://perldoc.perl.org/functions/undex.html" target="_blank">undef()</a> the original object and keep only the clone.</p>
<p>This works great and flawlessly for read-only objects but it will still require some caution when you want to modify or add/append data to them since they need to be pre-declared as shared.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.alessiosignorini.com/2010/02/use-shared_clone-to-share-variables-among-perl-threads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
