<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
 <channel>
  <title>antirez weblog</title>
  <link>http://antirez.com</link>
  <description>antirez weblog</description>
  <language>it-it</language>
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/antirez" type="application/rss+xml" /><feedburner:emailServiceId>844731</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><item>
   <title>[Italian] Se leggi l'italiano e ti interessa cosa scrivo...</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/393078115/se-leggi-italiano-e-ti-interessa-cosa-scrivo.html</link>
   <guid isPermaLink="false">http://antirez.com/post/188</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;... allora dovresti aggiungere al tuo feed reader &lt;a href="http://zzimma.antirez.com/rss"&gt;l'indirizzo del feed&lt;/a&gt; del &lt;a href="http://zzimma.antirez.com"&gt;mio blog in italiano&lt;/a&gt; dove posto regolarmente. Anche qui spunteranno delle cose di tanto in tanto, ma in inglese e pensate per un pubblico piu' ampio. Grazie.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1299 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 19,5 visits/day)&lt;/div&gt;Posted at 12:10:06 &lt;a href="http://antirez.com/post/se-leggi-italiano-e-ti-interessa-cosa-scrivo.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/se-leggi-italiano-e-ti-interessa-cosa-scrivo.html"&gt;4 comments&lt;/a&gt; | &lt;a href="/print.php?postid=188"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=%5BItalian%5D+Se+leggi+l%27italiano+e+ti+interessa+cosa+scrivo...&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fse-leggi-italiano-e-ti-interessa-cosa-scrivo.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/se-leggi-italiano-e-ti-interessa-cosa-scrivo.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/393078115" height="1" width="1"/&gt;</description>
   <dc:date>2008-09-15T12:10:06+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fse-leggi-italiano-e-ti-interessa-cosa-scrivo.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/se-leggi-italiano-e-ti-interessa-cosa-scrivo.html</feedburner:origLink></item>
  <item>
   <title>Developing for the iphone using the open toolchain and SDK 2.0 headers</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/386959492/iphone-gcc-guide.html</link>
   <guid isPermaLink="false">http://antirez.com/post/187</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;&lt;h3&gt;Release notes&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;26 Sep: added warning about the need to install even a single free application from AppStore before to try this guide.&lt;/li&gt;

&lt;li&gt;22 Sep: now there are instructions about iPhones with 2.1 firmware (and SpringBoard cache), and some missing information is now included.&lt;/li&gt;

&lt;/ul&gt;
&lt;h3&gt;Introduction: iPhone development and the Open Toolchain&lt;/h3&gt;
It is possible to write native applications for the iPhone in Objective-C, but in order to be able to do so it is needed to have a Mac with the SDK downloaded from Apple. You need to have a MacOS installation, be a registered Apple developer, download the SDK, use the graphic environment, and so on.
&lt;br/&gt;&lt;br/&gt;

Fortunately there is an alternative, the Open Toolchain: it's a special GCC compiler able to emit code for the iPhone CPU (and other tools to create the final executable).
&lt;br/&gt;&lt;br/&gt;

The Open Toolchain can be used from your Linux box, this is how most developers are using it. This guide instead is about using the Open Toolchain &lt;b&gt;directly inside the iPhone&lt;/b&gt;!
&lt;br/&gt;&lt;br/&gt;

Actually the iPhone runs an operating system very similar to Unix, so there is a port of the compiler for the iPhone itself. It is possible to use SSH to work inside the iPhone, editing files with VIM, compiling with this GCC, and installing the resulting binary in order to test it on the real device.
&lt;br/&gt;&lt;br/&gt;

The following parts of this document will try to explain how to setup a development environment inside the iPhone, what you need to do, the files you need to download, and finally will provide an Hello World example in order to make you able to test something in little time, and to have a starting point to modify.
&lt;h3&gt;What you need&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;a Jailbroken iPhone. In order to Jailbreak check QuickPwn at &lt;a href="http://blog.iphone-dev.org/"&gt;blog.iphone-dev.org&lt;/a&gt;. &lt;b&gt;Warning: the jailbreaking process will make your phone able to run non-apple-signed binaries but may damage your phone. If you have problems and ruin your phone I'll not be responsible in any way&lt;/b&gt;.&lt;/li&gt;

&lt;li&gt;Cydia (this is an apt-get for the iPhone. Basically it is a program that installs other programs). Cydia will be installed by QuickPwn, just make sure to select it during the Jailbreaking process.&lt;/li&gt;

&lt;li&gt;SDK 2.0 headers. The GCC alone is not enough, you need the header files from the Apple iPhone SDK. Just download &lt;a href="http://www.demonoid.com/files/details/1613408/?rel=1220902039"&gt;this torrent&lt;/a&gt; or use instead &lt;a href="http://www.megaupload.com/?d=55ZNOCKI"&gt;this link from megaupload&lt;/a&gt;, what you need is the &lt;b&gt;sdk-2.0-headers.tar.gz&lt;/b&gt; inside. The alternative way to obtain the headers is to download the full SDK and extract the headers from the SDK image. It's pretty hard and boring, the torrent is a better solution for now.&lt;/li&gt;

&lt;li&gt;&lt;b&gt;Warning: YOU NEED TO INSTALL SOMETHING FROM THE APPSTORE!&lt;/b&gt; even a free application is ok, otherwise your iPhone for some reason will not execute your compiled binaries.&lt;/li&gt;

&lt;/ul&gt;
&lt;h3&gt;Ok, now I assume you did the jailbreak, and your iPhone is free :)&lt;/h3&gt;
Prefect, we are ready! Your iPhone was jailbroken and everything is working fine. You can see the new Cydia application in your iPhone.
&lt;br/&gt;&lt;br/&gt;

Now it's time to connect the phone to a Wifi network. Cydia needs to get stuff from the internet that will be installed in your phone. This is what you need to do:
&lt;ul&gt;&lt;li&gt;Open Cydia and install the &lt;b&gt;GCC&lt;/b&gt;. If you can't find it just use the &lt;i&gt;search&lt;/i&gt; feature of Cydia. Then instal &lt;b&gt;make&lt;/b&gt; and &lt;b&gt;ldid&lt;/b&gt; just like you installed GCC. (ldid is used to pseudo-sign binaries).&lt;/li&gt;

&lt;li&gt;Install SSH, and BossPref (Again from Cydia).&lt;/li&gt;

&lt;/ul&gt;
Well, first stage complete! Now you should be able to enter inside your
phone using SSH.
&lt;div class="emph"&gt;
Note that Cydia also installs a lot of other things when you run it the first time: all the standard Unix command line utilities including the 'make' command that we will use later to build our Hello World application.
&lt;/div&gt;
&lt;h3&gt;Let's try to enter inside the iPhone via SSH&lt;/h3&gt;
Ok, now exit from Cydia, Open BossPref and check the IP address of your phone, you can see it from the BossPref starting page. Also while in BossPref enable SSH.
&lt;br/&gt;&lt;br/&gt;

&lt;img src="http://antirez.com/misc/bosstool.jpg" /&gt;
&lt;br/&gt;&lt;br/&gt;

As you can see in the example the IP address of the wifi interface
is 192.168.1.101. So... we are ready to enter inside the iPhone!
From your Linux box try this (otherwise for windows users use
the program Putty):
&lt;pre class="code"&gt;
ssh root@192.168.1.101
&lt;/pre&gt;
Of course use your iPhone IP address instead of 192.168.1.101 ;)
If you are using Putty use the IP address as hostname and &amp;quot;root&amp;quot; as username.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;The default root password is &amp;quot;alpine&amp;quot;&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;

Use this to enter inside the iPhone.
It works? Uaaaaaaaaoo!!! this is a good start.
&lt;br/&gt;&lt;br/&gt;

Now it's time to transfer the SDK 2.0 headers inside the iPhone.
In order to do so use the SCP program (Linux users) or SFTP (Windows Users).
&lt;pre class="code"&gt;
scp sdk-2.0-headers.tar.gz root@192.168.1.101:/var
&lt;/pre&gt;
If you are a Windows user make sure to copy the file inside the &lt;b&gt;/var&lt;/b&gt; folder.
&lt;br/&gt;&lt;br/&gt;

Ok now enter again inside your phone via SSH and untar the headers.
This is the commands you need to perform:
&lt;pre class="code"&gt;
ssh root@192.168.1.101 # Or use Putty if you are a Window guy
cd /var
tar xvzf sdk-2.0-headers.tar.gz
mv include-2.0-sdk-ready-for-iphone include
&lt;/pre&gt;
Ok... now you should be ready to start compiling and testing applications.
&lt;h3&gt;Hello World!&lt;/h3&gt;
I hate tutorials explaining how to setup an environment without to give at least a little example, so here there is the source code and the steps to put an Hello World Objective-C application, build it, install it, run it.
While I'm at it I'll try to explain a bit how the hello world program actually works, and the anatomy of an iPhone application.
&lt;h3&gt;Anatomy of an iPhone application&lt;/h3&gt;
Fortunately Apple designers take the clean and easy path to put everything about a given application inside a directory in a &lt;i&gt;self contained&lt;/i&gt; world where the application will take the executable, icons, sounds, and generally all the data the application needs in order to run.
&lt;br/&gt;&lt;br/&gt;

