<?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>Mostly useless &#187; Programming</title>
	<atom:link href="http://www.mostly-useless.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mostly-useless.com/blog</link>
	<description>There is much pleasure to be gained from useless knowledge (Bertrand Russell)</description>
	<lastBuildDate>Wed, 09 Mar 2011 10:22:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Why is forever</title>
		<link>http://www.mostly-useless.com/blog/2009/11/24/why-is-forever/</link>
		<comments>http://www.mostly-useless.com/blog/2009/11/24/why-is-forever/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 17:20:46 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Lifestyle]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/?p=412</guid>
		<description><![CDATA[Part of my job is to select technical people to be hired in the company.  Few months ago I happened to interview a guy for a developer position.  This guy has a degree in chemistry but his career then oscillated between system administration and programming in the java world. After a while talking about his [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-415  aligncenter" title="A diamond is forever" src="http://www.mostly-useless.com/blog/wp-content/uploads/2009/11/j0410091.png" alt="A diamond is forever" width="480" height="360" /></p>
<p style="text-align: left;">Part of my job is to select technical people to be hired in the company.  Few months ago I happened to interview a guy for a developer position.  This guy has a degree in chemistry but his career then oscillated between system administration and programming in the java world.<span id="more-412"></span></p>
<p style="text-align: left;">After a while talking about his experience he said that, being in his 30s, he was looking for some stability.  In particular, he said, he was frightened by how quickly our knowledge can become obsolete in the programming world.  For example in 5 years Java could become obsolete because everybody could move to the next big thing (.net, he said), making Java skills useless and forcing you to learn everything from scratch.  He added that system administration and programming skills in the open source world will last longer.</p>
<p style="text-align: left;">On one hand I agree: open source skills will last longer.  In the open source world we never have to push the new thing just to force everybody to buy the new version.  We&#8217;re not at the mercy of some company&#8217;s agenda.  We grow software incrementally, evolving technology on top of the existing good old stuff, with continuous innovation and experimentation patch after patch and using Darwinism to select stuff that works and re-use it forever.</p>
<p style="text-align: left;">On the other hand I think this guy doesn&#8217;t understand what programming is really about, on a deeper level. In our world technologies evolve very quickly.  Every day new emerging technologies provide better ways to do the same thing and even in the evolutionary open source world, we have to keep up with the fast-pace advancement.</p>
<p style="text-align: left;">That&#8217;s why good schools won&#8217;t teach you a specific programming language or a specific application or operating system.  Good schools won&#8217;t teach you the technology of the day.  They will teach you how to learn new stuff quickly, how to be your own self-teacher.  They will prepare you for a whole life of research and study.</p>
<p style="text-align: left;">As Jeff Atwood once wrote &#8220;<strong>how</strong> lasts about five years, but <strong>why</strong> is forever&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2009/11/24/why-is-forever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PyCon Due</title>
		<link>http://www.mostly-useless.com/blog/2008/05/16/pycon-due/</link>
		<comments>http://www.mostly-useless.com/blog/2008/05/16/pycon-due/#comments</comments>
		<pubDate>Fri, 16 May 2008 22:24:30 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Conference]]></category>
		<category><![CDATA[PyCon Due]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[pythonit]]></category>
		<category><![CDATA[workshop]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/?p=312</guid>
		<description><![CDATA[Last weekend I went to PyCon Due, the 2nd Italian conference on the Python programming language.  It was in Firenze, a few minutes walk from where I live, so it&#8217;s been very handy.  This year the conference was much bigger than last year&#8217;s. For starters, on Friday Richard Stallman spoke at Palazzo Vecchio.  I couldn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="alignnone size-full wp-image-313 aligncenter" title="PyCon Due" src="http://www.mostly-useless.com/blog/wp-content/uploads/2008/05/pycondue.png" alt="" width="480" height="360" /></p>
<p>Last weekend I went to <a href="http://www.pycon.it/pycon2">PyCon Due</a>, the 2nd Italian conference on the Python programming language.  It was in Firenze, a few minutes walk from where I live, so it&#8217;s been very handy.  This year the conference was much bigger than last year&#8217;s. <span id="more-312"></span></p>
<p>For starters, on Friday <a href="http://en.wikipedia.org/wiki/Richard_Stallman">Richard Stallman</a> spoke at <a href="http://en.wikipedia.org/wiki/Palazzo_Vecchio">Palazzo Vecchio</a>.  I couldn&#8217;t go (I had to work) but luckily enough I listened to RMS in a speech he gave at Hackmeeting 2002 in Bologna, so I&#8217;m blessed already.  I missed the opportunity to visit the outstanding <a href="http://upload.wikimedia.org/wikipedia/commons/c/c7/Firenze-palazzo_vecchio_24.jpg">Salone del 500</a>, tough.</p>
<p>The next two days were at Auditorium Duomo, where the guys from python.it organized three parallel tracks running from 9am-7pm, with little breaks for some rest and socialization opportunity.  There were many well-known speakers, including <a href="http://users.rcn.com/python/index.htm">Raymond Hettinger</a>, <a href="http://www.red-bean.com/fitz/">Brian Fitzpatrick</a> and of course <a href="http://en.wikipedia.org/wiki/Alex_Martelli">Alex Martelli</a>.  I attended talks about Django, Google App Engine, how to listen to our users, Plone, nginx&#8217;s mod_wsgi, Zope3, Twisted, Python 3.0 and Python inner workings.</p>
<p>A long list of companies sponsored the event: some big 900-pound gorillas like Google and Skype, as well as local fast-growing Italian companies.  Of course they took the opportunity to try and hire high profile developers, presenting their business and collecting contacts.  Too bad the company I work for didn&#8217;t participate.</p>
<p>All in all, with over 300 attendees I can say the conference was a big success, even if some talks were a little under par in terms of quality or effectiveness.  I didn&#8217;t like the &#8220;teach me&#8221; formula but most talks were  definitely outstanding.  And did I mention the hostesses were beautiful?  Go python.it go!  You totally rock!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2008/05/16/pycon-due/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netscape EOLed</title>
		<link>http://www.mostly-useless.com/blog/2008/02/23/netscape-eoled/</link>
		<comments>http://www.mostly-useless.com/blog/2008/02/23/netscape-eoled/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 14:14:59 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[History]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AOL]]></category>
		<category><![CDATA[Browser wars]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Netscape]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2008/02/23/netscape-eoled/</guid>
		<description><![CDATA[from The Book of Mozilla, 7:15 And so at last the beast fell and the unbelievers rejoiced. But all was not lost, for from the ash rose a great bird. The bird gazed down upon the unbelievers and cast fire and thunder upon them. For the beast had been reborn with its strength renewed, and [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2008/02/netscape202.gif" alt="Netscape2.02" /></p>
<p>from <a href="http://en.wikipedia.org/wiki/The_Book_of_Mozilla">The Book of Mozilla</a>, 7:15</p>
<blockquote><p>And so at last the beast fell and the unbelievers rejoiced.<br />
But all was not lost, for from the ash rose a great bird.<br />
The bird gazed down upon the unbelievers and cast fire<br />
and thunder upon them. For the beast had been<br />
reborn with its strength renewed, and the<br />
followers of Mammon cowered in horror.</p></blockquote>
<p>Looking at this dithered GIF makes me so nostalgic&#8230;<br />
Today AOL announced Netscape Navigator has been <a href="http://blog.netscape.com/2007/12/28/end-of-support-for-netscape-web-browsers/">discontinued</a>. Time for a <a href="http://en.wikipedia.org/wiki/The_Book_of_Mozilla#The_Book_of_Mozilla.2C_11:9">new chapter</a> in Mozilla&#8217;s book.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2008/02/23/netscape-eoled/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ten years with Open Source</title>
		<link>http://www.mostly-useless.com/blog/2008/02/09/ten-years-with-open-source/</link>
		<comments>http://www.mostly-useless.com/blog/2008/02/09/ten-years-with-open-source/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 00:00:45 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Culture]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Innovation]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technlogy]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2008/02/09/ten-years-with-open-source/</guid>
		<description><![CDATA[Exactly ten years ago, on Feb 9th 1998, Bruce Perens and Eric Raymond began the Open Source movement. It was just a different way to explain what had been already happening for quite a few years, and make it understandable for the business world. And it worked very well. Building on the ground-breaking work of [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2008/02/opensource-480.png" alt="Opensource logo" /></p>
<p>Exactly ten years ago, on Feb 9th 1998, Bruce Perens and Eric Raymond began the Open Source movement.  It was just a different way to explain what had been already happening for quite a few years, and make it understandable for the business world.  And it worked very well.</p>
<p>Building on the ground-breaking work of great leaders like Richard Stallman and Linus Torvalds, we laid out the software technology that leads many markets of today&#8217;s world, entering the mainstream.  When I say we it&#8217;s because I have been an active contributor of this community and an advocate of the open source concept since the beginning.<span id="more-277"></span></p>
<p>Nowadays I use open source for everything, my parents use Linux on their desktop, my friends are eager to buy an Asus EEE and major governments have state funded programs to adopt or develop open source.   Several open source companies are making billions and almost everybody is saving huge money just by using it.</p>
<p>The idea spread even out of the software world, generating parallel incarnations in the culture generation and distribution area.  Try to imagine a world without open source: no Firefox, no Open Office, no MySQL, no OLTP project, no Asus EEE, no Creative Commons, no Wikipedia, no peer-to-peer.   Lately, all the biggest innovations in the software world came from the open source community are were possible because of it.  There are still are some areas where Open Source has to work in order to go truly mainstream, for example Desktop  applications, but we can clearly see it&#8217;s going to happen sooner or later.</p>
<p>Thanks to Linus, Richard, Bruce, Eric, Larry, Guido, to friends at Ferrara Linux Users Group,  and to everybody who helped and believed in this amazing challenge.  Where will we stand in 2018?   I can&#8217;t wait to see that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2008/02/09/ten-years-with-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with ActiveMQ</title>
		<link>http://www.mostly-useless.com/blog/2007/12/27/playing-with-activemq/</link>
		<comments>http://www.mostly-useless.com/blog/2007/12/27/playing-with-activemq/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 02:04:51 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ActiveMQ]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Benchmark]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[Message bus]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Stomp]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/12/27/playing-with-activemq/</guid>
		<description><![CDATA[In the last few days I&#8217;ve been experimenting with ActiveMQ, a JMS broker implementation by the Apache Foundation. I&#8217;m looking for innovative solutions to make our enterprise infrastructure more robust and flexible and this project looks very promising. For a list of interesting highlights: automatic clustering via multi-cast discovery as well as static routing configurations [...]]]></description>
			<content:encoded><![CDATA[<p align="center"> <img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/activemq-brokerdiagram-1.png" alt="ActiveMQ diagram" /></p>
<p>In the last few days I&#8217;ve been experimenting with <a href="http://activemq.apache.org/">ActiveMQ</a>, a <a href="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</a> broker implementation by the <a href="http://www.apache.org/">Apache Foundation</a>.  I&#8217;m looking for innovative solutions to make our enterprise infrastructure more robust and flexible and this project looks very promising.  <span id="more-252"></span>For a list of interesting highlights:</p>
<ul>
<li>automatic clustering via multi-cast discovery as well as static routing configurations</li>
<li>support for multiple communication protocols including <a href="http://activemq.apache.org/openwire.html">Openwire</a> (a native binary protocol), <a href="http://stomp.codehaus.org/">Stomp</a> (an open text-based protocol), <a href="http://www.xmpp.org/">XMPP</a>, <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> and many more</li>
<li>client implementations available for a wide range of programming languages</li>
<li>support for queues (one and only one paradigm) and topics (publish-subscriber one-to-many message distribution)</li>
<li>optional persistence via a built-in message store or standard database integration</li>
</ul>
<p>and even more obscure features.   JMS is a Java technology and API, but ActiveMQ allows you to apply the same thing to different environments, even in a mixed configuration.  The point of messaging is that you can decouple applications and components so that they can exchange data items with no need to synchronize or to know each other.  It&#8217;s a basic principle in <a href="http://books.google.com/books?as_isbn=0321200683">Enterprise Integration Patterns</a>.</p>
<p>Some alternative solutions that I evaluated and discarded:</p>
<ul>
<li>using a Jabber server (e.g. ejabberd): limited functionality, high overhead</li>
<li>using an MTA (e.g. postfix): only supports persistent queues, high overhead</li>
<li><a href="http://cwiki.apache.org/qpid/">Apache qpid</a>: not mature yet</li>
<li><a href="http://www.rabbitmq.com/">RabbitMQ</a>: lack of mature client code</li>
<li><a href="http://www.spread.org/">Spread Toolkit</a>: no persistence, no one-and-only-one</li>
<li>Proprietary <a href="http://en.wikipedia.org/wiki/Message_Oriented_Middleware">MOM</a> (e.g. TIBCO, IBM Websphere MQ): expensive</li>
</ul>
<p>Anyhow, for my experiments I connected ActiveMQ using Perl clients, using <a href="http://www.astray.com/">acme</a>&#8216;s <a href="http://search.cpan.org/dist/Net-Stomp/">Net::Stomp</a> module.  The basic setup was like this:</p>
<ul>
<li>Everything running on a single Athlon64 3200+, 2GB RAM box</li>
<li>Gentoo Linux amd64, kernel 2.6.23, glibc 2.7, Sun JDK 1.6.0</li>
<li>two instances of ActiveMQ 5.0.0 auto-networked with multi-cast discovery and talking Openwire between them</li>
<li>one non-persistent queue</li>
<li>one producer injecting 6byte long non-persistent messages on the master instance</li>
<li>two competing consumers fetching messages in auto-acknowledge mode from the master instance</li>
</ul>
<p>The producer process runs single thread bursting a configurable amount of messages at max speed, each message contains a 6-digit progressive counter.  Optionally messages can be padded with dummy data, spread on a configurable amount of different queues or made persistent.</p>
<p>Each consumer runs in a separate single thread process printing a line at most every second with a time stamp and the 6digit code found in the last message received.  The time stamp is zeroed every time a message is received with a code less than the last that was seen.  This way, it&#8217;s easy to find running time for multiple repeated bursts.</p>
<p>Even if the two instances are interconnected, the default configuration only loads the master instance.  In default configuration ActiveMQ can enqueue and dequeue approx 195K messages per minute, or 3250 messages per second, which is not bad at all.  No message accumulates in queue and consumers fetch messages as the same speed as the producer.  My first test was trying to see how this number would change by adding or removing consumers.</p>
<p style="text-align: center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/byconsumers.png" alt="Throughput by number of consumers" /></p>
<p>In this graph we see that performance is slightly better with only one consumer and gets significantly worse when adding more consumers. For more than 8 parallel consumers throughput gets stabilized around 90K messages a minute.</p>
<p>Next, I checked what happens for bigger payloads.  We can see a slight decrease in message rate while moving from 6 to 500 bytes per message, then we enter a sort of bandwidth limit saturating between 400 and 500 Kbytes per second (and message rate decreasing accordingly).</p>
<p align="center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/bymsgsize.png" alt="Throughput by message size" /></p>
<p>When spreading messages over multiple queues (subscribing all of them in each consumer) we can see a slight decrease in message rate that anyhow keeps above 160K messages per minute.  When I tried to increase queues to 1024 ActiveMQ crashed, running out of file descriptors.  Apparently a file is created on disk and kept open for each active queue, therefore there is a stringent limit on the number of concurrent queues you can handle.</p>
<p align="center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/bynrqueues.png" alt="Throughput by number of queues" /></p>
<p align="left">Now, in all of the above cases traffic flowed from producer to consumer via one single message broker.  In this configuration the second broker only acts as a fail-over to be used in case the master instance goes down.  This only works if producer and consumer somehow coordinate (e.g. using the same priority order in the list of available brokers) and you don&#8217;t need to balance load among a cluster of consumers.</p>
<p align="left">A more advanced configuration could use store and forward so that producers can pump messages on a random broker and messages would always reach subscribers registered for that queue, even if they are connected to a different broker.  ActiveMQ easily supports this configuration and in a mesh of brokers in the same LAN your message normally gets to the consumer in at most 2 hops (e.g. traversing two brokers).  To test what happens in this topology, I configured our consumers to connect to the other broker.  We can see a drop in throughput, almost halved.  It&#8217;s not bad but I believe they can do better here.  After all, adding one hop should only affect latency, not throughput.  Actually the inter-broker connection looked partially unstable, sometime losing sync and automatically reconnecting.</p>
<p align="center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/bytopology.png" alt="Throughput by topology" /></p>
<p> Now, all of this was for non-persistent queues.  This means every time you restart the broker all messages in queue get wiped out.  None the less, messages are kept in RAM (or on disk, when queue length gets above a configurable threshold) while there&#8217;s no consumer to serve a queue.  You have several ways to control message lifetime, including expiration limit.  This is OK if you mostly care for speed and can afford losing messages, but in case you have to deliver 100% of your messages you have to use a persistent queue.  Messages can be marked persistent by adding the relevant attribute in the producer code.</p>
<p align="center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/bypersist.png" alt="Throughput by persistence storage" /></p>
<p align="left">When using persistence we see a dramatic drop in performance.  The AMQ built-in message storage (default choice) is slower by a factor of 3 while MySQL is slower by a factor of 10.  Adding the built-in high performance journal on top of mysql gets even worse (even if it&#8217;s supposed to help, according to documentation).  We also see a very different behavior between producer and consumer interfaces.  With persistence consumers become much slower than producers, by as much as a factor of 10.  Persistence is a nice feature but adds a huge penalty.  None the less with AMQ you can still run 900 messages a second.</p>
<p align="left">ActiveMQ would support a master slave configuration where the slave would replicate every persistent message, to be used for disaster recovery in case the master storage suddenly becomes unusable.  I tried this configuration by it kept on crashing (out of sync after each temporary disconnection between master and slave), so I guess it&#8217;s not production grade yet.</p>
<p align="left">Note: in all of the above tests each instance of ActiveMQ took around 150M of resident RAM (almost 900M in virtual) and ActiveMQ was the most CPU intensive process in top output.</p>
<p align="left">Conclusion: ActiveMQ 5.0.0 appears to be very good for non persistent messaging and queueing.   Also provides good performance for persistent messaging using the built-in AMQ storage.  Don&#8217;t try using an external SQL database for storage because the performance penalty is huge.  Benchmark data can be found here <a href="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/activemq.xls" title="ActiveMQ benchmark data">ActiveMQ benchmark data</a></p>
<p align="left">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/12/27/playing-with-activemq/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Python makes you fly</title>
		<link>http://www.mostly-useless.com/blog/2007/12/07/python-makes-you-fly/</link>
		<comments>http://www.mostly-useless.com/blog/2007/12/07/python-makes-you-fly/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 20:30:16 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Comic]]></category>
		<category><![CDATA[Languages]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Xkcd]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/12/07/python-makes-you-fly/</guid>
		<description><![CDATA[I know how it feels&#8230;]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/12/python.png" alt="Python according to xkcd" /></p>
<p>I know how it feels&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/12/07/python-makes-you-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android, Google &amp; Italian laws</title>
		<link>http://www.mostly-useless.com/blog/2007/11/18/android-google-italian-laws/</link>
		<comments>http://www.mostly-useless.com/blog/2007/11/18/android-google-italian-laws/#comments</comments>
		<pubDate>Sun, 18 Nov 2007 18:50:57 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Bureocracy]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Italy]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/11/18/android-google-italian-laws/</guid>
		<description><![CDATA[Google led the creation of Open Handset Alliance, a consortium involving a number of telco and manufacturers . As its first act the Alliance released Android, an open source operating system for mobiles complete of SDK and API. The SDK includes a working emulator and half a dozen example applications. The idea to establish an [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/11/oha.jpg" alt="Open Handset Alliance" /></p>
<p>Google led the creation of <a href="http://www.openhandsetalliance.com/">Open Handset Alliance</a>, a consortium involving a number of <a href="http://www.openhandsetalliance.com/oha_members.html">telco and manufacturers</a> .  As its first act the Alliance released <a href="http://code.google.com/android/">Android</a>, an open source operating system for mobiles complete of SDK and API.  The SDK includes a working emulator and half a dozen example applications.  The idea to establish an open platform for mobile developers is very good but not particularly new: <a href="http://www.openmoko.org/">project Openmoko </a>has been working to a similar concept for several months and went as far as to release a developer version of the handset.<span id="more-236"></span></p>
<p>Currently there are several competing platforms with a significant presence on the market: <a href="http://developer.symbian.com/main/tools/appcode/">Symbian</a> OS, Microsoft <a href="http://msdn2.microsoft.com/en-us/windowsmobile/">Windows Mobile</a>, Apple <a href="http://developer.apple.com/iphone/devcenter/">iPhone</a>, Motorola <a href="http://www.motorola.com/content.jsp?globalObjectId=8411">MotoMAGX</a>, Qualcomm <a href="http://brew.qualcomm.com/brew/">BREW</a> and RIM <a href="http://na.blackberry.com/eng/developers/">Blackberry</a> to name a few.  Trying to build a business on top of mobile applications is very difficult because you have to make several different versions of your application and the market is very fluid.  Now, with the huge money and pressure that Google can inject into the field there&#8217;s a chance they can impose a common platform.</p>
<p>They chose to build on top of several open source technologies: Linux, OpenGL, SQLite and <a href="http://webkit.org/">Webkit</a>.  The latter is particularly interesting because it&#8217;s a rendering engine derived from the <a href="http://www.kde.org/">KDE</a> project (and going to be merged back into konqueror) and already powers the iPhone, <a href="http://www.s60.com/">s60</a> and <a href="http://www.apple.com/safari/">Safari</a>.  This could become the rendering engine widely used both on the web and on mobile handsets.</p>
<p>To bootstrap the project and quickly build a critical mass of third party developers, Google issued a <a href="http://code.google.com/android/adc.html">contest</a> with a 10 million dollar prize for the best applications that will be developed in the next few months.  There are a few <a href="http://code.google.com/android/adc_faq.html">countries not allowed</a> to participate to the contest.  As usual there are countries forbidden by US laws (Cuba, Iran, Syria, North Korea, Sudan, and Myanmar) and on top of that there are countries excluded because of local restrictions: Quebec and&#8230; Italy!</p>
<p>So Telecom Italia is one of the members of Open Handset Alliance, but Italians can&#8217;t participate to the challenge.   Great. How is this possible?  Simple: in Italy contests are regulated by a very strict law requiring that issuers create accurate documentation, put the prize in a protected guarantee fund and seek permission of the Ministry of Economy.   Google probably found that going through all of this was not worthwhile.  Italian bureaucracy and over-legislation at work.   Do you remember <a href="http://www.mostly-useless.com/blog/2006/07/11/italian-laws/">my last post</a> on this topic?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/11/18/android-google-italian-laws/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One laptop per child</title>
		<link>http://www.mostly-useless.com/blog/2007/06/10/one-laptop-per-child/</link>
		<comments>http://www.mostly-useless.com/blog/2007/06/10/one-laptop-per-child/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 19:20:12 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rantsnraves]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/06/10/one-laptop-per-child/</guid>
		<description><![CDATA[This weekend I&#8217;ve been to PyCon Uno, the first italian conference dedicated to the Python programming language. It&#8217;s been very interesting, in particular Alex Martelli&#8216;s keynote on managing the tech development and a presentation on sqlalchemy, but this post is not about the conference. Marco Pesenti Gritti&#8217;s final keynote was about One Laptop Per Child, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/06/olpc.jpg" alt="OLPC XO" /></p>
<p>This weekend I&#8217;ve been to <a href="http://www.pycon.it/">PyCon Uno</a>, the first italian conference dedicated to the <a href="http://www.python.org">Python</a> programming language.  It&#8217;s been very interesting, in particular <a href="http://www.aleax.it/">Alex Martelli</a>&#8216;s keynote on managing the tech development and a presentation on <a href="http://www.sqlalchemy.org/">sqlalchemy</a>, but this post is not about the conference.</p>
<p>Marco Pesenti Gritti&#8217;s final keynote was about <a href="http://www.laptop.org/">One Laptop Per Child</a>, a project to bring a low cost computer to children in those third world countries where the benefits of worldwide information and education technology would be otherwise impossible.  With the help of <a href="http://www.un.org/">UN</a> and <a href="http://www.mit.edu">MIT</a>, they are trying to build a 100$ book-size laptop with a 1200&#215;900 colour display and consuming just about 2W.  It&#8217;s going to be developed using open source software only, and to use Python and GTK+ to develop a revolutionary environment that discards the desktop/office metaphor and puts emphasis on children activities. Several states already joined the project and did preliminary testing on some of their schools.</p>
<p>I think they did a very good job and hope this is going to be a great success.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/06/10/one-laptop-per-child/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sunset of the personal computer industry</title>
		<link>http://www.mostly-useless.com/blog/2007/06/02/sunset-of-the-personal-computer-industry/</link>
		<comments>http://www.mostly-useless.com/blog/2007/06/02/sunset-of-the-personal-computer-industry/#comments</comments>
		<pubDate>Sat, 02 Jun 2007 13:33:58 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rantsnraves]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/06/02/sunset-of-the-personal-computer-industry/</guid>
		<description><![CDATA[Is there anybody out there who doesn&#8217;t know who Steve Jobs and Bill Gates are? Everybody and his brother know that they are the leaders of Apple and Microsoft and have been dominating the personal computer industry for the last 30 years. In all of this time, they&#8217;ve been very careful to appear together very [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mostly-useless.com/blog/wp-content/uploads/2007/06/gates_and_jobs.jpg" alt="Gates and Jobs" /></p>
<p>Is there anybody out there who doesn&#8217;t know who Steve Jobs and Bill Gates are?  Everybody and his brother know that they are the leaders of Apple and Microsoft and have been dominating the personal computer industry for the last 30 years.  In all of this time, they&#8217;ve been very careful to appear together very rarely, but last Wednesday they shared the stage at the <a href="http://d.wsj.com/">D: All things Digital</a> conference. They chatted about how the industry evolved during their kingdom and talked about how they think our digital future is going to be.  A warm and friendly chat, like a get together for long-standing friends who finally relax and nostalgically recall the common past.  But wait, look at the picture, is that a real smile?<span id="more-193"></span></p>
<p>They&#8217;ve been enemies so far, trying to extend their business by attacking the market occupied by the other company, but now they have common enemies to fight.  Google is moving users one level up in the stack, feeding them with application that run inside a normal Internet browser, storing data on the server, and basically making the personal computer a commodity that nobody cares about.  And they use AJAX, a technology paradigm where neither Apple nor Microsoft have experience.  Hand-held manufactures are on their way to provide a new computing concept, where you carry your important data and applications in your pocket and always on.  Meanwhile, the Open Source movement is making operating systems and standard applications a commodity.</p>
<p>They know their traditional business is in danger, so their companies are both busy at differentiating, trying to find an escape path.  Microsoft spent the last years investing in game consoles (the Xbox), internet search engines, portals and advertising (MSN) and now they&#8217;re trying to merge with Yahoo and become a media company.  Apple spent the last years investing in portable players (iPod), music distribution (iTunes), cell phones (iPhone) and basically dismissed the computer hardware market when they stopped having their own technological platform, standardizing on the same Intel processors that run Windows.</p>
<p>This get-together appears as one more signal the personal computer industry reached a dead end and a new industry is taking the lead.  That is not a real smile at all.  Their eyes are nervously trying to convey a message: &#8220;let&#8217;s stop our fight and work together to save the business&#8221;.  I won&#8217;t be surprised if they announce a joint venture or a strategic partnership in a few months.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/06/02/sunset-of-the-personal-computer-industry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bash prompt with stock quote</title>
		<link>http://www.mostly-useless.com/blog/2007/05/26/bash-prompt-with-stock-quote/</link>
		<comments>http://www.mostly-useless.com/blog/2007/05/26/bash-prompt-with-stock-quote/#comments</comments>
		<pubDate>Sat, 26 May 2007 13:58:03 +0000</pubDate>
		<dc:creator>simone</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.mostly-useless.com/blog/2007/05/26/bash-prompt-with-stock-quote/</guid>
		<description><![CDATA[In case you are a stock trading geek like me, or if you just want to monitor the stock of some company while working on your linux server, this is a very useful configuration you can put in your .bash_profile. Thank you Yahoo! TICKER="QQQQ" PS1="\[\033[01;32m\]\`GET 'http://download.finance.yahoo.com/d/quotes.csv?s=$TICKER&#38;f=sl1d1'&#124;cut -f2 -d,\` \u@\h\[\033[01;34m\] \w \$\[\033[00m\] " export PS1 Happy [...]]]></description>
			<content:encoded><![CDATA[<p>In case you are a stock trading geek like me, or if you just want to monitor the stock of some company while working on your linux server, this is a very useful configuration you can put in your <code>.bash_profile<code>. </code></code>Thank you Yahoo!</p>
<blockquote><p><code>TICKER="QQQQ"<br />
PS1="\[\033[01;32m\]\`GET 'http://download.finance.yahoo.com/d/quotes.csv?s=$TICKER&amp;f=sl1d1'|cut -f2 -d,\` \u@\h\[\033[01;34m\] \w \$\[\033[00m\] "<br />
export PS1</code></p></blockquote>
<p>Happy monitoring!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mostly-useless.com/blog/2007/05/26/bash-prompt-with-stock-quote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