For example our Hello World program will be installed inside the iPhone under
the /Applications/HelloWorld.app directory. This is the layout of the HelloWorld.app directory:
&lt;pre class="code"&gt;
# ls -l HelloWorld.app/&lt;br /&gt;&lt;br /&gt;-rw-r--r-- 1 root admin   108 Sep 11 12:45 Default.png
-rwxr-xr-x 1 root admin 14192 Sep 11 12:45 HelloWorld*
-rw-r--r-- 1 root admin   812 Sep 11 12:45 Info.plist
-rw-r--r-- 1 root admin     9 Sep 11 12:45 PkgInfo
-rw-r--r-- 1 root admin  2399 Sep 11 12:45 icon.png
&lt;/pre&gt;
This files are the minimal set of files you'll find inside a working application directory:
&lt;ul&gt;&lt;li&gt;Default.png is a PNG image that will be shown on the screen while the application is loading. In our example it's just an empty png.&lt;/li&gt;

&lt;li&gt;HelloWorld is the binary executable, the result of compiling our Objective-C source code.&lt;/li&gt;

&lt;li&gt;Info.plist is an xml file that specifies the program name, version, and other information about our program. This is how it looks like (it's not too complex):&lt;/li&gt;

&lt;pre class="code"&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC &amp;quot;-//Apple Computer//DTD PLIST 1.0//EN&amp;quot; &amp;quot;http://www.apple.
com/DTDs/PropertyList-1.0.dtd&amp;quot;&amp;gt;
&amp;lt;plist version=&amp;quot;1.0&amp;quot;&amp;gt;
&amp;lt;dict&amp;gt;
        &amp;lt;key&amp;gt;CFBundleDevelopmentRegion&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;en&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleExecutable&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;HelloWorld&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleIdentifier&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;org.iphone.HelloWorldapp&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleInfoDictionaryVersion&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;6.0&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleName&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;HelloWorld&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundlePackageType&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;APPL&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleShortVersionString&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;1.0.0&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleSignature&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;????&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;CFBundleVersion&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;1.0&amp;lt;/string&amp;gt;
        &amp;lt;key&amp;gt;SignerIdentity&amp;lt;/key&amp;gt;
        &amp;lt;string&amp;gt;Apple iPhone OS Application Signing&amp;lt;/string&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
&lt;/pre&gt;
&lt;/ul&gt;
&lt;br/&gt;&lt;br/&gt;

&lt;div class="emph"&gt;
You'll need to create a new Info.plist file for your new applications, but for the Hello World example this one is already good and working.
&lt;/div&gt;
&lt;ul&gt;&lt;li&gt;Pkg.info: I don't know what this file is supposed to do, I just grabbed it from another Hello World example and all it contains is the string &amp;quot;APPL????&amp;quot;.&lt;/li&gt;

&lt;li&gt;icon.png: Your application icon, this is what you will see in the springboard after the program is installed.&lt;/li&gt;

&lt;/ul&gt;
Basically all it's needed in order to install a new application is to copy the YourApplication.app directory inside the /Applications directory and restart the springboard using the command: &lt;b&gt;killall SpringBoard&lt;/b&gt;.
&lt;h3&gt;Source code layout&lt;/h3&gt;
What we seen in the last section is how the &lt;i&gt;installed application&lt;/i&gt; looks like. Actually we need to deal with another directory layout that's the one of our source code... but before to continue it's better that you &lt;a href="http://antirez.com/misc/iphone-helloworld-1.tar.gz"&gt;download our first hello world example&lt;/a&gt; and extract it on the iphone under the directory /var/mobile/src. The first step is to create the directory inside the iPhone so as usually enter via SSH inside your phone and write:
&lt;pre class="code"&gt;
mkdir /var/mobile/src
&lt;/pre&gt;
Then from your linux box (or using SFTP from Windows) use the following command to transfer the file inside /var/mobile/src:
&lt;/pre&gt;
scp iphone-helloworld-1.tar.gz root@192.168.1.101:/var/mobile/src
&lt;/pre&gt;
Then enter inside your iPhone and use the following commands to extract the example:
&lt;pre class="code"&gt;
cd /var/mobile/src
tar xvzf phone-helloworld-1.tar.gz
&lt;/pre&gt;
Now our first example is inside the phone! Ready to be compiled. But... try to stop your impatience for a moment and let's look a bit to our source structure:
&lt;pre class="code"&gt;
ls -l HelloWorld             /home/antirez/hack/iphone/article&lt;br /&gt;&lt;br /&gt;drwxr-xr-x 2 antirez antirez 4096 2008-09-11 12:47 build/
drwxr-xr-x 2 antirez antirez 4096 2008-09-11 12:47 Classes/
-rw-r--r-- 1 antirez antirez  812 2008-09-11 12:46 Info.plist
-rw-r--r-- 1 antirez antirez 2301 2008-09-11 12:46 Makefile
drwxr-xr-x 2 antirez antirez 4096 2008-09-11 12:46 Resources/
&lt;/pre&gt;
As you can see there are different directories and files:
&lt;ul&gt;&lt;li&gt;build: is a directory where thanks to the &lt;i&gt;make&lt;/i&gt; command targets the HelloWorld.app directory with all the stuff needed is created, so that &lt;i&gt;make install&lt;/i&gt; will be able to copy the final directory under /Applications.&lt;/li&gt;

&lt;li&gt;Classes: is where our source code lives (.m and .h files, Objective-C files are .m and not .c or something like this).&lt;/li&gt;

&lt;li&gt;Info.plist... you already know it from the HelloWorld.app directory.&lt;/li&gt;

&lt;li&gt;Makefile contains the make targets to compile the program, create the build, install, and so on.&lt;/li&gt;

&lt;li&gt;Resources are just data files needed to create the final build, in our case just the two images Default.png and icon.png.&lt;/li&gt;

&lt;/ul&gt;
&lt;h3&gt;It's time to test the example&lt;/h3&gt;
Ok, it's time to compile and try it... so inside your tell use the &amp;quot;cd&amp;quot; command to enter the HelloWorld directory and use this commands:
&lt;pre class="code"&gt;
make
make install
&lt;/pre&gt;
Since make install will also restart the springboard you will see the progress bar on your iPhone screen rotating for some seconds (it may even take almost a minute if you have a lot of apps installed) and finally you should see the &amp;quot;HelloWorld&amp;quot; application icon... launch it! This is what you should see:
&lt;br/&gt;&lt;br/&gt;

&lt;img src="http://antirez.com/misc/iphone-helloworld-1.jpg" /&gt;
&lt;div class="emph"&gt;
&lt;b&gt;Importante, 2.1 firware users read this:&lt;/b&gt; due to changes to the iPhone SpringBoard now the iPhone takes a cache of applications: just to restart the SpringBoard is not enough after &lt;i&gt;make install&lt;/i&gt; in order to show your new icon. Use the following command:
&lt;pre class="code"&gt;
/Applications/BossPrefs.app/Respring
&lt;/pre&gt;
(It's useless to say that you need BossPrefs installed to issue this command ;)
&lt;br/&gt;&lt;br/&gt;

This will force the iPhone to see that there is something of new inside /Applications.
&lt;/div&gt;
Herm... Are you impressed, aren't you?! :)
Ok it's lame but it is a good start! because the code is trivial and you can use it as a starting point for your hacks.
&lt;br/&gt;&lt;br/&gt;

&lt;h3&gt;Making the modify, recompile, install, test cycle a bit more fun&lt;/h3&gt;
&lt;br/&gt;&lt;br/&gt;

WORK IN PROGRESS...
&lt;h3&gt;Translations&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://taraska.ru/?p=5"&gt;Russian translation&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;
&lt;h3&gt;License&lt;/h3&gt;
&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/us/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc/3.0/us/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;This work is licensed under a &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/us/"&gt;Creative Commons Attribution-Noncommercial 3.0 United States License&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;Pagina creata il lunedÃ¬, 08 settembre 08 | &lt;a href="/print.php?pageid=187"&gt;stampa&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/386959492" height="1" width="1"/&gt;</description>
   <dc:date>2008-09-08T21:35:17+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpage%2Fiphone-gcc-guide.html</feedburner:awareness><feedburner:origLink>http://antirez.com/page/iphone-gcc-guide.html</feedburner:origLink></item>
  <item>
   <title>Liquida.it is out</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/376220987/liquida-it-is-out.html</link>
   <guid isPermaLink="false">http://antirez.com/post/186</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;I wrote my toughts about Liquida in Italian in my &lt;a href="http://zzimma.antirez.com/post/pensieri-sparsi-su-liquida.html"&gt;other blog&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1134 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 13,3 visits/day)&lt;/div&gt;Posted at 16:14:26 &lt;a href="http://antirez.com/post/liquida-it-is-out.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/liquida-it-is-out.html"&gt;2 comments&lt;/a&gt; | &lt;a href="/print.php?postid=186"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Liquida.it+is+out&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fliquida-it-is-out.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/liquida-it-is-out.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/376220987" height="1" width="1"/&gt;</description>
   <dc:date>2008-08-27T16:14:26+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fliquida-it-is-out.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/liquida-it-is-out.html</feedburner:origLink></item>
  <item>
   <title>Zzimma, my new blog</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/348150535/zzimma-my-new-blog.html</link>
   <guid isPermaLink="false">http://antirez.com/post/185</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;&lt;a href="http://zzimma.antirez.com"&gt;Zzimma is my new blog&lt;/a&gt; in addition to this one. It is in italian language and it is about everything. The barrier to post here was a bit too big to have just this blog: too tech, too english. So I'll use this blog to post tech stuff I want to share with the reddit community and everything else in the new blog. See you there.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2159 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 18,6 visits/day)&lt;/div&gt;Posted at 09:36:00 &lt;a href="http://antirez.com/post/zzimma-my-new-blog.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/zzimma-my-new-blog.html"&gt;4 comments&lt;/a&gt; | &lt;a href="/print.php?postid=185"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Zzimma%2C+my+new+blog&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fzzimma-my-new-blog.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/zzimma-my-new-blog.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/348150535" height="1" width="1"/&gt;</description>
   <dc:date>2008-07-28T09:36:00+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fzzimma-my-new-blog.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/zzimma-my-new-blog.html</feedburner:origLink></item>
  <item>
   <title>tar.gz is the best package format for complex programs</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/346560593/tar-gz-is-the-best-package-format-for-complex-programs.html</link>
   <guid isPermaLink="false">http://antirez.com/post/184</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;There are two kind of Unix programs. The first are programs with little dependencies that will compile out of the box with GCC and some basic library like zlib and other libs that are installed by default in almost every Unix distribution. For this kind of applications it's not so important to be distributed in binary form, the real problem is for complex programs with tons of dependencies, like firefox, amule, openoffice and a lot of less famous unix applications. To compile this applications is hard for the newbie and tedious for the expert Unix user so it's mandatory to have a binary distribution if the
project goal is to reach a big user base.
&lt;br/&gt;&lt;br/&gt;

In order to distribute complex programs in binary form there are two widely adopted alternatives, that are to ship a tar.gz with a statically linked binary and other library dependencies shipped with the program and linked at run time with some linker trick when you execute the program (this is what firefox does), or to ship a package for every kind of well known distribution out there.
&lt;br/&gt;&lt;br/&gt;

Of course there are projects that are doing both, that is the best solution but
to do so requires a lot of work. The point of this article is that projects that need to select just one binary shipping method &lt;b&gt;should choose the all-inside-tar-gz&lt;/b&gt;, and for good reasons.
&lt;br/&gt;&lt;br/&gt;

The tar.gz will work almost everywhere, all it's needed is to download it, unpack everywhere and execute the program: done! it is as simple as what happens with windows programs like uTorrent. It makes very easy to run different versions of the same program in the same box, this will encourage
users to try beta versions and give feedbacks for example. It is also much
simpler even from the point of view of the developers: to handle all the
major distributions out there is hard so basically in order to provide
distribution specific packages developers need to do a lot of work (and usually this is not possible) or use the help of the community
(that will give you very little quality control). And likely you will not covery 100% of users even with the best of the efforts.
&lt;br/&gt;&lt;br/&gt;

What I think is that the Unix world really need a standard way of packaging
applications that will run out of the box with everything inside the binary
directory, but while this is not still possible at least big projects authors
should be encouraged to ship easy to run binary packages with everything inside
the tar.gz.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2025 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 17,2 visits/day)&lt;/div&gt;Posted at 14:00:15 &lt;a href="http://antirez.com/post/tar-gz-is-the-best-package-format-for-complex-programs.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/tar-gz-is-the-best-package-format-for-complex-programs.html"&gt;4 comments&lt;/a&gt; | &lt;a href="/print.php?postid=184"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=tar.gz+is+the+best+package+format+for+complex+programs&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Ftar-gz-is-the-best-package-format-for-complex-programs.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/tar-gz-is-the-best-package-format-for-complex-programs.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/346560593" height="1" width="1"/&gt;</description>
   <dc:date>2008-07-26T14:00:15+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Ftar-gz-is-the-best-package-format-for-complex-programs.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/tar-gz-is-the-best-package-format-for-complex-programs.html</feedburner:origLink></item>
  <item>
   <title>Smuvi.com esperimento social</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/300788970/smuvi-com-esperimento-social.html</link>
   <guid isPermaLink="false">http://antirez.com/post/183</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Assieme ad altri 4 amici abbiamo messo su &lt;a href="http://smuvi.com"&gt;smuvi.com&lt;/a&gt;
Siamo appassionati di cinema ma anche programmatori... questo e'
cio' che ne e' venuto fuori.
&lt;br/&gt;&lt;br/&gt;

Noi siamo contenti del risultato, e voi? :)&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1721 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 9,8 visits/day)&lt;/div&gt;Posted at 22:50:28 &lt;a href="http://antirez.com/post/smuvi-com-esperimento-social.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/smuvi-com-esperimento-social.html"&gt;17 comments&lt;/a&gt; | &lt;a href="/print.php?postid=183"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Smuvi.com+esperimento+social&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fsmuvi-com-esperimento-social.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/smuvi-com-esperimento-social.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/300788970" height="1" width="1"/&gt;</description>
   <dc:date>2008-05-29T22:50:28+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fsmuvi-com-esperimento-social.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/smuvi-com-esperimento-social.html</feedburner:origLink></item>
  <item>
   <title>What we lost (now that web programming is mainstream)</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/274221921/what-we-lost.html</link>
   <guid isPermaLink="false">http://antirez.com/post/182</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Something like eight years ago I lost my job at &lt;a href="http://en.wikipedia.org/wiki/Linuxcare"&gt;Linuxcare&lt;/a&gt; since they simply closed the European operations. I was a security / system programming /embedded guy there together with a few friends of mine that were (and are) very smart developers, but we all ended without a job.
&lt;br/&gt;&lt;br/&gt;

Since I'm from Sicily and I didn't liked the idea to live in the north of Italy I had to become a freelance developer (that turned out being a very fortunate thing for me), and the only market where it was possible to make money was web programming in my area: this was very sad for me since I had a background in system programming, very high level programming languages and algorithms and most of my work was with C, Scheme and Tcl at the time (now I use C and Ruby instead): to switch to web programming and PHP was like shooting my technical-self, but the bills were there so I did it: back then web programming was regarded as awkward from the skilled programming community.
&lt;br/&gt;&lt;br/&gt;

It was mostly a boring task about constructing web interfaces with a DB as back end, and the actual data processing (that's the computer science part of algorithms and great code) was minimal.
&lt;h3&gt;Now web programming is mainstream&lt;/h3&gt;
... and fortunately it's better than it was ten years ago: now web applications are much more an art involving the ability to design nice user interfaces and about picking the right features. Still what happens under the hood of web applications is many times not interesting enough: take reddit or even a much more complex application like ebay, if you take away scalability I bet it is very hard to discover some very cool algorithm inside.
&lt;br/&gt;&lt;br/&gt;

The most interesting thing remains to write a framework :) (this is why there are so many frameworks around, people like to write them more than actual applications) unless you are lucky enough to deal with an application where the &lt;i&gt;web&lt;/i&gt; part is just the interface to the user, take Google for example, but this is of course a very little percentage of all web applications, including the ones having success.
&lt;br/&gt;&lt;br/&gt;

Fifteen/Twenty years ago to approach programming meant to start hacking with C, writing some cool demo accessing directly with VGA registers, learning algorithms and data structures. This is &lt;b&gt;the background were the star developers of today&lt;/b&gt; grown, now that everything is an hash table, some nice looking XHTML and few ugly but optimized SQL queries I wonder what the level of developers will be in ten years, and I've no reasons to be optimist.
&lt;br/&gt;&lt;br/&gt;

Not everything is bad of course, lately a lot of developers switched to
Ruby, Python and other elegant and much more abstract programming languages
so at least developers of today are exposed to things like functional
programming a lot more than in the early days and this is a great thing, still algorithms, data structures, and low level programming are marginal and it's hard to become a good developer without being exposed to this concepts.
&lt;br/&gt;&lt;br/&gt;

You can &lt;a href="http://reddit.com/info/6ggim/comments/"&gt;Vote/comment this article on reddit&lt;/a&gt;&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 14577 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 68,0 visits/day)&lt;/div&gt;Posted at 21:13:19 &lt;a href="http://antirez.com/post/what-we-lost.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/what-we-lost.html"&gt;17 comments&lt;/a&gt; | &lt;a href="/print.php?postid=182"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=What+we+lost+%28now+that+web+programming+is+mainstream%29&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fwhat-we-lost.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/what-we-lost.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/274221921" height="1" width="1"/&gt;</description>
   <dc:date>2008-04-20T21:13:19+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fwhat-we-lost.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/what-we-lost.html</feedburner:origLink></item>
  <item>
   <title>The missing opensource software for web development: a scalable database</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/267031390/missing-scalable-opensource-database.html</link>
   <guid isPermaLink="false">http://antirez.com/post/181</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;With the recent presentation of the latest google service called &lt;a href="http://appengine.google.com/"&gt;Google App Engine&lt;/a&gt;, it is even more clear that
there is a single very important missing opensource solution to write
scalable and reliable web applications: &lt;b&gt;a scalable, redundant relational database&lt;/b&gt; that is as simple to use as to buy N cheap PCs linked together via LAN running this DB system that makes it easy to add more servers as needed.
&lt;br/&gt;&lt;br/&gt;

To scale the http servers side of a web application is trivial, expecially
if you avoid to take state in the server itself avoiding sessions: every
web server is just a copy of all the other one with a balancer on top that
makes sure the load is dispatched among your http servers.
&lt;br/&gt;&lt;br/&gt;

Instead for the DB back end there is no easy solution: MySQL sucks at this and PostgreSQL is not better AFAIK. They are simply hard to use as a cluster that automagically take care of growing load and data redundancy problems.
&lt;br/&gt;&lt;br/&gt;

We really need a simple to use solution that just let us to add/remove servers as needed, and of course able to handle the failure of some PC in the cluster. Something that allows to remove the server and add a new one, tell the cluster of what is happening and it will resync the new machine (or the fixed one) in background without downtimes.
&lt;br/&gt;&lt;br/&gt;

It does not matter even if it is not a fully features ANSI SQL, something like GQL or even simpler can be enough for most developers, but we really need it in the future because the current LAMP architecture simply does not scale well in a transparent way.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Edit:&lt;/b&gt; my friend &lt;a href="http://www.welton.it/davidw/"&gt;David Welton&lt;/a&gt; pointed out that   &lt;a href="http://www.erlang.org/doc/apps/mnesia/index.html"&gt;Mnesia&lt;/a&gt; looks interesting but the fact that it's not remotely close to sql, and has some limitations on data size are big problems.
&lt;br/&gt;&lt;br/&gt;

Also it's worth to remember what are the problems with MySQL cluster: the data set can't be larger than the RAM of the PC, not all the nodes are the same, there is a Master that is a single point of failure, and it does not auto-sync in a transparent way when you add servers.
&lt;div class="emph"&gt;
If you like this article vote it on &lt;a href="http://reddit.com/r/programming/info/6f5cr/comments/"&gt;reddit&lt;/a&gt;.
&lt;/div&gt;&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 11621 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 51,5 visits/day)&lt;/div&gt;Posted at 15:40:23 &lt;a href="http://antirez.com/post/missing-scalable-opensource-database.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/missing-scalable-opensource-database.html"&gt;41 comments&lt;/a&gt; | &lt;a href="/print.php?postid=181"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=The+missing+opensource+software+for+web+development%3A+a+scalable+database&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fmissing-scalable-opensource-database.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/missing-scalable-opensource-database.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/267031390" height="1" width="1"/&gt;</description>
   <dc:date>2008-04-09T15:40:23+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fmissing-scalable-opensource-database.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/missing-scalable-opensource-database.html</feedburner:origLink></item>
  <item>
   <title>Friends</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/259165126/friends.html.html</link>
   <guid isPermaLink="false">http://antirez.com/post/179</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;This is a list of sites of friends of mine, in the hope that this will help
their sites to appear in the search result page of search engines if
searched directly by name:
&lt;br/&gt;&lt;br/&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href="http://3nt.it"&gt;Fabio Pitrola&lt;/a&gt;&lt;/li&gt;

&lt;li&gt;&lt;a href="http://estercavalcanti.com"&gt;Ester Cavalcanti&lt;/a&gt;&lt;/li&gt;

&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogpostinfo"&gt;Pagina creata il giovedÃ¬, 27 marzo 08 | &lt;a href="/print.php?pageid=179"&gt;stampa&lt;/a&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/259165126" height="1" width="1"/&gt;</description>
   <dc:date>2008-03-27T19:42:23+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpage%2Ffriends.html.html</feedburner:awareness><feedburner:origLink>http://antirez.com/page/friends.html.html</feedburner:origLink></item>
  <item>
   <title>Asus EEE PC, not just a little and cheap laptop</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/244056912/Asus-EEE-PC-not-just-a-little-and-cheap-laptop.html</link>
   <guid isPermaLink="false">http://antirez.com/post/177</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;&lt;h3&gt;When I saw the 100$ laptop...&lt;/h3&gt;
My first thoughts was &lt;i&gt;cool! this is going to be a huge hit in the developed countries, apart from its future about a cheap laptop for childrens in poor countries&lt;/i&gt;.
&lt;br/&gt;&lt;br/&gt;

The low price and the big portability, the native support for
wifi stimulated my dreams about this little computers that were almost as
easy to carry around as cellular phones but much more usable, with a fairly
big screen and a real keyboard. The low cost and the fact that in many
cities there are a lot of open wifi around meant that everybody
in principle could have a computer and be connected, everywhere. Every student can afford to buy a 300$ (this was the planned price if I remember correctly to buy the 100$ PC if you lived in developed countries) that let him to surf the web, chat with people and so on.
&lt;h3&gt;The EEEpc&lt;/h3&gt;
&lt;img class="leftimage" src="http://antirez.com/blogdata/177/asus_eeepc.jpg" alt="Asus EEEPC" title="Asus EEEPC"/&gt;
Compared to the EEEpc, tha OLPC (One Laptop Per Child, OLPC, is the real name of the informally known as 100$ PC) was not so cool even if equally priced, this
was due to the fact that the price of the OLPC in the developed countries
had to buy laptops for free to poor childrens. Because the EEEpc instead is
a pure for profit thing it offers an impressive set of features, like a
decent 900Mhz Celeron CPU, 512Mb of RAM, 3 usb ports, a nice integrated webcam that
is much better than many cheap webcams you can find around, and many other interesting features.
&lt;br/&gt;&lt;br/&gt;

Still the real question is not just about price and portability, but: we really need a laptop that's &lt;i&gt;so little&lt;/i&gt; at the point that the keyboard is a bit uncomfortable before a bit of training? After all there are already full
featured laptops with great screens and keyboards, while more expansive and
more weight they are after all just better in every other point of view. Still I and a lot of people already holding this cool laptops purchased the EEEpc, and for a good reason.
&lt;h3&gt;Normal 15.4&amp;quot; laptops are actually just trasportable computers&lt;/h3&gt;
The real problem is that we are humans driving cars, taking flights, walking
kilometers for streets to move from one point of the city to another one, so
even a factor of two about size and weight will do a lot of difference, at the
point that after I experimented for some day the EEEpc I'm not going to think
at my Toshiba laptop as &lt;b&gt;a portable computer&lt;/b&gt; anymore: it is actually &lt;b&gt;just a transportable computer&lt;/b&gt;.
&lt;h3&gt;Indoor portability&lt;/h3&gt;
What I mean is that actually even if we don't consider that to carry 2,5 Kg of weight around is not exactly cool (the EEEpc weights 0,9 Kg battery included instead, without to consider that the transformer is much light than a laptop transformer) old laptops don't have enough &lt;b&gt;indoor portability&lt;/b&gt;.
&lt;br/&gt;&lt;br/&gt;

The lack of indoor portability is evident if you look at people in airports with computers on their legs, or when you need to move in another room and take your standard laptop with you. It is simply not an object you can carry around without problems like you do with a cellular phone. The EEEpc instead is
the kind of object you can really carry around without problems, without additional hardware since everything is really important is there and the computer itself is designed to work well without the need of accessories.
&lt;br/&gt;&lt;br/&gt;

And yes... this makes a lot of difference and we should consider the EEEpc a new set of devices, not just small cheap class B laptops.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 4219 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 16,0 visits/day)&lt;/div&gt;Posted at 23:36:17 &lt;a href="http://antirez.com/post/Asus-EEE-PC-not-just-a-little-and-cheap-laptop.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/Asus-EEE-PC-not-just-a-little-and-cheap-laptop.html"&gt;9 comments&lt;/a&gt; | &lt;a href="/print.php?postid=177"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Asus+EEE+PC%2C+not+just+a+little+and+cheap+laptop&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2FAsus-EEE-PC-not-just-a-little-and-cheap-laptop.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/Asus-EEE-PC-not-just-a-little-and-cheap-laptop.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/244056912" height="1" width="1"/&gt;</description>
   <dc:date>2008-03-01T23:36:17+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2FAsus-EEE-PC-not-just-a-little-and-cheap-laptop.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/Asus-EEE-PC-not-just-a-little-and-cheap-laptop.html</feedburner:origLink></item>
  <item>
   <title>Tudulist now available in Italian language</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/236721710/175</link>
   <guid isPermaLink="false">http://antirez.com/post/175</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;&lt;a href="http://tudulist.com"&gt;Tudulist.com&lt;/a&gt; is now available in italian language, in order to switch from english to italian go to settings and choose italian as user interface language, then save settings and you are done. Spanish should came in some week along with new features.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1703 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 6,1 visits/day)&lt;/div&gt;Posted at 02:32:48 &lt;a href="http://antirez.com/post/175"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/175"&gt;discuss&lt;/a&gt; | &lt;a href="/print.php?postid=175"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Tudulist+now+available+in+Italian+language&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2F175"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/175"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/236721710" height="1" width="1"/&gt;</description>
   <dc:date>2008-02-18T02:32:48+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2F175</feedburner:awareness><feedburner:origLink>http://antirez.com/post/175</feedburner:origLink></item>
  <item>
   <title>What's wrong with CS research</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/235161083/174</link>
   <guid isPermaLink="false">http://antirez.com/post/174</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;I hardly write an article just to point somebody else article, but I think if you are in the field &lt;a href="http://unqualified-reservations.blogspot.com/2007/08/whats-wrong-with-cs-research.html"&gt;What's wrong with CS research&lt;/a&gt; is a must read.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1465 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 5,2 visits/day)&lt;/div&gt;Posted at 21:43:26 &lt;a href="http://antirez.com/post/174"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/174"&gt;discuss&lt;/a&gt; | &lt;a href="/print.php?postid=174"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=What%27s+wrong+with+CS+research&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2F174"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/174"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/235161083" height="1" width="1"/&gt;</description>
   <dc:date>2008-02-14T21:43:26+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2F174</feedburner:awareness><feedburner:origLink>http://antirez.com/post/174</feedburner:origLink></item>
  <item>
   <title>Tudulist.com new development will start in few weeks</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/233746513/173</link>
   <guid isPermaLink="false">http://antirez.com/post/173</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Probably if you are reading this blog you know about &lt;a href="http://tudulist.com"&gt;tudulist.com&lt;/a&gt;, an application that's 33% tudulist, 33% groupware, 33% calendar I developed some month ago in order to test a Ruby framework I wrote for myself and that eventually was put online for everybody to use.
&lt;br/&gt;&lt;br/&gt;

Well it's very likely that in few weeks the development will continue in a more serious way than before so if you are still using it like me it's time to ask for features :) Obvious things like RSS, notifications by email when events are near to expire and file attachments will be the first developments. Thank you!&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 1223 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 4,3 visits/day)&lt;/div&gt;Posted at 14:20:45 &lt;a href="http://antirez.com/post/173"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/173"&gt;1 comment&lt;/a&gt; | &lt;a href="/print.php?postid=173"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Tudulist.com+new+development+will+start+in+few+weeks&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2F173"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/173"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/233746513" height="1" width="1"/&gt;</description>
   <dc:date>2008-02-12T14:20:45+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2F173</feedburner:awareness><feedburner:origLink>http://antirez.com/post/173</feedburner:origLink></item>
  <item>
   <title>Why phone software sucks and how to fix it</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/221595313/why-phone-software-sucks-and-how-to-fix-it.html</link>
   <guid isPermaLink="false">http://antirez.com/post/172</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;If you are a software developer and you care about user interface design and
usability and smart features that make our life better, I bet you think that
most mobile phone software sucks.
&lt;br/&gt;&lt;br/&gt;

My Nokia phone for example is not able to complete words when I write SMS
messages. It is also not able to sort the list of names to which I can send
an SMS in order of frequency I sent them SMSs. It is also not possible to check the call duration of the last N calls.
&lt;br/&gt;&lt;br/&gt;

When I edit messages with T9, of all the words mapped to the same keystrokes,
it is not able to guess that if I write a lot of times the word &amp;quot;Tine&amp;quot;, and very rarely &amp;quot;time&amp;quot;, the next time it should present me &amp;quot;Tine&amp;quot; as first guess.
&lt;br/&gt;&lt;br/&gt;

Not only it lacks a lot of obvious features, &lt;b&gt;the user interface is also very slow&lt;/b&gt;, the development environment is a Windows-only SDK, it's buggy as Hell and it hangs when switching between GSM and 3G connection and so on.
&lt;h3&gt;Why phone software sucks?&lt;/h3&gt;
Usually in the software market it works this way: there is a problem to solve
like to create a good IRC client. A lot of people will write IRC clients, the
best clients will end winning in the market, so we will have few winners used
by many users. The next generation of IRC clients will start basing the work
on the ideas of this few cool software adding more interesting features, trying
to design a better UI, and so on, and again the few best will win.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;With phone software it works in another way because the software is actually bound with the hardware&lt;/b&gt;, you can write the software only if you are the hardware vendor... and guess what, there are few hardware vendors and are huge companies, not exactly the places where new fresh ideas will born.
&lt;br/&gt;&lt;br/&gt;

Individuals, small teams of developers, are not in the market, &lt;b&gt;even if phone software is not so an huge work&lt;/b&gt;, it is much more a matter of designing it well.
&lt;h3&gt;Splitting hardware vendors and software vendors&lt;/h3&gt;
What's needed in my opinion is to create a market similar to today's PC market. Hardware is separated from software. Imagine the following scenario: five years from now when you buy a phone you get the new Nokia-1000 that is simply not usable as it is, it comes with a cable you will use to load the software you like. Of course you are free to buy the phone with a pre-loaded software if you are not a geek...
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;What's important is that a phone like this is fully open, there is free documentation online and free development tools&lt;/b&gt; so that developers can write the whole software needed.
&lt;br/&gt;&lt;br/&gt;

The phone already comes with some kind of low-level firmware that is
able to make low level stuff without the developers need rewriting it every time, like:
&lt;ul&gt;&lt;li&gt;system calls to start a call&lt;/li&gt;

&lt;li&gt;system calls to send an SMS message&lt;/li&gt;

&lt;li&gt;call-backs called on incoming calls or SMSs&lt;/li&gt;

&lt;li&gt;capture an image from the camera&lt;/li&gt;

&lt;li&gt;detect orientation&lt;/li&gt;

&lt;li&gt;and so on...&lt;/li&gt;

&lt;/ul&gt;
Probably it makes sense that this firmware also exports some kind of SDL-alike library to control the display, the audio, read keystrokes from the keyboard
and so on, and even an (optional) toolkit with widgets already implemented that
the developers may not use if they want to implement their own toolkit.
&lt;br/&gt;&lt;br/&gt;

&lt;h3&gt;What about Android?&lt;/h3&gt;
It is just another big player? If so it will not mean freedom for small
teams to develop phone software from scratch. It is not clear to me if phone customers will be able to upload a new android-based firmware in an already purchased phone, &lt;b&gt;but if this happens, Android can be the starting point&lt;/b&gt; to split the hardware and software markets of mobile phones.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 4772 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 15,8 visits/day)&lt;/div&gt;Posted at 12:37:32 &lt;a href="http://antirez.com/post/why-phone-software-sucks-and-how-to-fix-it.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/why-phone-software-sucks-and-how-to-fix-it.html"&gt;12 comments&lt;/a&gt; | &lt;a href="/print.php?postid=172"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Why+phone+software+sucks+and+how+to+fix+it&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fwhy-phone-software-sucks-and-how-to-fix-it.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/why-phone-software-sucks-and-how-to-fix-it.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/221595313" height="1" width="1"/&gt;</description>
   <dc:date>2008-01-23T12:37:32+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fwhy-phone-software-sucks-and-how-to-fix-it.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/why-phone-software-sucks-and-how-to-fix-it.html</feedburner:origLink></item>
  <item>
   <title>Linux Kernel: just engineering without a vision?</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/170234192/linux-just-engineers-without-vision.html</link>
   <guid isPermaLink="false">http://antirez.com/post/169</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Yesterday I bought a Microsoft webcam: it's not an exception, like most of the stuff from Microsoft I had (very little, fortunately) something to do with in my
life it's a low quality product: all eye candy and little substance.
&lt;br/&gt;&lt;br/&gt;

However it has a good point, that is one of the main reasons I bought it: the Lifecam NX6000 is a device compatible with the &lt;b&gt;USB video class&lt;/b&gt; standard.
In brief USB is not just a low level bus, it also defines the way some class of devices communicate with the operating system: this is the reason why we don't need to install specific mouse drivers anymore and why most USB microphones will work out of the box.
&lt;br/&gt;&lt;br/&gt;

USB defines a device class for video devices, that is the UVC (USB Video Class)
that new webcams are starting to implement, so my webcam can work just using
the generic &lt;b&gt;uvcvideo&lt;/b&gt; Linux driver without to require a device-specific
driver, exactly like a mouse or an USB microphone.
&lt;h2&gt;Video For Linux 1.0 VS Video For Linux 2.0&lt;/h2&gt;
Actually the &lt;b&gt;uvcvideo&lt;/b&gt; diver works well with my camera, but this
driver supports &lt;b&gt;only&lt;/b&gt; the new video API of Linux, v4l2 (Video For Linux 2):
this means that the majority of the software currently available
can't work with my driver that dropped the support for v4l version 1.
&lt;br/&gt;&lt;br/&gt;

This is not the only driver without support for v4l1 (alias for
a lot of applications people are currently using). There was this
fantastic idea that everything was going to be converted in short time,
applications can be patched after all, and even that the support for
v4l1 itself was going to be completely dropped from the kernel soon.
&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://lists.berlios.de/pipermail/linux-uvc-devel/2006-February/000292.html"&gt;Check what this kernel developer is saying here...&lt;/a&gt;
&lt;pre class="code"&gt;
&amp;gt; No, I still haven't tried Ekiga (I'm going to test it when I have the
&amp;gt; time), but I still need to have the webcam working with all these other
&amp;gt; applications.
&amp;gt;
&amp;gt; Do you mean that all these applications use the v4l or v4l2 interface
&amp;gt; incorrectly?
&amp;gt;
&amp;gt; Do you have plans to have v4l1 compatibility in the driver?
&amp;gt;
&amp;gt; I still don't know what ioctls should be in a v4l2 driver with v4l1
&amp;gt; compatibility using v4l_compat_translate_ioctl()
&amp;gt; Do you know where I can find that list?
&amp;gt;
&amp;gt; Do you know of a good webcam USB driver that has good v4l1 compatibility
&amp;gt; using v4l_compat_translate_ioctl() ?
&amp;gt; I saw http://www.saillard.org/linux/pwc/ but it has both v4l1 and v4l2
&amp;gt; APIs.&lt;br /&gt;&lt;br /&gt;I don't see the point in adding V4L1 support as its due to be removed
from the kernel before too long (can't remember the exact proposed
kernel release but it may be 2.6.18).&lt;br /&gt;&lt;br /&gt;Peter
&lt;/pre&gt;
&lt;br/&gt;&lt;br/&gt;

I'm very impressed. We used the old v4l1 API for years and now there is the idea that this API can be dropped in short time without problems, that new drivers are not required to support it, and that there is no reason to build a &lt;b&gt;working&lt;/b&gt; compatibility layer (there is one that can't work since
the output image format is not one of the standard v4l1 formats but is MJPG
instead).
&lt;br/&gt;&lt;br/&gt;

Of course the v4l1 support &lt;b&gt;was not dropped in 2.6.18&lt;/b&gt; since it was like science fiction. The current situation basically is that if you get the
wrong webcam with drivers developed by the wrong people, you have a mostly
useless toy you can use just with few cam viewers using the 2.0 API and
some softwares already compatible with the new API like recent versions
of Egika and a few of others.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;This is a point of view perfectly right for engineers&lt;/b&gt;, but it means
to don't have any kind of vision. If you develop a kernel you should ask
yourself &amp;quot;What I'm doing for people using this system every day&amp;quot; before
to ask &amp;quot;what is the best API for video devices&amp;quot;. There is an incredibly
big failure in the Linux Kernel culture to create software that is
easy to use for the people that need to use it, all is about technical stuff
but what people need is supported, stable systems, where software of two
years ago will continue to work without patches even if you have a modern
webcam.
&lt;h2&gt;But Linux is getting better and better as desktop OS!&lt;/h2&gt;
True, but are you sure it is &lt;i&gt;Linux&lt;/i&gt;? If you take a FreeBSD install with KDE, Openoffice, Firefox, ..., it's going to be a good desktop experience exactly
like a similar Linux install: most of the progresses of &amp;quot;Linux&amp;quot; on desktop
are not about the kernel, they are about what is running on top of it.
&lt;br/&gt;&lt;br/&gt;

Still I think the Linux kernel is a better alternative than *BSD
or other Unix-like open source operating systems, for two reasons: &lt;b&gt;support&lt;/b&gt;, and &lt;b&gt;drivers&lt;/b&gt;.
&lt;br/&gt;&lt;br/&gt;

Because Linux took more momentum something like ten years ago it started
to have more developers, more money invested, more drivers, more forums,
more users, more support. It is strange but continuously changing the kernel
APIs (how many times a module implementing drivers for the XYZ device does not compile after few months because something changed in the API?) and
a non existent &lt;b&gt;stable binary API&lt;/b&gt; for modules, is going in the opposite
direction making support for devices harder.
&lt;h2&gt;A Stable API for binary drivers&lt;/h2&gt;
Ok let's try to be interested in what happens to users instead to think
just as engineering: with a stable binary API what you have is the following
scenario.
&lt;br/&gt;&lt;br/&gt;

The user bought a new device needing a device driver in order to work, and like it
happens a lot of times this driver is not already included in the kernel, or the included driver is too old to support this new USB product/vendor ID.
&lt;br/&gt;&lt;br/&gt;

Without a stable API the user needs to find the source code of the kernel,
download, compile (assuming it will build), insert the module.
&lt;br/&gt;&lt;br/&gt;

With a stable API the user can just download the driver for Linux 2.6 and
insert it: done.
&lt;br/&gt;&lt;br/&gt;

On the other side the driver developer is very motivated working on the driver,
all the work is invested in supporting the device better, not in upgrading
and creating new tar.gz just because the API &lt;b&gt;changed again&lt;/b&gt; (I used to
develop a device driver for an USB camera and recently I tried to take
a wifi driver I modified to support the &lt;i&gt;monitor mode&lt;/i&gt; up to date and
it was a pain both the times for this reason).
&lt;br/&gt;&lt;br/&gt;

Note that I'm not talking about closed source drivers for now. Even if we
take all GPLed a stable binary driver is already a great thing from the
point of view of the user.
&lt;h2&gt;What about closed source vendor provided drivers?&lt;/h2&gt;
One of the arguments against a stable binary driver is the following:
&lt;div class="emph"&gt;
Linux is more stable than Windows because the device drivers are more stable!
with a stable binary API vendors will produce closed source drivers for
Linux that will crash the system every five minutes.
&lt;/div&gt;
Is it true that Windows is instable because of drivers? After 9 years of using only Linux every day one month ago I started using Windows XP for a few hours every day: my girlfriend lives in Florence (north Italy) while I'm
currently in Catania (south Italy): MSN Live Messenger is what she used
in order to stay in touch with other people, and I had a Windows XP in dual
boot because it was installed when I purchased this laptop and I took
some space to take it in the disk (I'm a web developer and from time to time
I test applications in a real Windows environment).
&lt;br/&gt;&lt;br/&gt;

Result: a lot of the things I took for granted about Windows of 9 years
ago are no longer true. Windows XP hardly crashes in a way that
is up to the device drivers it is running: actually it mostly does not crash
at all and when something goes wrong it appears to be much more related
to the operating system.
&lt;br/&gt;&lt;br/&gt;

I don't thing vendor device drivers are less robust than open source drivers
that sometimes are written in spare time with little specification and testing.
For example my wifi card with wpa_supplicant hangs from time to time, and
&lt;b&gt;a reboot is needed&lt;/b&gt;, with Windows it works perfectly.
Another wifi usb dongle I use in Windows works very well supporting
ad-hoc networks, while with Linux it works not very well and ad-hoc
networks are not supported at all, and the list of devices working well
with Linux and not working well with Windows is of course very big.
&lt;br/&gt;&lt;br/&gt;

Add to this that most drivers are throw away software: a driver for a webcam
will be useful for few years, the vendor &lt;b&gt;needs&lt;/b&gt; to develop it if it want
to sell the device, but isn't it a waste of time that Linux kernel developers
will spend their time to write code that in few years will be nearly useless?
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;And&lt;/b&gt; closed source binary drivers will not stop everybody from producing GPL drivers:
for important parts of the system like for example the USB subsystem or the
IDE controller, and even for small devices like webcams where the vendor
driver sucks probably a GPL driver will be developed like it happens today.
&lt;br/&gt;&lt;br/&gt;

So I'm starting to belive that the Linux Kernel is not going in the right
direction from the point of view of the end user, and I guess the only thing
I can do for now is to try to spread this idea trying to start some kind
of conversation among interested people.
&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://programming.reddit.com/info/5yccm/comments/"&gt;You can vote this article on reddit&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;

&lt;i&gt;p.s. this blog used to be written in Italian, but this article is the first of the Big Switch to English, so feel free to come back if you are interested in this stuff and sorry to my old readers that can't read english very well...&lt;/i&gt;&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 7381 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 18,3 visits/day)&lt;/div&gt;Posted at 19:20:06 &lt;a href="http://antirez.com/post/linux-just-engineers-without-vision.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/linux-just-engineers-without-vision.html"&gt;12 comments&lt;/a&gt; | &lt;a href="/print.php?postid=169"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Linux+Kernel%3A+just+engineering+without+a+vision%3F&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Flinux-just-engineers-without-vision.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/linux-just-engineers-without-vision.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/170234192" height="1" width="1"/&gt;</description>
   <dc:date>2007-10-15T19:20:06+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Flinux-just-engineers-without-vision.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/linux-just-engineers-without-vision.html</feedburner:origLink></item>
  <item>
   <title>The Big Switch</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/170138469/the-big-switch.html</link>
   <guid isPermaLink="false">http://antirez.com/post/170</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Starting from this article this is no longer an Italian blog... but an English one, and &lt;b&gt;all&lt;/b&gt; the next articles will be written in English.
The reason for this switch is that, after all, the target of this blog is not huge even in world scale, go figure if you look just at Italy. Moreover most of
my current readers are able to read an article written in English, especially
if I'm the author (my English is pretty basic, but I can write it without
any additional effort compared to when I write Italian stuff).
&lt;br/&gt;&lt;br/&gt;

The feeling that everybody barely able to read English can read what I can write
stimulate me a lot, and I'm happy that now I can actively contribute to two
of the few sites I read multiple times in my usual work day, that
are &lt;a href="http://programming.reddit.com"&gt;programming.reddit.com&lt;/a&gt; and &lt;a href="http://news.ycombinator.com"&gt;news.ycombinator.com&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;

I'm sorry if you are a former reader not comfortable reading English stuff,
the only alternative to this was to close the blog at all: I take the writing
activity as important and I must do everything I can in order to maximize
the impact of this activity spending the same amount of time.
&lt;br/&gt;&lt;br/&gt;

I hope to see you here in this blog in the future.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2308 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 5,7 visits/day)&lt;/div&gt;Posted at 15:12:25 &lt;a href="http://antirez.com/post/the-big-switch.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/the-big-switch.html"&gt;23 comments&lt;/a&gt; | &lt;a href="/print.php?postid=170"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=The+Big+Switch&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fthe-big-switch.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/the-big-switch.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/170138469" height="1" width="1"/&gt;</description>
   <dc:date>2007-10-15T15:12:25+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fthe-big-switch.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/the-big-switch.html</feedburner:origLink></item>
  <item>
   <title>Un blog in inglese scritto da un italiano</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/164927980/blog-inglese-scritto-da-italiano.html</link>
   <guid isPermaLink="false">http://antirez.com/post/167</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;come ce ne sono altri 321049231049234234 ma
&lt;a href="http://www.betaversion.org/~stefano/linotype/"&gt;questo di Stefano Mazzocchi&lt;/a&gt; ha la caratteristica di essere anche interessante da leggere. Se ne conoscete altri vi prego di consigliarmeli tra i commenti!&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2969 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 7,2 visits/day)&lt;/div&gt;Posted at 01:06:58 &lt;a href="http://antirez.com/post/blog-inglese-scritto-da-italiano.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/blog-inglese-scritto-da-italiano.html"&gt;7 comments&lt;/a&gt; | &lt;a href="/print.php?postid=167"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Un+blog+in+inglese+scritto+da+un+italiano&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fblog-inglese-scritto-da-italiano.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/blog-inglese-scritto-da-italiano.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/164927980" height="1" width="1"/&gt;</description>
   <dc:date>2007-10-04T01:06:58+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fblog-inglese-scritto-da-italiano.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/blog-inglese-scritto-da-italiano.html</feedburner:origLink></item>
  <item>
   <title>La macchinetta del caffe' del web italiano</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/162974979/circoli-letterari-programmatori.html</link>
   <guid isPermaLink="false">http://antirez.com/post/165</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Con una frequenza incalzante, che tende a superare l'evento al mese, in Italia i Barcamp sono sicuramente dal punto di vista quantitativo la sede principale degli incontri tra chi si occupa di informatica in generale e di web in particolare.
Sembrerebbe una buona notizia, ma basta partecipare ad un paio di essi per capire che c'e' qualcosa che non va: se c'e' una materia rara nei Barcamp sono appunto gli informatici e le idee nuove.
&lt;br/&gt;&lt;br/&gt;

La maggior parte dei partecipanti sono blogger e persone in qualche modo connesse con &lt;b&gt;la parte marketing&lt;/b&gt; del web. Se c'e' una cosa di cui ti pregano gli organizzatori e' quella di tenere il tasso di tecnicita' degli interventi moderato. E' cosi' che i Barcamp assumono quella dimensione dualistica che te li fa vedere cosi' diversi in relazione al tuo punto di vista:
&lt;ul&gt;&lt;li&gt;Se sei qualcuno interessato e digiuno di &lt;i&gt;neo web&lt;/i&gt; che vorrebbe scoprire di piu' e' una esperienza interessante.&lt;/li&gt;

&lt;li&gt;Se sei un addetto ai lavori il Barcamp e' una grande cassa armonica di cose trite e ritrite, semplificazioni estreme, e talk che hanno come oggetto le mode del momento che dal punto di vista oggettivo contano &lt;i&gt;zero&lt;/i&gt;.&lt;/li&gt;

&lt;/ul&gt;
Prima di criticarmi, ricordatevi che l'ho detto. Ho detto che dal punto di vista &lt;b&gt;divulgativo&lt;/b&gt; il Barcamp ha il suo motivo di esistere. Ce ne sono altri ma vorrei parlare della sostanza, il fatto che ci si puo' incontrare con gli altri blogger ha davvero poco a che fare con il concetto di &amp;quot;luogo in cui cultori dell'informatica si incontrano per parlare di essa nella specifica incarnazione di quel grande strumento di comunicazione che chiamiamo web&amp;quot;.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Ma perche' e' cosi' importante che si incontrino proprio gli sviluppatori, i sistemisti, gli esperti di usabilita'?&lt;/b&gt;. Ormai e' diventato del tutto normale pensare di escludere mentalmente gli artigiani del web. Non esistono quasi, quello che esiste e' il loro prodotto e gli utenti dal punto di vista mediatico. Esistono le idee per un nuovo servizio, i finanziatori, i modelli di business e i business plan.
&lt;br/&gt;&lt;br/&gt;

In realta' se c'e' una costante nel web 2.0 degli esordi, in particolare quello che ha prodotto i risultati migliori senza ricevere inizialmente alcuna spinta, tale costante e' che e' stato creato da uno o piu' programmatori che in maniera indipendente mettevano su qualcosa che amavano.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Se vogliamo far partire il web Italiano dobbiamo far incontrare tra loro gli artigiani del web&lt;/b&gt; e comunicare ai ragazzini che e' fico far parte di questo pezzetto dell'umanita' che ha deciso di capire come funzionano &lt;b&gt;nel dettaglio&lt;/b&gt; il web e i computer e di plasmarli a proprio piacimento. Non e' fico soltanto avere un blog, spendere 45 ore al giorno su Twitter, fare l'upload di decine di foto al giorno su Flickr e via di seguito.
&lt;br/&gt;&lt;br/&gt;

I pilastri del web sono questi due: sviluppatori e economia che incoraggi l'idea che si possa fare anche da soli, che almeno ci si possa provare, che c'e' una opportunita' per chi sa fare le cose. In Italia ci sono gli sviluppatori e inizia a diventare possibile trovare le giuste dinamiche economiche che permettano a chi sa fare il web di pensare che vale la pena di saltare su questo treno. L'utenza arrivera' e i Barcamp devono assolutamente mantenere il loro aspetto divulgativo che permette di accrescere l'utenza consapevole.
&lt;h3&gt;Workshop e circoli informatici&lt;/h3&gt;
Come si recupera una tale situazione? Evidentemente bisogna dare un taglio
completamente diverso ai Barcamp, o inventarsi una manifestazione alternativa con un profilo del tutto diverso. Chiamiamola Techcamp per ora, per semplificare e visto che ho gia' usato questo nome nel precedente post.
&lt;br/&gt;&lt;br/&gt;

Quali sono gli ingredienti di un Techcamp?
&lt;br/&gt;&lt;br/&gt;

I Techcamp &lt;b&gt;dovrebbero essere dei workshop&lt;/b&gt;: posti in cui si arriva li col portatile e si testano delle cose nuove assieme, in cui si scrive una parte della propria nascente applicazione web catturando una idea del momento, e persino posti in cui si possono formare team che partecipano a mini-competizioni in cui si sviluppano prototipi di applicazioni web assolutamente innovative da qualche punto di vista.
&lt;br/&gt;&lt;br/&gt;

I Techcamp &lt;b&gt;dovrebbero servire anche come vetrina&lt;/b&gt;: un posto in cui mostrare l'ultima applicazione a cui si sta lavorando che e' attualmente in beta, per ottenere feedback utili, per mostrarla ai finanziatori che, altri grandi assenti dei Barcamp (e giustamente) magari frequenterebbero piu' volentieri posti in cui girano sui portatili di alcuni ragazzi i pezzi del web che usciranno sul mercato domani.
&lt;br/&gt;&lt;br/&gt;

Per finire i Techcamp &lt;b&gt;dovrebbero essere grandi circoli informatici&lt;/b&gt; in cui le idee circolano velocemente: il web come molte altre cose create dall'uomo va avanti per piccoli passi creati dai singoli, poi ogni tanto qualcuno mette assieme diversi pezzi e permette un salto. Se almeno su scala nazionale sarebbe possibile vedere spesso sviluppatori le nuove idee circolerebbero piu' velocemente, ogni sviluppatore capterebbe cose interessanti e ci andrebbe a giocare a casa per poi probabilmente parlare con qualcuno al prossimo Techcamp, e cosi' via. Se c'e' questo scambio tutto gira alla velocita' della luce.
&lt;br/&gt;&lt;br/&gt;

Ricordo che tanti anni fa lavoravo in un posto a Milano: ho sentito dire le cose migliori davanti alla macchinetta del caffe'. E' allora che ho perso fiducia nel lavoro da remoto, non vorrei mai avere una azienda in cui i miei 4/5 sviluppatori non sono presenti assieme in ufficio. Il Techcamp dovrebbe essere la macchinetta del caffe' del web italiano.&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2919 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 7,0 visits/day)&lt;/div&gt;Posted at 19:52:14 &lt;a href="http://antirez.com/post/circoli-letterari-programmatori.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/circoli-letterari-programmatori.html"&gt;20 comments&lt;/a&gt; | &lt;a href="/print.php?postid=165"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=La+macchinetta+del+caffe%27+del+web+italiano&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fcircoli-letterari-programmatori.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/circoli-letterari-programmatori.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/162974979" height="1" width="1"/&gt;</description>
   <dc:date>2007-09-29T19:52:14+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fcircoli-letterari-programmatori.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/circoli-letterari-programmatori.html</feedburner:origLink></item>
  <item>
   <title>Ghirada Barcamp a Treviso e idee per un Techcamp</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/161051353/barcamp-ghirada-treviso-tecnico-techcamp.html</link>
   <guid isPermaLink="false">http://antirez.com/post/164</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Giorno 22 e 23 sono stato a Treviso al Ghirada Barcamp assieme al mio socio Fabio (trent per gli amici).
&lt;br/&gt;&lt;br/&gt;

Per noi non e' stato solo un barcamp, in realta' si e' trattato simultaneamente di un meeting interno tra Merzia e Virgilio che era tra gli sponsor dell'evento, per cui anche se sono intervenuto con un talk e ho avuto modo di scambiare quattro chiacchiere non ho potuto parlare con tutti quelli che c'erano e che avrei voluto conoscere, ma non si puo' volere tutto, e' stato fondamentale conoscere il team di Virgilio, e anche molto divertente. C'erano tante persone con cui interagiamo quotidianamente per gestire il lavoro relativo ad oknotizie e segnalo ma che non avevamo mai incontrato di persona! Ora anche la comunicazione risultera' piu' semplice.
&lt;br/&gt;&lt;br/&gt;

Sono intervenuto esponendo quattro idee che sono emerse in quest'ultimo anno di esperienza di sviluppo e di osservazione di come le community web si evolvono. E' possibile vedere una piccola parte dell'intervento &lt;a href="http://barcampers.myblog.it/archive/2007/09/22/quando-le-notizie-sono-davvero-okay.html"&gt;in questo post nel blog dei barcampers di Virgilio&lt;/a&gt;.
&lt;br/&gt;&lt;br/&gt;

E' stata una bella esperienza ma &lt;b&gt;come al solito in questi incontri ci sono pochissime persone tra quelli che il web lo sviluppano&lt;/b&gt;, allora parlando con &lt;a href="http://www.claudiocicali.net/"&gt;Claudio Cicali&lt;/a&gt; e' venuto fuori che magari sarebbe una buona idea fare un &lt;b&gt;Techcamp&lt;/b&gt;, ovvero una sorta di Barcamp in cui i punti fissi rimangono l'orizzontalita' e la spontaneita' dell'evento e degli interventi, il fatto che il focus rimane il web, ma che tutto e' orientato nell'ottica degli sviluppatori.
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Questo non significa&lt;/b&gt; che chi non e' tecnico non puo' partecipare, significa solo che gli inviti saranno rivolti specialmente ai tecnici e che gli interventi saranno tecnici, senza preoccuparsi del fatto che c'e' chi magari non puo' capire.
&lt;br/&gt;&lt;br/&gt;

E' importante fare divulgazione e fare incontrare i blogger, ma bisogna fare incontrare anche gli sviluppatori in un ambiente idoneo alla generazione di nuove idee, di nuove collaborazioni.
&lt;br/&gt;&lt;br/&gt;

Non so ne dove ne quando potrebbe essere organizzato un tale evento, e bisogna trovare gli sponsor, ma immagino abbia senso farlo in qualche posto del nord Italia facilmente raggiungibile in treno da chi abita al nord o al centro, e in aereo da qualunque parte d'Italia piu' o meno.
&lt;br/&gt;&lt;br/&gt;

Voi cosa ne pensate? qualcuno sarebbe disposto a partecipare?&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 2530 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 6,0 visits/day)&lt;/div&gt;Posted at 14:32:55 &lt;a href="http://antirez.com/post/barcamp-ghirada-treviso-tecnico-techcamp.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/barcamp-ghirada-treviso-tecnico-techcamp.html"&gt;15 comments&lt;/a&gt; | &lt;a href="/print.php?postid=164"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Ghirada+Barcamp+a+Treviso+e+idee+per+un+Techcamp&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fbarcamp-ghirada-treviso-tecnico-techcamp.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/barcamp-ghirada-treviso-tecnico-techcamp.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/161051353" height="1" width="1"/&gt;</description>
   <dc:date>2007-09-25T14:32:55+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fbarcamp-ghirada-treviso-tecnico-techcamp.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/barcamp-ghirada-treviso-tecnico-techcamp.html</feedburner:origLink></item>
  <item>
   <title>Suor Lecca Lecca</title>
   <link>http://feeds.feedburner.com/~r/antirez/~3/150654635/suor-lecca-lecca-ernesto-magro.html</link>
   <guid isPermaLink="false">http://antirez.com/post/163</guid>
   <description>&lt;div class="blogpost"&gt;&lt;div style="clear:both"&gt;&lt;/div&gt;&lt;div class="blogposttext"&gt;Per ora mi connetto poco per il piu' semplice dei motivi: non sono quasi mai a casa. Il mio metabolismo informatico e' stato da sempre irregolare, per cui non c'e' da meravigliarsi, a volte ho bisogno di staccare e stare sempre in giro, bere al bar, conoscere gente nuova, parlare fino alle 6 del mattino dei problemi piu' fondamentali dell'umanita' o delle cose piu' stupide che le nostre menti bacate riescono a concepire, per poi finire al panificio di turno, concorrenti al banco delle persone che a quell'ora si svegliano per andare a lavorare in campagna, tra le terre del mio piccolo paese agricolo, Campobello di Licata, noi nel tentativo di accaparrarci una pizza, loro in quello di comprare il pane che mangeranno piu' tardi con buon appetito dopo alcune ore di lavoro.
&lt;br/&gt;&lt;br/&gt;

A Campobello non c'e' quasi nulla, direi che c'e' degrado culturale, e il degrado e' amico delle passioni: i bambini hanno la possibilita' di fare quello che vogliono perche' non c'e' nulla da fare altrimenti, e l'alternativa alle palestre, alle scuole di musica e di danza non e' necessariamente la noia.
&lt;br/&gt;&lt;br/&gt;

Al bar che frequento di solito tra tanti altri c'e' anche Ernesto Magro, piu' o meno mio coetaneo, che il suo tempo lo ha usato per pensare a cose da dipingere, e a dipingere queste cose a cui ha pensato. Avevo gia' visto alcuni suoi quadri, ma qualche giorno fa ne ha esposti quattro che non conoscevo. Uno di questi e' &lt;i&gt;Suor Lecca Lecca&lt;/i&gt;. Per quanto le mie finanze in questo periodo non brillino di luce propria ho deciso di acquistarlo, non ne ho potuto fare a meno.
&lt;br/&gt;&lt;br/&gt;

Ora ho il quadro, e mi piace di piu' ogni volta che lo guardo, ma non ho una parete a cui attaccarlo: devo cercare la mia nuova casa di Catania verso la fine di Settembre, cosi' l'unica cosa che posso fare per ora e' attaccarlo qui nel blog per condividerlo con voi, nella parete di questo post. E' un 85 x 110, olio su tavola. Spero piaccia anche a voi come piace a me.
&lt;br/&gt;&lt;br/&gt;

&lt;img class="inlineimage" src="http://antirez.com/blogdata/163/suor-lecca-lecca-small.jpg" alt="Suor Lecca Lecca - Ernesto Magro" title="Suor Lecca Lecca - Ernesto Magro"/&gt;
&lt;br/&gt;&lt;br/&gt;

&lt;b&gt;Edit: particolare del volto&lt;/b&gt;
&lt;br/&gt;&lt;br/&gt;

&lt;img class="inlineimage" src="http://antirez.com/blogdata/163/suorllvolto.JPG" alt="Suor Lecca Lecca, particolare del volto" title="Suor Lecca Lecca, particolare del volto"/&gt;&lt;/div&gt;&lt;div class="blogpostinfo"&gt;&lt;div class="blogpoststats"&gt;post read 8268 times&lt;sup&gt;&lt;a href="/page/uniquevisitors"&gt;*&lt;/a&gt;&lt;/sup&gt; (average 18,5 visits/day)&lt;/div&gt;Posted at 21:11:04 &lt;a href="http://antirez.com/post/suor-lecca-lecca-ernesto-magro.html"&gt;permalink&lt;/a&gt; | &lt;a href="http://antirez.com/post/suor-lecca-lecca-ernesto-magro.html"&gt;20 comments&lt;/a&gt; | &lt;a href="/print.php?postid=163"&gt;print&lt;/a&gt; | &lt;a href="http://postli.com/post?t=Suor+Lecca+Lecca&amp;amp;u=http%3A%2F%2Fantirez.com%2Fpost%2Fsuor-lecca-lecca-ernesto-magro.html"&gt;post it&lt;/a&gt; | &lt;a class="tr-linkcount" href="http://technorati.com/search/http://antirez.com/post/suor-lecca-lecca-ernesto-magro.html"&gt;View blog reactions&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/antirez/~4/150654635" height="1" width="1"/&gt;</description>
   <dc:date>2007-08-31T21:11:04+00:00</dc:date>
  <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=antirez&amp;itemurl=http%3A%2F%2Fantirez.com%2Fpost%2Fsuor-lecca-lecca-ernesto-magro.html</feedburner:awareness><feedburner:origLink>http://antirez.com/post/suor-lecca-lecca-ernesto-magro.html</feedburner:origLink></item>
 <feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=antirez</feedburner:awareness></channel>
</rss>
